Rabu, 09 Oktober 2013

OOP (Object Oriented Programming)

1.       Class, atribut, method
  • Class - kumpulan dari karakteristik abstrak suatu object, termasuk atribut / property dan kelakuan (method / fungsi) object tersebut. Karakteristik sebuah class seharusnya masuk akal pada konteksnya. Selain itu kode pada sebuah class sebaiknya bersifat mandiri. Properties dan methods yang dideklarasikan pada sebuah class disebut members.
Contoh :
using System.Text;

namespace jumlahnilai
{
    class Penjumlahan
    {
        private
        int nilai1;
        int nilai2;
        int hasil;
        public void input(int x, int y)
        {
            nilai1 = x;
            nilai2 = y;
            hasil = nilai1 + nilai2;
        }
        public void hasilpenjumlhan()
        {
            Console.WriteLine(hasil);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            int x;
            int y;
            Penjumlahan a = new Penjumlahan();
            Console.Write("Masukkan Nilai 1 = ");
            x = Convert.ToInt32(Console.ReadLine());
            Console.Write("Masukkan Nilai 2 = ");
            y = Convert.ToInt32(Console.ReadLine());
            a.input(x, y);
            Console.WriteLine();
            Console.Write("Hasil Penjumlahan adalah ");
            a.hasilpenjumlhan();
            Console.WriteLine();

            Console.ReadKey();
        }
    }
}
·         Attribute : nilai data yang terdapat pada suatu object yang berasal dari class. Attribute merepresentasikan karakteristik dari suatu object. contoh : object ‘sepeda’ terdapat attribute : pedal,stang,rem,ban ,roda,jok,rante.

·         Method  atau function atau fungsi merupakan representasi dari perilaku object. Istilah method lebih umum dikenal pada bahasa pemrograman Java, sedangkan pada c# lebih dikenal dengan istilah fungsi. Baik Method maupun Fungsi mempunyai maksud yang sama. Jika mengambil contoh object di dunia nyata, misalnya studi kasus pada motor. Motor mempunyai beberapa fungsi yang dapat dijalankan seperti berjalan, mengerem, dan berbunyi (klakson). Perilaku ini dapat direpresentasikan dalam fungsi misalnya run(), brake(), dan horn().
Pada umumnya setiap fungsi mempunyai jenis kembalian atau return type dari hasil eksekusi fungsinya. Sebagai contoh diambil fungsi run() akan menghasilkan motor dalam kondisi berjalan, fungsi break() menghasilkan motor akan berhenti dan fungsi horn() menghasilkan bunyi klakson. Selain itu, sifat fungsi ada yang dapat diakses atau dipicu dari luar atau hanya bisa dipicu oleh object itu sendiri.
Contoh :
using System.Text;

namespace tugas2
{
    class Program
    {
        class pembagian
        {
            private double a;
            public double b;
            public void nilai1()
            {
                Console.Write("Masukan Nilai 1 : ");
                a = Convert.ToInt32(Console.ReadLine());
                Console.Write("Masukan Nilai 2 : ");
                b = Convert.ToInt32(Console.ReadLine());
            }
            private void tes()
            {
                Console.WriteLine("di coba");
            }
            public void hasil1(int c)
            {
                Console.Write("Hasilnya = {0} ", a / b);
            }
            static void Main(string[] args)
            {
                pembagian n = new pembagian();
                n.nilai1();
                n.hasil1(0);

                Console.ReadKey();
            }
        }
    }
}

2.       Object
Object adalah sebuah structure yang menggabungkan data dannprosedur untuk bekerja bersama-sama. Objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek.
Dalam term OOP, object adalah sebuah structure yang menggabungkan data dan prosedur untuk bekerja bersama-sama.
3.       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()

4.       Konstruktor
Konstruktor adalah method yang namanya sama dengan nama class-nya. Konstruktor digunakan untuk inisialisasi variabel ketika membuat instan class / objek baru. Sebenarnya setiap kali anda membuat instant class / objek baru maka konstruktor dijalankan. Jika anda tidak mendefinisikan konstruktor secara eksplisit maka tetap dianggap membuat konstruktor kosong.
Konstruktor juga dapat di-overload (anda dapat membuat konstruktor lebih dari satu asal parameternya jumlahnya beda atau tipe datanya beda). Variabel dalam class harus diinisialisasi.
5.        Private, protected, public
·       Public    : anggota pribadi dari kelas dasar hanya dapat diakses oleh anggota yang kelas dasar.
·  Private  : anggota publik dari kelas dasar dapat diakses oleh anggota yang kelas dasar,anggota kelas turunan serta anggota yang berada di luar kelas dasar dan kelas turunan.
·   Protected : anggota dilindungi dari kelas dasar dapat diakses oleh anggota kelas dasarserta anggota kelas turunan.

