Selasa, 08 Oktober 2013

Rangkuman OOP pada C#



1.      Pengertian Class, Atribut, dan Method pada C#


v  Class

Class merupakan penggambaran dari sebuah object atau benda,sifat objek, dan juga apa yang bisa dilakukan oleh objek tersebut. Sebagai contoh adalah pengambaran yang real dalam kehidupan kita adalah tentang dunia transportasi. Tentunya kita semua  mengetahui bahwa sangatlah banyak jenis alat transportasi yang ada seperti motor, mobil,pesawat terbang,kapal laut, dan lain sebagainya.Kemudian marilah kita anggap berbagai alat transportasi tersebut sebagai  suatu class. Maka motor tentunya mempunyai no polisi,tahun pembuatan,merk dll, demikian juga dengan alat transportasi yang lainnya, oleh karenanya hal ini bisa disebut sebagai properties. Selanjutnya motor itu sendiri bisa berjalan maju, berjalan mundur,belok kiri, belok kanan yang mana kegiatan ini disebut method.
Contoh:
public class ApaMotormu {
public static void main(String[] args){
Motor punyaku=new Motor();
punyaku.motorku();
}
}

v  Atribut

Adalah suatu pengenal yang digunakan untuk menyimpan suatu nilai. Nilai dalam variabel dapat berubah2 selama proses pada program masih berlangsung. Sebelum variabel digunakan, harus dideklarasikan terlebih dahulu, dengan format penulisan : ;

Contoh:
String kata;
Int angka;



v  Method

Method adalah merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggil melalui object.
Contoh : pada object mangga : terdapat method ambilRasa , kupasKulit dll.
Metode menentukan perilaku objek, yakni apa yang terjadi ketika objek itu dibuat serta berbagai operasi yang dapat dilakukan objek sepanjang hidupnya.

2.      Object

Object adalah sebuah structure yang menggabungkan data dan prosedur untuk bekerja bersama-sama. Object  merupakan suatu bentuk dari class Object dari class Hewan adalah Burung, Kambing, Ayam, Kuda.. Mereka adalah contoh dari class Hewan. Semua dari mereka adalah Hewan  yang mempunyai nama, kaki, Jenis makanan dst. Dan bisa berlari, bersuara, berkembang biak dll.

Contoh:
public class Peliharaanmu{
public static void main(String[] args){
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}


3.      Cara membuat object

Nama class nama variabel = new nama class ();
Contoh : membuat objek class Lingkaran
Lingkaran.l1 = new lingkaran ();



4.      Konstruktor

Kontruktor merupakan suatu method yang akan memberikan nilai awal pada saat suatu objek dibuat. Pada saat program dijalankan, konstructor akan langsung memberikan nilai awal pada saat perintah new, membuat suatu objek. Pada saat kita bekerja dengan konstruktor, hal mendasar yang perlu diperhatikan, yaitu:
1.    Nama Constructor sama dengan nama Class.
2.    Tidak ada return type yang diberikan kedalam Constructor Signature.
3.    Tidak ada return stetement, didalam tubuh constructor. 


5.      Private, Protected, Public karakteristik OOP dan contohnya
v  Inheritance
Inherintence atau pewarisan adalah merupakan konsep dimana suatu object memiliki sejumlah perilaku yang dimiliki oleh object lain dalam suatu hirarki tertentu.Hal ini memungkinkan satu kelas (sub-class) harus didasarkan atas yang lain (kelas super) dan mewarisi semua fungsi secara otomatis. Kode tambahan kemudian dapat ditambahkan untuk membuat versi yang lebih khusus dari kelas. Dalam contoh kendaraan, sub-kelas untuk mobil atau motor dapat dibuat. Masing-masing masih akan memiliki semua perilaku kendaraan tetapi dapat menambahkan metode khusus dan properti.



Penggunaan inheritance dapat dilihat pada program dibawah ini

