Sabtu, 23 Mei 2015

Penggunaan ungkapan kalimah thayyibah "Subhanallah" sering tertukar dengan ungkapan "Masya Allah"

Selama ini  kita sebagai kaum Muslim sering tertukar dalam mengucapkan Subhanallah (Mahasuci Allah) dengan ungkapan Masya Allah (Itu terjadi atas kehendak Allah). Kalau kita takjub, kagum, atau mendengar hal baik dan melihat hal indah, biasanya kita mengatakan Subhanallah. Padahal, seharusnya kita mengucapkan Masya Allah yang bermakna “Hal itu terjadi atas kehendak Allah”, dan sebaliknya, jika kita melihat sesuatu yang buruk kita sering mengucapkan masyaAllah.
sesungguhnya yang benar itu, ketika kita melihat sesuatu yang baik maka ucapkanlah MasyaAllah, sedangkan ketika melihat sesuatu yang buruk maka ucapkanlah Subhanallah.
Hal ini didasarkan pada firman Allah di dalam Al-Qur'an sebagai berikut :
“(yaitu) orang-orang yang mengingat Allah sambil berdiri atau duduk atau dalam keadaan berbaring dan mereka memikirkan tentang penciptaan langit dan bumi (seraya berkata): “Ya Tuhan kami, tiadalah Engkau menciptakan ini dengan sia-sia. Maha Suci Engkau, maka peliharalah kami dari siksa neraka.”” (QS 3 Ali Imran:109)
“Maha Suci Allah, yang telah memperjalankan hamba-Nya pada suatu malam dari Al Masjidilharam ke Al Masjidilaksa yang telah Kami berkahi sekelilingnya agar Kami perlihatkan kepadanya sebagian dari tanda-tanda (kebesaran) Kami. Sesungguhnya Dia adalah Maha Mendengar lagi Maha Melihat.” (QS 17 Al Israa': 1)
“Mereka mengucapkan: “Maha Suci Tuhan kami, sesungguhnya kami adalah orang-orang yang dzalim”.” (QS 68 Al Qalam: 29)
“Dan mengapa kamu tidak berkata, di waktu mendengar berita bohong itu: “Sekali-kali tidaklah pantas bagi kita memperkatakan ini. Maha Suci Engkau (Ya Tuhan kami), ini adalah dusta yang besar.”” (QS 24 An Nuur:16)''
“Dan mengapa kamu tidak mengucapkan tatkala kamu memasuki kebunmu “MAA SYAA ALLAH, LAA QUWWATA ILLAA BILLAH” (Sungguh atas kehendak Allah semua ini terwujud, tiada kekuatan kecuali dengan pertolongan Allah). Sekiranya kamu anggap aku lebih sedikit darimu dalam hal harta dan keturunan,” (QS 18 Al Kahfi: 39)'
semoga dengan uraian di atas kita sebagai muslim tidak lagi salah dalam mengucapkan kalimah tersebut :)

Selasa, 08 Oktober 2013

Program OOP untuk Menghitung Nilai Mata Kuliah dan Konversinya

Semoga Bermanfaat :)

RANGKUMAN TENTANG OBJECT ORIENTED PROGRAMMING ( OOP ) DI C#

Apa bedanya class dengan object?. Jika anda ingin membangun rumah Class adalah blueprint / gambar (berisi spesifikasi lengkap dari rumah yang akan dibuat, ukuran, jumlah, dll). Sedangkan object adalah bentuk fisik / rumah yang dibangun berdasarkan blueprint / class yang sudah ada, biasa disebut instan class / object.





