Minggu, 02 Desember 2018

Dasar C# (Bagian 2)

contoh program C# yg terdiri dari 2 class
using System;

class classpertama
{

  static void Main(string[] args)
   {
    Console.WriteLine(" Apa kabar1? ")
    classkedua objek1 = new classkedua();
    objek1.tampil();
    Console.WriteLine("data class ke 2 ");
    Console.WriteLine(objek1.usia);

    Console.readline()  // supaya console tdk langsung menutup

   }
}

class  classkedua
{

  public int usia =10;

   public void tampil()      // akses modifier method ini diset public , supaya bisa diakses dari luar class ini.
    {
     Console.WriteLine("Apa kabar2? ");
    }

}

Jika sebuah program C# terdiri banyak class ,eksekusi program akan di mulai pada class yang memiliki methode Main().  Class yg memiliki method main disebut sebagai entry point.
Pada class kedua,  method tampil() akses modifiernya ‘public’  supaya method ini bisa dipangggil dari luar class kelaskedua.
Properties
Pada class kedua contoh diatas, akses modifier data adalah public :
public int usia = 10;
Keadaan ini tidak baik sebab data bisa dirubah dgn mudah dari luar class . misalnya program kita sudah besar dan kompleks bisa terjadi ada baris program yg merubah data tanpa sengaja. Untuk mencegah hal ini maka diatasi dgn cara data(instance variable usia) dibuat menjadi private dan membuat properties yg bertugas mengakses data secara aman.
Anggota class private tidak dapat diakses langsung dari luar class. Akses ke data private harus dikontrol secara hati-hati dengan method dlm class yg sama .
Untuk memungkinkan class lain untuk membaca nilai data private , class dapat mendefinisikan properties yang memungkinkan kode klien untuk mengakses data private ini dengan aman . Propertinya berisi method accessor yang menangani rincian memodifikasi dan menbaca data.
Definisi properti dapat berisi accessor get , accessor set atau keduanya .
– accessor get memungkinkan klien untuk membaca nilai data private ;
– accessor set memungkinkan klien untuk mengubah nilai tersebut.
Properties tampaknya akan melanggar gagasan data private . Namun, accessor set dapat memberikan kemampuan data validasi (seperti pemeriksaan range data yg valid ) untuk memastikan bahwa nilai yg di set benar . Sebuah accessor set juga dapat menerjemahkan antara format data yang digunakan dalam  antarmuka.
Demikian pula, accessor get tidak perlu mengekspos data dalam format aslinya, lebih tepatnya accessor get dapat mengedit data dan membatasi pandangan klien dari data tersebut.
berikut ini contoh property Umur memanipulasi instance variable usia
public int Umur
 {
 get
 {
 return usia;
 }

 set
 {
 usia = ( ( value >= 17 && value < 55 ) ? value : 0 );
 }

 } //
&nbsp;
contoh program lengkapnya:
using System;

class classpertama
{

  static void Main(string[] args)
   {
    Console.WriteLine(" Apa kabar1? ")
    classkedua objek1 = new classkedua();
    objek1.tampil();
    Console.WriteLine("data class ke 2 ");
    Console.WriteLine(objek.Umur);
  //menset nilai instance variable usia melalui property Umur
     objek1.Umur = 35;
   //tambahkan baris kode berikut supaya ,console tdk close:
    Console.ReadLine();
     }
}

class classkedua
{

  private int usia =10;

public int Umur
 {
 get
 {
 return usia;
 }

 set
 {
 usia = ( ( value >= 17 && value < 55 ) ? value : 0 );
 }

 } //
   public void tampil()      // akses modifier method ini diset public , supaya bisa diakses dari luar class ini.
    {
     Console.WriteLine("Apa kabar2? ");
    }

}

