TERIMA SERVICE PANGGIL SOFTWARE,HARDWARE, JARINGAN,BILLLING, flash Blackberry, root android. NO HP; 0853-8791-7487

Wednesday, April 23, 2014

DASAR C# PERTAMAKU



Daftar isi
  • Pendahuluan
  • Struktur dasar Program C#
  • Class
  • Static Class Member
  • Objek
  • Method
  • Constructor
  • Akses Modifier
  • Properties
  • Namespace dan using
  • Parameter Method
  • Method Overloading
  • Overload Constructor
  • Komposisi
  • Penggunaan referensi “this”
  • Inheritance (pewarisan)
  • Class Abstrak
  • Method abstrak
  • Method Virtual
  • Menyembunyikan method class induk dgn keyword “new”
  • interface
Pendahuluan
Untuk memahami pemrograman  C#   kita wajib mengerti konsep dasar pemrograman berorientasi  Object(PBO). Konsep PBO pada C# pada dasarnya sama  dengan yg diterapkan pada  C++ ,VB.Net, JAVA, dll.
Pengetahuan dasar pemrograman berorientasi  Object(PBO)  sudah saya tulis pada artilel disini atau anda bisa membacanya di artikel lain
Ada 3 jenis aplikasi C#  untuk  yang bisa kita buat
1. Aplikasi konsol
2. Aplikasi Visual
3. Aplikasi Class library.
4. Aplikasi WPF
Pelajaran dasar C#  biasanya menggunakan aplikasi konsol supaya kita fokus kepada kode programnya saja.
Struktur dasar Program C#
Secara hirarki Program C# terdiri dari Namespace-> class-> method dan data
1
2
3
4
5
6
7
8
namespace
{
   class
    {
      data
      method
    }
}
Langsung saja kita lihat contoh program C#  paling sederhana  :
1
2
3
4
5
6
7
8
class Clscontoh
{
static void Main(string[] args)     // method Main
  {
     Console.WriteLine(“   Apa kabar?   \n”);
  }

}
Penjelasan program 
Program C#  minimal harus terdiri dari 1 class dan 1 methode Main().
Contoh diatas terdiri dari 1  class   dgn nama Clscontoh  dan  ClsContoh mempunya 1   methode   Main().
Langkah-langkah  kompilasi / menjalankan program diatas :
1.  Ketik program diatas   pada  notepad  dan simpan  dengan nama ex1.cs  (nama terserah yg penting berextensi *.cs)
2.  Pada prompt dos ketik  c:>csc  ex1.cs
3.  Untuk menjalankanya ketik c:>ext1.exe
Program C#  terbentuk dari class  sedangkan program  C terdiri dari fungsi fungsi.
Untuk menyederhanakan program yg bersekala besar adalah dengan cara memecah program menjadi bagian/modul modul  yg lebih kecil,  Modul tersebut diantaranya adalah berbentuk class dan method.
Class
Semua code dalam C# harus berada dalam class  dan tiap class terdiri dari  data  dan method .  method dan data disebut juga sebagai  member Class .  Data dalam class dimanipulasi melalui method . data disebut juga member variable atau instance variable.  instance variable dideklarasikan di luar method.
Static Class Member
Static class member adalah member class yg diakses melalui class tdk melalui objek. jadi seolah oleh member static bersifat global di semua objek.  Jika  instance  variable  static  maka tiap objek mempunyai  instance variable yg sama.  Sebaliknya  pada  instance variable yg  bukan static maka tiap objek mempunyai salinan  (instance variable) masing masing.
Contoh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
namespace gamepesawat
{
    class peswatTempur
      {
       public string namaPilot;
       public static int TotalTertembak=0;

       pulic int tembakmusuh()
           {
              totalTertembak++;
              return TotalTertembak;
           }

        }