Dalam object oriented programming kita mulai mengenal adanya class & object. Class adalah sebuah bagian dari program , yang memiliki semua atribut atribut seperti halnya yang dimiliki oleh program biasa akan tetapi class tidak bersifat “Main” atau utama, sehingga sebuah class tidak akan bisa dirun dan dieksekusi tanpa menggunakan main class, atau class utama. Atribut merupakan  segala  sesuatu  yang melekat  pada Object.  Didalam  penerapan  didalam program, atribut adalah Variabel Pada pemrograman struktural kita menaruh kodingan kita pada main class sehingga kita langsung bisa mengkompile dan mengeksekusi program kita tersebut, dimana pada pemrograman berorientasi object sekarang ini kita akan mulai menggunakan class untuk menaruh program kita, sehingga program kita dapat digunakan kembali dan dipadukan dengan program program lain oleh orang lain. Ketika menggunakan class, kita tidak dapat menyamakannya seperti saat kita memprogram dengan basis pemrograman struktural. Class disini hanya bersifat sebagi cetakan atau “blueprint” dari program yang kita buat, untuk dapat mengeksekusi sebuah class kita harus melakukan “instansiasi” yaitu membuat sebuah object dari class yang telah kita buat. Untuk lebih mudahnya kita ibaratkan sebuah class adalah sebuah cetakan roti dan roti adalah sebuah object dimana proses pembuatan roti disebut sebagai instansiasi. Dalam hal ini sama halnya seperti cetakan roti, sebuah class juga bisa digunakan berkali kali untuk membuat sebuah object, dimana satu object dengan yang lainnya tidaklah memiliki keterkaitan meskipun berasal dari kelas yang sama. Dalam pembuatan suatu class kita bisa jadikan satu file dengan main class atau juga bisa kita pisahkan menjadi file sendiri. Dimana dalam menaruh program kita di class tersebut, kita tidak bisa sembarang menaruh dalam class tersebut, melainkan kita harus membuat fungsi fungsi, yang nantinya akan bisa kita eksekusi melalui instance object yang telah kita buat. Untuk lebih jelasnya perhatikan contoh dibawah ini :
  1. using System;  
  2.   
  3. namespace Test  
  4. {  
  5.  class Program  
  6.  {  
  7.      static void Main(string[] args)  
  8.      {  
  9.          Penjumlahan p = new Penjumlahan(5, 9);  
  10.          Penjumlahan q = new Penjumlahan(7, 9);  
  11.          Console.WriteLine(p.hitungPenjumlahan());  
  12.          Console.WriteLine(q.hitungPenjumlahan());  
  13.      }  
  14.  }  
  15.  class Penjumlahan  
  16.  {  
  17.      int a;  
  18.      int b;  
  19.      public Penjumlahan(int a, int b)  
  20.      {  
  21.          this.a = a;  
  22.          this.b = b;  
  23.      }  
  24.      public int hitungPenjumlahan()  
  25.      {  
  26.          return a + b;  
  27.      }  
  28.  }  
  29. }  
Dalam contoh tersebut Penjumlahan adalah suatu class yang memiliki constructor(fungsi yang pertama kali dieksekusi ketika class diinstansiasi) yang membutuhkan passing 2 variable integer. Dimana dalam class tersebut juga terdapat Method untuk menjumlahlkan dua bilangan yang telah dipassing pada constructor tersebut. class Penjumlahan adalah pendefinisian nama class public Penjumlahan(int a, int b) merupakan constructor dari class penjumlahan tersebut int hitungPenjumlahan() merupakan Method yang digunakan untuk menjumlahkan dua variabel integer yang telah dipassingkan pada constructor tadi Penjumlahan p = new Penjumlahan(5,9) proses instansiasi dari class penjumlahan yang membentuk object p, dimana object p mengacu pada struktur yang ada dalam class penjumlahan. Keyword new adalah keyword yang digunakan untuk menginstansiasi sebuah object dari sebuah class dimana berikutnya diikuti oleh construcor dari class tersebut. Operator this adalah operator yang digunakan untuk mengakses variabel yang paling global dari suatu class jika terdapat dua variabel yang memilki nama yang sama dam scope yang berbeda. Operator (.) dot adalah operator yang digunakan untuk mengakses atribut yang terdapat didalam class yang telah diinstansiasi tersebut. Didalam contoh tersebut akan menghasilkan dua output yang berbeda yaitu 14 & 16, meskipun berasal dari class yang sama akan tetapi dalam contoh tersebut terdapat dua object yang berbeda. Hal ini membuktikan bahwa tidak ada keterkaitan pada satu object dengan object lainnya meski berasal dari class yang sama Access Modifier Didalam contoh tersebut kita juga bisa melihat keyword keyword seperti public , private dan protected , keyword keyword semacam itu disebut dengan access modifier yaitu memberikan spesifikasi akses pada class maupun Method. public : Adalah ditujukan untuk atribut atribut yang dapat diakses oleh siapapun dan dimanapun senyampang masih dalam scopenya private : Adalah pembatasan akses hanya untuk di dalam class tersebut protected : Adalah ditujukan untuk atribut atribut yang hanya dapat diakses oleh child class dari class tersebut (child class akan dibahas lebih lanjut pada inheritance) 