Namespace dan using
Namespace adalah kata kunci yang digunakan untuk mengorganisasikan class class. Pengorganisasian class class pada namespace mirip direktory direktory yg penyimpan file,
Namespace  nama_namespace
{
   Class  class1
    {
    }

   Class class2
    {
    }
}
class library yg sudah disediakan juga disimpan dlm namespace , untuk menggunakan class yg ada di class library kita harus menyertakan namespace nya dgn perintah “using” contoh:
using  System   :  menyertakan class class utama kedalam program .
Berikut ini  beberapa namespace  yg sudah  tersedia di framework class library (FCL)   :
-System.Data  : Berisi class  yang membentuk ADO NET, digunakan untuk database. akses dan manipulasi.
-System.Drawing : Berisi class yang digunakan untuk menggambar dan grafis.
-System.IO : Berisi class untuk input dan output data, seperti   pada akses  file.
– dan masih banyak lagi..
Aktualnya  framework class library pada C# adalah file file berektensi  *.dll
Namespace Bercabang/berjenjang
Seperti halnya direktory, namespace juga bisa bercabang/berjenjang contoh
namespaceA1
 {

  namespaceB
   {
     class1
      {
      }
    }

    namespaceC
   {
     class2
      {
      }
    }

  }

Untuk mengakses/menggunakan class1 dengan cara
using namespaceA.namespaceB
Parameter Method
Di dalam C# ada 3  jenis parameter yaitu   parameter nilai, parameter referensi  dan parameter output.  berikut ini contoh perbedaan parameter nilai   dan parameter referensi:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace testParameter
{
class Program
{
// var1 sbg parameter nilai, var2 sebagai parameter referensi
public static void jumlah(int var1, ref int var2)
{
var1 = var1 + 5;
     var2 = var2 + 5;
}
    static void Main(string[] args)
{
int var1 = 10;
int var2 = 10;
     jumlah(var1, ref var2);
     Console.WriteLine("Nilai var1 = {0}", var1);
    Console.WriteLine("Nilai var2 = {0}", var2);
   }
}
}

Jika program di atas dijalankan akan menghasilkan output sbb:
Nilai var1=10
Nilai var2=15
Kita melihat dari hasil tsb : setelah method  jumlah() dijalankan,    parameter nilai  tdk merubah variabel di luar method sedangkan parameter referensi merubah nilai  variable diluar method.
Contoh C# class calculator
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace kalkulator
{

  class class_pertama
     {

       static void Main(string[] args)
       {
           int hasiljumlah=0;
           int bil1 = 30;i
           int bil2 = 5;

//===membuat objek casiocalc ===================
               classkalkulator casiocalc = new classkalkulatorku("casio");
               hasiljumlah = casiocalc.jumlah(bil1 , bil2);
               casiocalc.tampilkanhasil(hasiljumlah);

//===membuat objek polytroncalc ================
         classkalkulator polytroncalc = new classkalkulatorku("polytron");
          hasiljumlah = polytroncalc.jumlah(bil1, bil2);
          polytroncalc.tampilkanhasil(hasiljumlah);

          System.Console.ReadLine(); // supaya console tdklangsung close
          }

         }

     class classkalkulatorku
      {

        public classkalkulator(string merk) // constructor
          {
          System.Console.WriteLine("=====object dibuat============");
          System.Console.WriteLine("buatan " + merk);
          }

       public int jumlah(int bil1, int bil2)
        {
        return bil1 + bil2;
        }

        public int kurang(int bil1, int bil2)
        {
        return bil1 - bil2;
        }

         public void tampilkanhasil(int hasil)
         {
        System.Console.WriteLine("hasil operasi = {0}", hasil);

         }
     }

}  // penutup  namespace

Method Overloading
Method overloading adalah method dgn nama yang sama tetapi mempunyai parameter yang berbeda. contoh
public int hitung luaspersegipanjang(int panjang, int lebar)
{
int luas = panjang * lebar;
return luas
}