      Class  gamestart()
      {

           static void Main(string[] args)     // method Main
           {
             //membuat objek pesawatTempurF16 dan F22

              pesawatTempur F16 = new pesawatTempur();
              pesawatTempur F22 = new pesawatTempur();

              F16.namaPilot = "fatih";
              F16.tembak();

              F16.namaPilot= "dede";
              F16.tembak();
// mengakses statik variable totalTertembak dgn nama class pesawattempur bukan nama objek
           system.console.writeln("total tertembak={0}" pesawatTempur.TotalTertembak)
            }
      }
}
Dari contoh diatas kita bisa melihat bahwa static instance variable totalTertembak adalah hanya ada 1 dan sama ditiap objek. dan cara mengaksesnya melalui nama class. jika kita mencoba mengakses dgn nama objek spt F16.totalTertembak akan menyebabkan error saat dikompilasi.
Objek
setelah class dibuat maka yg digunakan dalam program adalah objek dari class. cara membuat objek dari class (instance) adalah sbb:
class objek = new class.
misal nya kita buat class kalkulator dan sebuah method jumlah(int a, int b) dlm class tsb dan objek yg kita buat adalah casio
kalkulator casio = new kalkulator
untuk penggunaan objek casio tsb dgn cara :
hasil = casio.jumlah(2,3)
contoh konkritnya ada di bagian bawah artikel.
Method
Method   mirip   seperti fungsi , yaitu  potongan kode yg melaksanakan tugas tertentu  ,  method mempunyai  format sbb:
akses modifier-return_type-nama_method (parameter)
{
badan method
}
contoh method :
public int jumlah(int bil1, int bil2)
{
return bil1 + bil2;
}
contoh method tanpa return value :
public void tampilkanhasil(int hasil)
{
System.Console.WriteLine(“hasil operasi = {0}”, hasil);
}
Ringkasan hal hal yang terkait dgn method:
- methode terdiri dari header dan body method
- method bisa memiliki return value bisa juga tidak (ditandai dgn void)
- method bisa memiliki 1 atau lebih parameter
- method bisa memiliki parameter objek dan array.
- variable yg dideklarasikan di dlm method bersifat lokal hanya bisa diakses di dlm method saja. jika didalam method ada nama variable yg sama dgn instance variable, maka yg berlaku adalah variable lokal.
- untuk mengakses instance variable yg mempunyai nama yg sama dgn lokal variable gunakan this.nama_instance_variable
- method dlm class yg sama dipanggil dgn menuliskan nama method dan menuliskan argument untuk tiap parameternya. type argument harus sesuai dgn type parameter pada deklarasi method.
- memanggil method pd class yg berbeda menggukana statemen objekreferensi.namaMethod
- method bisa digunakan berulang ulang didalam program
- diusahakan membuat method sesederhana mungkin  dgn satu tugas spesifik.
- diusahakan nama method sesui tugas yg dikerjakan oleh method.
- didalam method tdk boleh ada deklarasi method lain.
- didalam method bisa memanggil method lain
Constructor
Constructor adalah method yg dijalankan setiap kali objek dibuat.method ini mempunyai ciri ciri:
-nama sama dgn nama class.
-tidak mempunyai return type.
-modifiernya “public”
Salah satu kegunaan constructor adalah untuk inisialisasi kondisi awal objek. Jika kita tdk membuat constructor maka secara otomatis C# akan membuatkan secara default tapi constructor tsb tdk melaksanakan apapaun .
contoh constructor:
class termometer
}
public termometer()
{
}
}
Akses Modifier
Akses  modifier  mendefinisikan ruang lingkup pengaksesan  member class  .  Dari mana saja method dan instance variable bisa diakses , bisa diatur melalui  akses  modifier ini. Ada 4  akses modifier tapi untuk tahap awal kita akan membicarakan 2 lebih dahulu yaitu :
1. Public ,  member class  bisa diakses dari semua objek .
2. Private , member class hanya bisa diakses dari dlm class
untuk default akses modifier member class  adalah  private. jadi biasanya data dlm sebuah class tdk bisa diakses langsung dari luar class tapi melalui method. sedangkan method biasanya dibuat public  sehingga bisa dipangggil dari luar class, sedangkan method yg private digunakan hanya dlm class itu sendiri(dipanggil/digunakan oleh method dlm kelas yg sama) sehingga private method disebut “helper method” .
Untuk memanggil method di dlm class yg sama cukup dengan menulis nama method beserta argument tiap parameternya. Sedangkan untuk memanggil method dari class yg berbeda harus menggunakan format nama_referensi.nama_method.