Method merupakan suatu operasi berupa fungsi-fungsi yang dapat dikerjakan oleh suatu object. Method didefinisikan pada class akan tetapi dipanggi lmelalui 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.
Method atau fungsi dalam C# adalah suatu cara untuk memecah program menjadi beberapa bagian, sehingga ketika mengerjakan program tersebut bisa dilakukan pembagian tugas kepada beberapa orang. Ketika kita sudah mendevelop program dalam sekala besar maka kita perlu menggunakan yang namanya Method. Untuk lebih jelasnya perhatikan program dibawah ini :
  1. using System;  
  2. class Program  
  3. {  
  4.     static void Main(string[] args)  
  5.     {  
  6.         Print();  
  7.     }  
  8.     static void Print()  
  9.     {  
  10.         Console.WriteLine("Method Print Sukses Dipanggil!!!");  
  11.     }  
  12. }  
Keyword static disini diperlukan karena Method tersebut berada di main class yang juga bersifat static sehingga Method Method menyertainya juga harus bersifat static.
Keyword void merupakan salah satu indikasi bahwa Method ini tidak mereturn/mengembalikan nilai apapun, untuk Method yang mereturn/mengembalikan suatu nilai tertentu akan kita bahas nanti.
Method diatas adalah salah satu Method yang tidak menerima passing variable apapun dan juga tidak mereturn variable apapun, untuk contoh Method yang menerima passing variable tertentu perhatikan contoh dibawah ini :
  1. using System;  
  2.   
  3. class Program  
  4. {  
  5.     static void Main(string[] args)  
  6.     {  
  7.         Maksimum(5, 7);  
  8.     }  
  9.     static void Maksimum(int a, int b)  
  10.     {  
  11.   
  12.         if (a < b)  
  13.             Console.WriteLine("Nilai Maksimumnya Adalah : " + a);  
  14.         else if (b > a)  
  15.             Console.WriteLine("Nilai Maksimumnya Adalah : " + b);  
  16.         else  
  17.             Console.WriteLine("Dua Bilangan Tersebut Sama Besar");  
  18.     }  
  19. }  

Dari contoh diatas dapat kita ketahui bahwa Method Maksimum membutuhkan dua variable integer untuk dipassingkan, dan dari dua variable integer yang dipassingkan tersebut akan dicetak variable mana yang lebih besar. Selain itu ada juga Method yang memiliki nilai kembalian, atau return value, sebagai contoh perhatikan program untuk mencari nilai kuadrat bilangan integer dibawah ini dibawah ini :
  1. using System;  
  2.   
  3. class Program  
  4. {  
  5.     static void Main(string[] args)  
  6.     {  
  7.         Console.WriteLine(Kuadrat(5));  
  8.     }  
  9.     static int Kuadrat(int n)  
  10.     {  
  11.         return n * n;  
  12.     }  
  13. }  

Object
Object  adalah merupakan suatu bentuk dari class. Misalnya 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.

o   contoh :
public class Peliharaanmu{
public static void main(String[] args){
Hewan punyaku=new Hewan();
punyaku.hewanku();
}
}
Cara membuat Object
Untuk membuat object, kita menggunakan perintah new dengan sebuah nama class yang akan dibuat sebagai instance dari class tersebut.
            Contoh :
class Date
{
Date hari = new Date();
            }
hari adalah object reference dari class Date yang akan digunakan untuk mengakses class Date. Sedangkan operator new adalah operator yang akan menghasilkan hari sebagai reference ke instance dari class Date().

Contruktor
Contruktor merupakan suatu method yang akan memberikan nilai awal pada saat suatu objek dibuat. Pada saat program dijalankan, constructor akan langsung memberikan nilai awal pada saat perintah new, membuat suatu objek
Pada saat kita bekerja dengan constructor, 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.

Karasteristik OOP

Encapsulation
 Encapsulation adalah proses packing semua variable dalam suatu class menjadi private dan membuat Method mutator dan accessor pada class tersebut. Untuk lebih jelasnya perhatikan contoh dibawah ini :
  1. using System;  
  2. namespace Test  
  3. {  
  4.   class Program  
  5.   {  
  6.       static void Main(string[] args)  
  7.       {  
  8.           Penjumlahan p = new Penjumlahan(5, 9);  
  9.           Penjumlahan q = new Penjumlahan(7, 9);  
  10.           Console.WriteLine(p.hitungPenjumlahan());  
  11.           Console.WriteLine(q.hitungPenjumlahan());  
  12.       }  
  13.   }  
  14.   class Penjumlahan  
  15.   {  
  16.       private int a;  
  17.       private int b;  
  18.       public Penjumlahan(int a, int b)  
  19.       {  
  20.           this.a = a;  
  21.           this.b = b;  
  22.       }  
  23.       public int hitungPenjumlahan()  
  24.       {  
  25.           return getA() + getB();  
  26.       }  
  27.       public int getA()  
  28.       {  
  29.           return a;  
  30.       }  
  31.       public void setA(int a)  
  32.       {  
  33.           this.a = a;  
  34.       }  
  35.       public int getB()  
  36.       {  
  37.           return b;  
  38.       }  
  39.       public void setB(int b)  
  40.       {  
  41.           this.b = b;  
  42.       }  
  43.   }  
  44. }  
Dalam contoh sebelumnya variable a dan b tidak memiliki access modifier, sehingga dianggap public oleh C#, sekarang kita meletakan access modifier private pada variable tersebut sehingga varibel tersebut tidak dapat dengan bebas diakses dari luar class, sehingga untuk merubah variable tersebut kita memerlukan Method yang bernama mutator yaitu public int getA() & public int getB() yang mereturn nilai a dan b. Dan untuk dapat mendapatkan / mengetahui nilai dari a & b kita menggunakan Method yang bernama Accessor yaitu public void setA(int a) & public void setB(int b) dimana Method tersebut akan meng-assign nilai a dengan nilai a baru yang kita passingkan pada variable tersebut. Encapsulation ini berfungsi untuk membatasi akses pada variable varibel yang ada didalam class secara bebas dari luar class, sehingga kita dapat membuat program yang lebih efektif dan efisien.

Dalam pemrograman berorientasi object kita mengenal suatu istilah yaitu “Polimorfisme”, yaitu suatu teknik dalam programming yang lebih mengarahkan kita untuk memprogram secara general dari pada secara spesifik. Sebagai contoh seumpama kita memiliki 3 class berbeda yaitu: “Motor”, “Mobil” dan “Pesawat”. Dimana ketiga class tersebut adalah turunan dari class “Kendaraan”. Dalam kelas kedaraan terdapat suatu method yaitu “Move()”, akan tetapi apakah method “Move()” akan memberikan hasil yang sama pada tiga class tersebut. Dimana jika method “Move()” dipanggil pada class “Motor” akan menghasilkan perpindahan 30Km, jika pada class “Mobil” akan menghasilkan perpindahan 70Km dan jika dipanggil pada class “Pesawat” akan menghasilkan perpindahan 300Km. Hal inilah yang kita sebut sebagai Polimorfisme, yaitu penggunaan method yang sama, yang akan menghasilkan suatu hasil yang berbeda tergantung class yang menggunakan method tersebut. Berikut ini adalah contoh program yang menggunakan polimorfisme :
  1. //Class kendaraan.cs  
  2.   
  3. using System;  
  4. using System.Collections.Generic;  
  5. using System.Linq;  
  6. using System.Text;  
  7.   
  8. namespace Polymorphism  
  9. {  
  10. class Kendaraan  
  11. {  
  12.    public Kendaraan(int posisi)  
  13.    {  
  14.        this.posisi = posisi;  
  15.    }  
  16.    private int posisi;  
  17.    public int Posisi  
  18.    {  
  19.        get { return posisi; }  
  20.        set { posisi = value; }  
  21.    }  
  22.    public virtual void Move()  
  23.    {  
  24.        return;  
  25.    }  
  26. }  
  27. }  
  1. //Class motor.cs  
  2.   
  3. using System;  
  4. using System.Collections.Generic;  
  5. using System.Linq;  
  6. using System.Text;  
  7.   
  8. namespace Polymorphism  
  9. {  
  10.  class Motor : Kendaraan  
  11.  {  
  12.      public Motor(int posisi)  
  13.          : base(posisi)  
  14.      { }  
  15.      public override void Move()  
  16.      {  
  17.          base.Posisi = base.Posisi + 30;  
  18.      }  
  19.  }  
  20. }  
  1. //Class Mobil.cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5. using System.Text;  
  6.   
  7. namespace Polymorphism  
  8. {  
  9.   class Mobil : Kendaraan  
  10.   {  
  11.       public Mobil(int posisi)  
  12.           : base(posisi)  
  13.       { }  
  14.   
  15.       public override void Move()  
  16.       {  
  17.           base.Posisi = base.Posisi + 70;  
  18.       }  
  19.   }  
  20. }  
  1. //Class pesawat.cs  
  2. using System;  
  3. using System.Collections.Generic;  
  4. using System.Linq;  
  5. using System.Text;  
  6.   
  7. namespace Polymorphism  
  8. {  
  9.    class Pesawat : Kendaraan  
  10.    {  
  11.        public Pesawat(int posisi)  
  12.            : base(posisi)  
  13.        { }  
  14.   
  15.        public override void Move()  
  16.        {  
  17.            base.Posisi = base.Posisi + 300;  
  18.        }  
  19.    }  
  20. }  
  1. //Class program.cs  
  2.   
  3. using System;  
  4. using System.Collections.Generic;  
  5. using System.Linq;  
  6. using System.Text;  
  7.   
  8. namespace Polymorphism  
  9. {  
  10.     class Program  
  11.     {  
  12.         static void Main(string[] args)  
  13.         {  
  14.             int posisi = 10;  
  15.   
  16.             Kendaraan[] kendaraan = new Kendaraan[3];  
  17.             kendaraan[0] = new Motor(posisi);  
  18.             kendaraan[1] = new Mobil(posisi);  
  19.             kendaraan[2] = new Pesawat(posisi);  
  20.   
  21.             Console.WriteLine("Intansiasi 3 Object Turunan Class Kendaraan");  
  22.             Console.WriteLine(" -kendaraan[0] merupakan instantsiasi dari class " + "Motor dengan posisi awal " + posisi);  
  23.             Console.WriteLine(" -kendaraan[1] merupakan instantsiasi dari class " + "Mobil dengan posisi awal " + posisi);  
  24.             Console.WriteLine(" -kendaraan[2] merupakan instantsiasi dari class " + "Pesawat dengan posisi awal " + posisi);  
  25.   
  26.             for (int i = 0; i < kendaraan.Length; i++)  
  27.             {  
  28.                 Console.WriteLine("Object [" + i + "] memanggil method move");  
  29.                 Console.WriteLine("Posisi sebelum method move() dipanggil : " + kendaraan[i].Posisi);  
  30.                 kendaraan[i].Move();  
  31.                 Console.WriteLine("Posisi setelah method move() dipanggil : " + kendaraan[i].Posisi);  
  32.                 Console.WriteLine();  
  33.             }  
  34.         }  
  35.     }  
  36. }  

            Inherintence atau pewarisan 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.
Inheritance adalah salah satu teknik pemrograman berorientasi object yang digunakan agar suatu codingan dapat digunakan kembali oleh programmer lain / reuseable. Hal tersebut dilakukan dengan cara membuat turunan dari suatu class yang sudah ada, yaitu dengan membuat child class. Contohnya adalah jika ada programmer yang membuat suatu class yaitu shape yang memiliki atribut atribut luas, dan position kita tidak perlu membuat class baru ketika kita ingin membuat suatu class rectangle yang notabennya juga termasuk shape, jadi kita cuma perlu untuk menurunkan class shape tadi ke class rectangle yang akan kita buat.





Dari gambar diatas dapat kita ketahui hierarki dari penurunan class shape menjadi class class lainya yang notabennya masih termasuk dalam class shape. Selain itu dalam iheritance ini kita juga mulai mengenal yang dinamakan access modifier, yaitu keyword untuk merubah atribut dari suatu field dalam suatu class, dimana dalam C# access modifier tersebut ada 4, yaitu: (none) -> Akses ke field tersebut hanya terbatas pada suatu package Public -> Field tersebut dapat diakses dari semua tempat, asal masih dalam satu scope Private -> Akses ke field tersebut hanya terbatas pada class dimana field tersebut ada Protected -> Akses ke filed tersebut hanya terbatas pada class dimana field tersebut ada, beserta class turunan dari class field tersebut. Untuk contoh program dapat dilihat dibawah ini, yang merupakan inheritance class person menjadi class student. 
  1. //class Person.cs  
  2.   
  3. using System;  
  4. using System.Collections.Generic;  
  5. using System.Linq;  
  6. using System.Text;  
  7.   
  8. namespace Inheritance  
  9. {  
  10. class Person  
  11. {  
  12.     protected String name;  
  13.     protected int age;  
  14.   
  15.     public Person(String name, int age)  
  16.     {  
  17.         this.name = name;  
  18.         this.age = age;  
  19.     }  
  20.   
  21.     public String getName()  
  22.     {  
  23.         return this.name;  
  24.     }  
  25.     public int getAge()  
  26.     {  
  27.         return this.age;  
  28.     }  
  29. }  
  30. }  
  1. //class Student.cs  
  2.   
  3. using System;  
  4. using System.Collections.Generic;  
  5. using System.Linq;  
  6. using System.Text;  
  7.   
  8. namespace Inheritance  
  9. {  
  10.  class Student : Person  
  11.  {  
  12.      private String schoolName;  
  13.      public Student(String name, int age, String schoolName)  
  14.          : base(name, age)  
  15.      {  
  16.          this.schoolName = schoolName;  
  17.      }  
  18.      public String getSchoolName()  
  19.      {  
  20.          return this.schoolName;  
  21.      }  
  22.  }  
  23. }  
  1. //class Program.cs  
  2.   
  3. using System;  
  4. using System.Collections.Generic;  
  5. using System.Linq;  
  6. using System.Text;  
  7.   
  8. namespace Inheritance  
  9. {  
  10.   class Program  
  11.   {  
  12.       static void Main(string[] args)  
  13.       {  
  14.           Person person = new Person("Yohanda", 19);  
  15.           Student student = new Student("Mandala", 18, "SMAN 2");  
  16.   
  17.           Console.WriteLine("Informasi tentang object person : ");  
  18.           Console.WriteLine("Name : " + person.getName());  
  19.           Console.WriteLine("Age : " + person.getAge());  
  20.           Console.WriteLine();  
  21.   
  22.           Console.WriteLine("Informasi tentang object student : ");  
  23.           Console.WriteLine("Name : " + student.getName());  
  24.           Console.WriteLine("Age : " + student.getAge());  
  25.           Console.WriteLine("School Name : " + student.getSchoolName());  
  26.       }  
  27.   }  
  28. }  