public double hitung luaspersegipanjang(double panjang, double lebar)
{
double luas = panjang * lebar;
return luas
}
pada contoh diatas kedua method mempunyai nama yg sama yaitu luaspersegipanjang akan tetapi keduanya mempunyai parameter yg berbeda , method pertama parameternya berupa bilangan integer method kedua parameternya bilangan double. C# akan secara otomatis menyesuaikan method mana yg dipakai berdasar nilai parameter yg diberikaan.
Overload Constructor
Seperti method, constructor juga bisa di overload artinya setia objek dijalankan akan ada consructor yg dijalankan sesui jumlah, type atau urutan argument yg diberikan untuk parameter constructornya.
contoh
class serialkomunikasi
  {
     public serialkomunikasi( int baudrate)
      {
      }
     public serialkomunikasi(int baudrate, int data )
      {
      }
  }

class penggunaanSerial
{
   static void Main(string[] args)
{
   seserialkomunikasi Com1 = new serialkomunikasi(9600);
// atau
   serialkomunikasi Com1 = new serialkomunikasi(9600,8);
}
Komposisi
Komposisi adalah member class yg berupa Objek Referensi dari class Lain
Pada situasi tertentu membuat referensi obyek yang sudah ada lebih mudah daripada menulis ulang kode objek untuk class baru dalam proyek-proyek baru.
Penggunaan referensi ke obyek dari sebuah class yang sudah ada sebagai anggota objek baru ini disebut komposisi.
Salah satu bentuk reusable dlm perangkat lunak adalah komposisi, di mana member class memiliki referensi ke objek dari class lainnya.
contoh
class test
{

  private int x =100;          /
  private casio   kalkulator;  //  casio adalah objek class kalkulator

  public test ()   //constructor
  {
  }

}
Penggunaan referensi “this”
Setiap objek dapat mengakses referensi ke dirinya sendiri, yang disebut referensi this. Referensi this dapat merujuk secara implisit ke variable instance, properties dan method dari sebuah objek.
Keyword this umumnya digunakan di dalam methods, di mana this adalah referensi ke objek yang sedang digunakan oleh method tsb.
Contoh this
class contohsaja
{
private int  dataku =10;

public int tambahkan()
   {
   int dataku = 33;   // variable lokal
   this.dataku++;     // instance variable dataku + 1 = 10 +1

   }

}
this.dataku mengacu ke instace variable (private int dataku =10 , bukan lokal variable int dataku =33 ).
Inheritance  (pewarisan)
Kita bisa membuat class baru dengan cara menurunkan(inherit) class yg sudah ada. Jadi kita tidak perlu repot membuat class baru dari nol . Sebagai contoh kita ingin membuat class kalkulator Statistik yg mempunyai method hitung rata rata. Kita tak perlu membuat class kalkulator statistik baru dari awal ,kita bisa membuat class  turunan dari class  kalkulator yg sudah ada.
Member Class turunan dapat mengakses member class  public  dan protected dari class induk. Member class protected dari class induk dapat diakses oleh class turunan
Method dari class induk dapat ditulis kembali (redefined) di kelas turunannya dalam bentuk :
– Abstract method pada class abstract (class induk yg berisi abstrak method)
– Virtual method pada non class abstract.
method yg ditulis kembali di dahului oleh keyword “override”
Objek dari classInduk adalah bukan objek classTurunan, objek classTurunan adalah objek classInduk. misal class induk : mobil  class turunan : toyota,honda,hyundai  ,toyota (sudah pasti) adalah mobil tapi mobil adalah bukan toyota.
kalau sebuah class tdk tertulis class induk maka sebenarnya class tersebut adalah turunan dari class “object” . Class object adalah class induk dari semua class yg ada di C#, termasuk class yg kita buat sendiri.




Contoh aplikasinya : Pembuatan Kalukulator



Berikut ini contoh Diagram   Class induk kalkulatorSederhana dan 2 buah Class turunannya.


Tidak ada komentar:

Posting Komentar