contoh program C# yg terdiri dari 2 class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
1
2
3
4
5
6
7
8
9
10
11
12
13
public int Umur
 {
 get
 {
 return usia;
 }

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

 } //
&nbsp;
contoh program lengkapnya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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(<span class="skimlinks-unlinked">objek.Umur</span>);
  //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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.Collections.Generic;
using <span class="skimlinks-unlinked">System.Linq</span>;
using <span class="skimlinks-unlinked">System.Text</span>;
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using System;
using System.Collections.Generic;
using <span class="skimlinks-unlinked">System.Linq</span>;
using <span class="skimlinks-unlinked">System.Text</span>;

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
1
2
3
4
5
6
7
8
9
10
11
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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 Objek Referensi sebagai Instance Variabel 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.
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
1
2
3
4
5
6
7
8
9
10
11
12
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 adalah mobil tapi mobil adalah bukan toyota.





Contoh Penerapan class induk – class turunan pada aplikasi kalkulator
..





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

Class turunan mewarisi data dan method dari Class induk , melihat pada contoh diatas  kedua Class turunan tdk perlu lagi membuat method jumlah() dan method kurang()  karena  Class turunan mewarisi keduanya.



Cara Class induk mewarisi Class turunannya:
NamaClass_Turunan : namaClass_Induk
Class Abstrak
Class Abstrak adalah class yg digunakan sebagai Class induk dan methodnya tidak ada implemantasinya hanya berupa deklarasi saja . Implementasi dari class abstrak dilakukan pada class turunannya. Class turunan wajib meng-implementasi semua method abstrak dari class induk. Class abstrak di dahului keyword “abstract”
contoh class abstrak :
1
2
3
4
5
6
public abstract class  mobil   // mobil adalah class abstrak
{
      public abstract starterMesin(); // method abstract krn tdk ada implentasi
      public abstract tekanPedalGas();
      public abstract tekanPedalRem();
}
Method abstrak
Method abstrak hanya ada di dalam class abstrak, penulisan method ini  di dahului dgn keyword “abstract”. Method abstrak tidak mempunyai implementasi hanya deklarasi saja.
contoh  Class dan method abstrak :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
namespace contohClassAbstak
{

  public abstract class kalkulatorInduk
   {
    public abstract int jumlah(int x, int y);
     publik abstract int kurang(int x, int y);
    }

   public class statistikKalkulator : kalkulatorInduk // kalkulatorInduk sbg class induk
   {
     public override int jumlah(int x, int y)
     {
     return x + y;
     }

     public override int jumlah(int x, int y)
    {
    return x - y;
    }
  } // penutup class

} //penutupn namespace

Method Virtual
berbeda dgn method abstract, method virtual adalah method dari class induk yg ditulis kembali dari pada class turunan dan pada class induk method tsb juga punya implementasinya .
Contoh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class classInduk
{
     public virtual methodA
     {
        //code program
     }

}

class classAnak : classInduk
{
      public override methodA
      {
        //code program
      }
}







Menyembunyikan method  class induk dgn keyword  “new”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;

class induk
{
    public void methodInduk()
    {
    Console.WriteLine(" method induk");
    }
}

class anak : induk
{
   public new void methodInduk() // method ini menyembunyikan methodinduk dari base class.
    {
    console.WriteLine("method anak");
    }
}

class Program
{
    static void Main()
    {
    induk ref1 = new induk();
    induk ref2 = new anak();
    anak ref3 = new anak();

    ref1.methodInduk();
    ref2.methodInduk();
    ref3.MethodInduk();
    }
}
Output
method induk
method induk
method anak


istilah istilah yang anda harus ketahui:
namespace.
using.
framework class library (FCL).
class.
objek.
method.
inheritance.
polymorphisme
instance.
instance variable.
modifier (public,private,internal,protected).
constructor.
parameter / argument.
referensi parameter, value parameter.
return value.
class abstrak
method abstrak
overloading method.
overiding method
virtual method
sealed method
interface

0 comments:

Contact Us

Name

Email *

Message *