Perbedaan public, private, protected, dan tanpa penentu akses pada variabel 
·       public : variabel dapat di akses pada semua kelas yang menggunakan kelas yang berisi variabel tersebut.
·       private : Hanya dapat diakses oleh metode2 dalam kelas itu sendiri.
·       protected : Variabel instan dapat diakses pada kelas sendiri dan subkelasnya.
·       Tanpa Penentu akses : variabel dapat diakses oleh kelas yang berada dalam package yang sama.

Perbedaan public, private, protected, dan tanpa penentu akses pada metode 
·       private : Hanya dapat diakses pada metode2 dalam kelas yang sama.
·       protected : Metode dapat diakses pada kelas sendiri dan pada subkelasnya.
·       Tanpa Penentu akses : Metode hanya dapat diakses oleh metode dalam kelas itu sendiri ataupun metode pada kelas lain yang terletak pada package yang sama.

6.       Karakteristik OOP
Inheritance - penurunan atribut dan kelakuan sebuah class (yang diberi istilah khusus parent class) kepada class lain (child class) yang dapat memiliki atribut dan kelakuan uniknya sendiri. Segala karakteristik yang diturunkan dapat diubah nilainya pada child class. Multiple inheritance adalah inheritance pada satu child class yang penurunannya berasal dari lebih dari satu parent class.

Contoh:
   1:publicclass Window {
   2://variabel dideklarasikan private sehingga tidak bisa diakses oleh kelas
   3://turunannya
   4:privateint top;
   5:privateint left;
   6: 
   7://objek konstruktor
   8:public Window(int top, int left) {
   9:this.top = top;
  10:this.left = left;
  11:         }
  12: 
  13:publicvoid DrawWindow() {
  14:             Console.WriteLine("Draw window pada ({0},{1})",
  15:                 top, left);
  16:         }
  17: }
  18: 
  19:publicclass ListBox : Window {
  20://member variable baru pada class anak
  21:privatestring 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:publicnewvoid DrawWindow() {
  28:base.DrawWindow();
  29:             Console.WriteLine("Menuliskan string pada listbox: {0}",
  30:             listBoxContent);
  31:         }
  32:     }
  33: 
  34:class LatInheritance {
  35:publicstaticvoid 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:     }

Abstraction - simplifikasi realita yang kompleks dengan pemodelan classes yang sesuai dengan permasalahan, dan bekerja pada level inheritance yang paling sesuai dengan aspek permasalahan.