   1: public class Window {
   2:         //variabel dideklarasikan private sehingga tidak bisa diakses oleh kelas
   3:         //turunannya
   4:         private int top;
   5:         private int left;
   6: 
   7:         //objek konstruktor
   8:         public Window(int top, int left) {
   9:             this.top = top;
  10:             this.left = left;
  11:         }
  12: 
  13:         public void DrawWindow() {
  14:             Console.WriteLine("Draw window pada ({0},{1})",
  15:                 top, left);
  16:         }
  17: }
  18: 
  19:     public class ListBox : Window {
  20:         //member variable baru pada class anak
  21:         private string listBoxContent;
  22:         public ListBox(int top, int left, string contents):base(top,left) {
  23:             this.listBoxContent = contents;
  24:         }
  25: 
  26:         //versi baru karena override dari base classnya
  27:         public new void DrawWindow() {
  28:             base.DrawWindow();
  29:             Console.WriteLine("Menuliskan string pada listbox: {0}",
  30:             listBoxContent);
  31:         }
  32:     }
  33: 
  34:     class LatInheritance {
  35:         public static void Main(string[] args) {
  36:             Window objWindow = new Window(10, 15);
  37:             objWindow.DrawWindow();
  38: 
  39:             ListBox objList = new ListBox(15, 20, "Hello ListBox");
  40:             objList.DrawWindow();
  41:         }
  42:     }   




v  Polymorphism
Polymorphism adalah konsep dimana beberapa object dapat memiliki metode yang sama dengan aksi yang berbeda. Hal ini mengakibatkan adanya kemampuan untuk sebuah objek untuk mengubah perilakunya sesuai dengan bagaimana itu digunakan. Dimana kelas obyek mewarisi dari kelas super atau mengimplementasikan satu atau lebih interface , dapat disebut dengan kelas atau interface nama-nama. Jadi jika kita memiliki metode yang mengharapkan sebuah objek dari tipe 'kendaraan' untuk diteruskan sebagai parameter, kita dapat melewati setiap kendaraan, mobil atau motor objek untuk metode yang meskipun tipe data mungkin secara teknis berbeda.
Dalam Polymorphism suatu object bisa bertindak lain terhadap message/method yang sama. Misalkan kita punya satu class hewan dan diturunkan menjadi dua class hewan berkaki dua dan hewan berkaki empat. Ketika hewan berkaki dua melakukan method makan maka yang dilakukan adalah makan dengan paruhnya, dan ketika hewan berkaki empat juga makan maka dia akan menggunakan mulutnya. Keduanya melakukan aksi yang sama yaitu makan akan tetapi perlakuannya lain.

Contoh :

class Binatang
{
public void info()
{
System.out.println(” Info tentang Hewan : “);
}
}
class Herbivora extends Binatang
{
public void info()
{
System.out.println (“Info pada herbivora: Memakan makanan berupa tumbuh – tumbuhan”);
}
}
class Kelinci extends Herbivora
{
public void info()
{
System.out.println(“Info pada Kelinci: Memakan makanan berupa wortel”);
}
}
public class Polimorfisme
{
public static void main(String[] args)
{
Herbivora herbivora;
Kelinci kelinciku;
Binatang hewan;
herbivora=new Herbivora();
kelinciku=new Kelinci();
hewan=herbivora;
hewan.info();
hewan=kelinciku;
hewan.info();
}
}



v  Encapsulation
Encapsuation adalah penyatuan antara proses-proses yang terjadi dan sejumlah data yang dikelola kedalam suatu bentuk kelompok tertentu. Pengelompokan tersebut adalah dengan dibentuknya suatu object secara abstrak (abstraction). Akibatnya, obyek dapat bekerja sama dalam banyak hal dalam sistem. Dalam beberapa situasi, kelas dan objek dapat erat bersama-sama untuk menyediakan fungsionalitas yang lebih kompleks. Dalam contoh mobil, roda, panel, mesin, gearbox, dll dapat dianggap sebagai kelas individu. Untuk membuat mobil sekelasnya, perlu menghubungkan semua benda-benda bersama, mungkin dapat menambahkan fungsionalitas lebih lanjut. 
Encapsulation mengemas suatu objek sehingga pada saat kita akan memakai objek tersebut kita tidak perlu lagi tahu tentang detail bagaimana suatu action itu terjadi. Contoh dalam hal ini, misal siswa (suatu object) sedang menulis (method). Maka detail dari tentang cara siswa itu menulis (bagaimana otot tangan itu  bekerja untuk menulis, bagaimana sistem saraf pusat  memerintahkan untuk menulis) kita tidak perlu mengerti. Kita hanya melihat si siswa sedang menulis.

Contoh :
class Siswa
{
String nama;
String nim;
void isiData ( String namaku,String nimku )
{
nama = namaku;
nim = nimku;
}
String ambilNama()
{
return nama;
}
String ambilNim()
{
return nim;
}
}
public class Mahasiswa
{
public static void main ( String [] args)
{
Siswa mahasiswa_itn = new Siswa(); //membuat variable instant
mahasiswa_itn.isiData(“Dina Damayanti”,”0412585″);
System.out.println( “Nama : ” + mahasiswa_itn.ambilNama());
System.out.println( “Nim : ” + mahasiswa_itn.ambilNim());
}
}



v  Abstraction
Kemampuan sebuah program untuk melewati aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari “pelaku” abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.

Contoh:

1: public abstract class Control {
   2:         private int top;
   3:         private int left;
   4:
   5:         protected int Top {
   6:             get { return this.top;}
   7:             set { this.top = value;}
   8:         }
   9:         protected int Left {
  10:             get {return this.left;}
  11:             set {this.left = value;}
  12:         }
  13:         public Control(int top, int left) {
  14:             Top = top;
  15:             Left = left;
  16:         }
  17:         //abstract method harus diimplementasikan
  18:         public abstract void DrawWindow();
  19:     }
  20:
  21:     public class ListBox : Control {
  22:         private string listBoxContent;
  23:         public ListBox(int top, int left, string contents)
  24:             : base(top, left) {
  25:             this.listBoxContent = contents;
  26:         }
  27:
  28:         public override void DrawWindow() {
  29:             Console.WriteLine(“Position :({0},{1})”, Top, Left);
  30:             Console.WriteLine(“Menuliskan string pada listbox: {0}”,
  31:               listBoxContent);
  32:         }
  33:
  34:     }
  35:
  36:     public class Button : Control {
  37:         public Button(int top, int left) : base(top, left) { }
  38:         public override void DrawWindow() {
  39:             Console.WriteLine(“Menggambar button pada ({0},{1})”, Top, Left);
  40:         }
  41:     }
  42:     class LatAbstract {
  43:         static void Main(string[] args) {
  44:             Control[] winArray = new Control[3];
  45:             winArray[0] = new ListBox(5, 10, “Pada ListBox”);
  46:             winArray[1] = new Button(5, 6);
  47:             for (int i = 0; i < 2; i++) {
  48:                 winArray.DrawWindow();
  49:             }
  50:         }
  51:     }






v  Aggregation

Aggregation adalah kondisi ketika object berisi gabungan dari object-object yang berbeda dan bekerja bersama. Contoh mesin pemotong rumput terdiri dari object roda, objects mesin, object pisau dan lain-lain.Object mesinpun merupakan gabungan dari berbagai object. Kemampuan untuk menggunakan aggregation dalam OOP adalah satu feature yang powerful yang memungkinkan model menjadi akurat.

6.      Overloading
Overloading adalah suatu cara membuat lebih dari konstructor pada suatu class. Supaya pengaksesan konstructor tersebut lancar, maka sebagai pembedanya adalah tipe parameter dan atau jumlah parameternya.
Pada C# dapat mendeklarasikan method atau konstruktor dengan nama yang sama pada sebuah class, tetapi parameter method tersebut harus berbeda bisa jumlah atau tipe datanya. Pada contoh dibawah ini akan ditunjukan bagaimana cara menggunakan overloading konstruktor.