Maka setelah kita compile dan kita eksekusi maka akan manghasilakan output seperti dibawah ini : 
  1. Informasi tentang object person :  
  2. Name : Yohanda  
  3. Age : 19  
  4.   
  5. Informasi tentang object student :  
  6. Name : Mandala  
  7. Age : 18  
  8. School Name : SMAN 2  
Untuk melakukan inheritance di C#, kita menggunakan keyword “:”. Dalam contoh program diatas class Studentlah yang mengiheritance class Person sehingga class Student yang melakakukan “:”, dimana dalam pendefinisian class nya menjadi class Student : Person. Dalam proses inheritance ini derived class bisa mengakses semua field dari super classnya, kecuali yang beratribut private. Akan tetapi base class tidak bisa mengakses field dari derived class apapun atributnya. Dalam program diatas sudah dicontohkan bahwa method getName dan getAge yang hanya terdapat pada class Person dapat dengan bebas diakses oleh Class turunannya yaitu class Student. Mengenai constructornya adalah sebagai berikut, dalam class person ia membutuhkan dua variable dalam constructornya, yaitu String name, dan int age, dan dalam class student ia membutuhkan 3 variable ketika membuat constructornya yaitu String name, int age, dan String schoolName, dimana dapat kita lihat bahwa 2 dari 3 variabel constructor dari class student sama dengan variable pada class person, maka kita tidak perlu membuatnya lagi, akan tetapi hanya perlu menggunakan keyword “base” untuk memanggil constructor dari base class.

Abstraction
Pesawat yang telah dicontohkan masuk dalam kelas kendaraan, kelas kendaraan merupakan contoh abstraction. Abstraction adalah proses yang mewakili versi yang disederhanakan dari objek dunia nyata dalam kelas dan objek. Hal ini berarti dalam pengembangan perangkat lunak seorang programmer akan menggunakan atau menciptakan sejumlah object dimana object tersebut akan ada dan berperilaku pada sistem.
Ketika membangun objects dalam aplikasi OOP, adalah penting untuk menggabungkan konsep abstraction ini. Jika kamu membangun aplikasi shipping, kamu harus membangun object produk dengan atribut seperti ukuran dan berat. Warna adalah contoh informasi yang tidak ada hubungannya dan harus dibuang. Tetapi ketika kamu membangun orderentry application, warna menjadi penting dan harus termasuk atribut object produk.
Setiap tipe Window pasti mempunyai bentuk tampilan yang berbeda misal combobox, listbox, button, dll. Berarti setiap class turunan dari Window harus mempunyai method DrawWindow() nya sendiri yang berbeda satu sama lain. Untuk memastikan bahwa setiap class turunan Control harus mempunyai method DrawWindow() maka anda harus mendefinisikan class tersebut sebagai abstract class dan memiliki method abstract yang belum diimplementasikan.
Abstract method tidak mempunyai implementation, abstract method hanya semacam kontrak yang harus dipenuhi. Semua class yang diturunkan dari class yang mempunyai abstract method harus mengimplementasikan method tersebut.
Class yang didefinisikan sebagai abstract class tidak dapat dibuat instan class / objek, class yang didefinisikan abstract hanya dapat digunakan dengan cara diturunkan.
   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:     }
Tapi untuk kasus diatas abstract masih mempunyai keterbatasan, jika anda ingin membuat class DropDownList yang hendak diturunkan dari class ListBox, maka anda tidak dapat memaksakan method DrawWindow() harus ada di class tersebut.
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. Pemrograman visual membawa OOP ke level berikutnya. Tujuan pemrograman visual adalah agar pemrograman menjadi lebih mudah bagi para programmer dan lebih mudah diakses oleh kalangan nonprogrammer dengan meminjam bahasa OOP, dan mempraktikanya secara grafis atau visual. Pemrograman visual memungkinkan pengguna untuk lebih focus pada pemecahan masalah ketimbang cara menangani bahasa pemrograman.
Overloading
Overloading adalah suatu cara membuat lebih dari constructor pada suatu class. Supaya pengaksesan constructor tersebut lancar, maka sebagai pembedanya adalah tipe parameter dan atau jumlah parameternya.
Pada C# anda 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:      }