Contoh :
   1:publicabstractclass Control {
   2:privateint top;
   3:privateint left;
   4: 
   5:protectedint Top {
   6:             get { returnthis.top;}
   7:             set { this.top = value;}
   8:         }
   9:protectedint Left {
  10:             get {returnthis.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:publicabstractvoid DrawWindow();
  19:     }
  20: 
  21:publicclass ListBox : Control {
  22:privatestring listBoxContent;
  23:public ListBox(int top, int left, string contents)
  24:             : base(top, left) {
  25:this.listBoxContent = contents;
  26:         }
  27: 
  28:publicoverridevoid DrawWindow() {
  29:             Console.WriteLine("Position :({0},{1})", Top, Left);
  30:             Console.WriteLine("Menuliskan string pada listbox: {0}",
  31:               listBoxContent);
  32:         }
  33: 
  34:     }
  35: 
  36:publicclass Button : Control {
  37:public Button(int top, int left) : base(top, left) { }
  38:publicoverridevoid DrawWindow() {
  39:             Console.WriteLine("Menggambar button pada ({0},{1})", Top, Left);
  40:         }
  41:     }
  42:class LatAbstract {
  43:staticvoid 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:     }              

Encapsulation - penyembunyian detil fungsional sebuah class dari object yang berinteraksi dengannya.

Contoh :
namespace BW_OOP2

{

class Program

{

public static void Main(string[] args)

{

Barang brg = new Barang();

Console.Write("Masukkan Nama barang = ");

brg.Nama_barang = Console.ReadLine();

brg.DataBarang();

Console.WriteLine();

Console.Write("Press any key to continue . . . ");

Console.ReadKey(true);

}

}

class Barang

{

public Barang()

{

Console.WriteLine("\t\t\t\t Data Barang\n\n");

}

private string nama_barang; //---> modifier private & information hidding

private string kode_barang; //---> modifier private

protected int harga; //---> modifier protected

int stok;  //---> modifier default

public string Nama_barang // ---> properties getset

{

get { return nama_barang; }

set { nama_barang = value; }

}

public void DataBarang() //---> method dengan modifier public

{

if(Nama_barang == "Acer 4741G")

{

kode_barang = "310051";

harga = 4750000;

stok = 20;

}

else if(Nama_barang == "Acer 4750")

{

kode_barang = "310052";

harga = 4490000;

stok = 20;

}

else

{

kode_barang = "Barang Tidak ada";

harga = 0;

stok = 0;

}

Console.WriteLine("\n\n");

Console.WriteLine("Nama Barang = {0}",Nama_barang);

Console.WriteLine("Kode Barang = {0}",kode_barang);

Console.WriteLine("Harga = {0}",harga);

Console.WriteLine("Stok = {0}",stok);

}

}

}

Polymorphism - kemampuan berbagai object yang memiliki tipe data yang berbeda untuk merespon pada method-method bernama sama.

Contoh:
   1:publicclass Control {
   2://variabel dideklarasikan private sehingga tidak bisa diakses oleh kelas  
   3://turunannya
   4:privateint top;
   5:privateint left;
   6: 
   7:protectedint Top {
   8:             get {
   9:returnthis.top;
  10:             }
  11:             set {
  12:this.top = value;
  13:             }
  14:         }
  15: 
  16:protectedint Left {
  17:             get {
  18:returnthis.left;
  19:             }
  20:             set {
  21:this.left = value;
  22:             }
  23:         }
  24: 
  25://objek konstruktor
  26:public Control(int top, int left) {
  27:             Top = top;
  28:             Left = left;
  29:         }
  30: 
  31:publicvirtualvoid DrawWindow() {
  32:             Console.WriteLine("Draw window pada ({0},{1})",
  33:                 top, left);
  34:         }
  35: 
  36:     }
  37: 
  38:publicclass ListBox : Control {
  39://member variable baru pada class anak
  40:privatestring listBoxContent;
  41:public ListBox(int top, int left, string contents)
  42:             : base(top, left) {
  43:this.listBoxContent = contents;
  44:         }
  45: 
  46://versi baru karena oSverride dari base classnya
  47:publicoverridevoid DrawWindow() {
  48:base.DrawWindow();
  49:             Console.WriteLine("Menuliskan string pada listbox: {0}",
  50:               listBoxContent);
  51:         }
  52: 
  53:     }
  54: 
  55:publicclass Button : Control {
  56:public Button(int top, int left) : base(top, left) {}
  57: 
  58:publicoverridevoid DrawWindow() {
  59://base.DrawWindow();
  60:             Console.WriteLine("Menggambar button pada ({0},{1})", Top, Left);
  61:         }
  62:     }
  63:class LatPolymophism {
  64:staticvoid Main(string[] args) {
  65:             Control win = new Control(10, 15);
  66:             ListBox lstBox = new ListBox(5, 10, "Text pada ListBox");
  67:             Button b = new Button(5, 6);
  68:             win.DrawWindow();
  69:             lstBox.DrawWindow();
  70:             b.DrawWindow();
  71: 
  72:             Control[] winArray = new Control[3];
  73:             winArray[0] = new Control(10, 15);
  74:             winArray[1] = new ListBox(5, 10, "Pada ListBox");
  75:             winArray[2] = new Button(5, 6);
  76: 
  77:for (int i = 0; i < 3; i++) {
  78:                 winArray.DrawWindow();
  79:             }
  80:         }
  81:     }

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.

7.       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.

8.        Membuat program oop : menghitung nilai mata kuliah dan konversinya





Sumber :

Tidak ada komentar:

Posting Komentar