   1: public class Time
   2: {
   3:          // private member variables
   4:          private int Year;
   5:          private int Month;
   6:          private int Date;
   7:          private int Hour;
   8:          private int Minute;
   9:          private int Second;
  10:   
  11:          // public accessor methods
  12:          public void DisplayCurrentTime()
  13:          {
  14:              System.Console.WriteLine("{0}/{1}/{2} {3}:{4}:{5}",
  15:              Month, Date, Year, Hour, Minute, Second);
  16:          }
  17:          // constructors
  18:          public Time(System.DateTime dt)
  19:          {
  20:              Year = dt.Year;
  21:              Month = dt.Month;
  22:              Date = dt.Day;
  23:              Hour = dt.Hour;
  24:              Minute = dt.Minute;
  25:              Second = dt.Second;
  26:          }
  27:          public Time(string strTime) // overloading konstruktor
  28:          {
  29:              Console.WriteLine(strTime);
  30:          }
  31:  
  32:          public Time(int Year, int Month, int Date,
  33:          int Hour, int Minute, int Second) // overloading konstruktor
  34:          {
  35:               this.Year = Year;
  36:               this.Month = Month;
  37:               this.Date = Date;
  38:               this.Hour = Hour;
  39:               this.Minute = Minute;
  40:               this.Second = Second;
  41:          }
  42:      }
  43:  
  44:      class Tester
  45:      {
  46:          public void Run()
  47:          {
  48:              System.DateTime currentTime = System.DateTime.Now;
  49:              Time time1 = new Time(currentTime);
  50:              time1.DisplayCurrentTime();
  51:              Time time2 = new Time(2000, 11, 18, 11, 03, 30);
  52:              time2.DisplayCurrentTime();
  53:          }
  54:  
  55:          static void Main()
  56:          {
  57:              Tester t = new Tester();
  58:              t.Run();
  59:          }
  60:      }


7.      Membuat Program OOP untuk menghitung nilai Mata Kuliah dan Konvesinya
class Program
    {
        static void Main(string[] args)
        {
            double ntugas, nuts, npart, nuas, nakhir;

            Console.WriteLine("menghitung Nilai Mata Kuliah mahaiswa");
            Console.WriteLine("--------------------------------------------");
            Console.Write("nilai patisipasi  = ");
            npart = double.Parse(Console.ReadLine());

            Console.Write("nilai UTS         = ");
            nuts = double.Parse(Console.ReadLine());

            Console.Write("nilai Tugas       = ");
            ntugas = double.Parse(Console.ReadLine());

            Console.Write("nilai UAS         = ");
            nuas = double.Parse(Console.ReadLine());

            Console.WriteLine("------------------------------------");
            nakhir = hitungNilaiAkhir(npart, ntugas, nuts, nuas);
            Console.Write("Nilai akhir  = " + nakhir);
            Console.WriteLine();
            Console.Write("Nilai Huruf  = " + konversiHuruf(nakhir));
            Console.ReadKey();

        }
        public static double hitungNilaiAkhir(double np, double nt, double nuts, double nuas)
        {
            return 0.3 * np + 0.2 * nt + 0.3 * nuas + 0.2 * nuts;
        }
        public static string konversiHuruf(double na)
        {
            string nh = "";
            if (na > 85 && na <= 100)
            {
                nh = "A";

            }
            if (na > 80 && na <= 85)
            {
                nh = "A-";
            }
            if (na > 75 && na <= 80)
            {
                nh = "B+";
            }
            if (na > 70 && na <= 75)
            {
                nh = "B";
            }
            if (na > 65 && na <= 70)
            {
                nh = "B-";
            }
            if (na > 60 && na <= 65)
            {
                nh = "C+";
            }
            if (na > 55 && na <= 60)
            {
                nh = "C";
            }
            if (na > 50 && na <= 55)
            {
                nh = "C-";
            }
            if (na > 40 && na <= 50)
            {
                nh = "D";
            }
            if (na <= 40)
            {
                nh = "E";
            }
            return nh;

        }
    }
}

Outputnya: