Senin, 23 Mei 2011

Encapsulation, Inheritance, Polymorphism

Encapsulation

Enkapsulasi adalah sebuah kata yang mendapat dianggap remeh tentang banyak dalam diskusi di wiki, dan itu hampir selalu sedang disalahgunakan sebagai sinonim untuk menyembunyikan atau informasi abstraksi. (Saya melakukannya juga.)

Encapsulation merupakan teknik dari pemrograman berorientasi obyek untuk mengatur method atau property dari suatu class dalam hal kemampuan untuk diakses. Pada dasarnya, pemrograman berorientasi obyek merupakan pemrograman yang menggunakan pola pikir alami dengan cara membuat berbagai obyek seperti dalam kehidupan nyata. Antara obyek tersebut kemudian berinteraksi melalui suatu antarmuka (interface). Interaksi antar obyek tersebut harus diatur karena pada dasarnya setiap obyek mempunyai atribut yang boleh diakses maupun atribut yang tidak boleh diakses.

Untuk memberikan contoh konkret perbedaan:

  • interface java menyediakan abstraksi.
  • implementasi dari interface ini yang tidak terkena metode lain yang mempekerjakan menyembunyikan informasi, kita tidak bisa mengatakan bagaimana mereka diterapkan.
  • apabila pelaksanaan memaparkan beberapa metode, adalah mengunakan enkapsulasi

Dalam arti OO ketat dari istilah tersebut, enkapsulasi adalah semua operasi pada objek negara ke objek antarmuka, dan hanya operasi. Ini adalah salah satu arti di mana Anda dapat berbicara 'enkapsulasi menegakkan' tentang. Yang lainnya adalah bahwa metode hanya dapat beroperasi pada keadaan obyek mereka sendiri (yang menunjukkan bahwa benda-benda lain dalam sistem mempekerjakan menyembunyikan informasi).

Inheritance

Inheritance, adalah salah satu konsep utama dalam Pemrograman Berorientasi Objek. Inheritance memperbolehkan penggunaan kembali kode-kode yang ada pada Base Class nya untuk diturunkan pada Derived Class. Contohnya seperti dibawah ini.

Dibawah ini adalah Base Class

class kumpulanVariabel

{

SqlConnection conn;

SqlDataAdapter da;

DataSet ds = new DataSet;

}

dibawah ini adalah Derived Class

class aksesData : kumpulanVariabel

{

static aksesData()

{

conn=new SqlConnection("Data Source=namaServer;Database=northwind;UID=sa;PWD=sa");

conn.Open();

}

public DataSet dataCustomer()

{

da=new SqlDataAdapter("SELECT * FROM customer",conn);

da.Fill(ds,"customer");

return ds;

}

}

Dari contoh class diatas, Class kumpulanVariabel hanya berisi variabel-variabel yang akan diturunkan dalam Class aksesData yang digunakan untuk mengeset koneksi database dan mengambil data tabel.

Polymorphism
Polymorphism merupakan kemampuan suatu method untuk bekerja dengan lebih dari satu tipe argumen. Pada bahasa lain (khususnya C++), konsep ini sering disebut dengan method overloading. Pada dasarnya, Python tidak menangani hal ini secara khusus. Hal ini disebabkan karena Python merupakan suatu bahasa pemrograman yang bersifat dynamic typing yaitu tidak memerlukan deklarasi tipe.
Polymorphism berasal dari bahasa Yunani yang berarti banyak bentuk. Dalam PBO, konsep ini memungkinkan digunakannya suatu interface yang sama untuk memerintah objek agar melakukan aksi atau tindakan yang mungkin secara prinsip sama namun secara proses berbeda.

Poymorphism merupakan konsep OOP yang menyatakan bahwa sesuatu yang sama dapat mempunyai bentuk dan perilaku yang berbeda. Sesuatu yang dimaksud adalah obyek dari suatu kelas. Polimorfieme dapat beroperasi pada dua arah yaitu saat kompilasi dan saat eksekusi. Polimorfisme saat kompilasi yaitu overloading fungsi dan operator.. Polymorphism erat kaitannya dengan pewarisan. Obyek dinamis sebuah kelas dasar dapat berperilaku seperti kelas turunan. Ketika obyek itu menunjuk kelas dasar dia berperilaku seperti kelas dasar, namun ketika menunjuk kelas turunan dia berperilaku seperti kelas turunan. Polymorphism terjadi karena adanya ikatan dinamis. Yaitu ikatan yang terjadi pada saat program dijalankan (di eksekusi). Ikatan dinamis hanya terjadi antara obyek dinamis dengan metode dinamis. Polimorfisme merupakan kemampuan beberapa obyek yang masing-masing berbeda kelas (namun masih terikat inheritance) dalam merespon permintaan kepada suatu method yang sama melalui cara pemanggilan yang spesifik. Secara umum polimorfisme membuat programmer melakukan pemrograman secara umum daripada secara khusus Polimorfisme: dalam sebuah variable tunggal dalam program dapat memegang berbagai jenis objek yang berbeda sewaktu program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Sebagai contoh:burung dan kucing menerima pesan "gerak cepat", maka burung akan menggerakan sayapnya dan terbang, sedangkan kucing akan menggerakkan kakinya dan berlari. ke-2 hewan tersebut menerima pesan yang sama namun melakukas pesan dengan kemampuannya masing-masing.

Dalam konsep yang lebih umum sering kali polymorphism disebut dalam istilah satu interface banyak aksi. Contoh yang konkrit dalam dunia nyata yaitu mobil. Mobil yang ada dipasaran terdiri atas berbagai tipe dan berbagai merk, namun semuanya memiliki interface kemudi yang sama, seperti: stir, tongkat transmisi, pedal gas dan rem. Jika seseorang dapat mengemudikan satu jenis mobil saja dari satu merk tertentu, maka orang itu akan dapat mengemudikan hamper semua jenis mobil yang ada, karena semua mobil tersebut menggunakan interface yang sama.

Referensi

http://translate.google.co.id/translate?hl=id&sl=en&u=http://c2.com/cgi/wiki%3FEncapsulationDefini


Pemograman Beorientasi Objek (PBO)

Apa itu PBO ???

Pemrograman berorientasi objek (Inggris: object-oriented programming disingkat OOP) merupakan paradigm pemrograman yang berorientasikan kepada objek. Semua data dan fungsi di dalam paradigma ini dibungkus dalam kelas-kelas atau objek-objek. Bandingkan dengan logika pemrograman terstruktur. Setiap objek dapat menerima pesan, memproses data,dan mengirim pesan ke objek lainnya, Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari bagi pemula dibanding dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat


Dengan deskripsi ini, obyek pada dunia nyata dapat secara mudah asumsikan sebagai obyek perangkat lunak menggunakan atribut sebagai data dan tingkah laku sebagai method. Data dan method dapat digunakan dalam pemrograman game atau perangkat lunak interaktif untuk membuat simulasi obyek pada dunia nyata. Contohnya adalah perangkat lunak obyek mobil dalam permainan balap mobil atau perangkat lunak obyek singa dalam sebuah perangkat lunak pendidikan interaktif pada kebun binatang untuk anak anak.

Perbedaan Class dan Object

Pada dunia perangkat lunak, sebuah obyek adalah sebuah komponen perangkat lunak yang stukturnya mirip dengan obyek pada dunia nyata. Setiap obyek dibangun dari sekumpulan data (atribut) yang disebut variabel untuk menjabarkan karakteristik khusus dari obyek, dan juga terdiri dari sekumpulan method yang menjabarkan tingkah laku dari obyek. Bisa dikatakan bahwa obyek adalah sebuah perangkat lunak yang berisi sekumpulan variabel dan method yg berhubungan. Variabel dan method dalam obyek Java secara formal diketahui sebagai variabel instance dan method instance. Hal ini dilakukan untuk membedakan dari variabel class dan method class, dimana akan dibahas kemudian. Class adalah sturktur dasar dari OOP. Class terdiri dari dua tipe dari anggota dimana disebutdengan field (attribut/properti) dan method. Field merupakan tipe data yang didefinisikan oleh class, sementara method merupakan operasi. Sebuah obyek adalah sebuah instance (keturunan) dari class.

Konsep dasar dari Pemrograman Berorientasi Objek

Pemrograman orientasi-objek menekankan konsep berikut:

  • kelas — kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebagai contoh 'class of

dog' adalah suatu unit yang terdiri atas definisi-definisi data dan fungsi-fungsi yang menunjuk pada berbagai macam perilaku/turunan dari anjing. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi object. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen
(sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. Cara seperti ini akan menyederhanakan pemetaan dari masalah ke sebuah program ataupun sebaliknya.

  • Objek - membungkus data dan fungsi bersama menjadi suatu unit dalam sebuah program komputer; objek merupakan dasar modularitas dan struktur dalam sebuah program komputer berorientasi objek.
  • Abstraksi - 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.

  • Enkapsulasi - Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut.
  • Polimorfisme melalui pengiriman pesan. Tidak bergantung kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan; metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tungal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.
  • Inheritas- Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada - objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa harus mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas.)
  • Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bag administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas adminiistrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri.
Konstruktor dan Destruktor

Konstruktor

  • Konstruktor adalah fungsi khusus anggota kelas yang otomatis dijalankan pada saat penciptaan objek (mendeklarasikan instance).
  • Konstruktor merupakan sebuah method yang digunakan untuk :
  • membuat objek dari suatu kelas
  • menginisialisasi nilai atribut yang dimiliki kelas
  • Nama konstruktor = nama kelas
  • Konstruktor tidak mempunyai tipe hasil, bahkan juga bukan bertipe void. Biasanya konstruktor dipakai untuk inisialisasi anggota data dan melakukan operasi lain seperti membuka file dan melakukan alokasi memori secara dinamis.
  • Meskipun konstruktor tidak harus ada di dalam kelas, tetapi jika diperlukan konstruktor dapat lebih dari satu.
  • Biasanya konstruktor tidak memiliki return value.
Tiga jenis Konstruktor :
  • Konstruktor default : tidak dapat menerima argumen, anggota data diberi nilai awal tertentu
  • Konstruktor penyalinan dengan parameter : anggota data diberi nilai awal berasal dari parameter.
  • Konstruktor penyalinan objek lain : parameter berupa objek lain, anggota data diberi nilai awal dari objek lain.
Destruktor
  • Destruktor adalah pasangan Konstruktor. Pada saat program menciptakan objek secara otomatis Konstruktor akan dijalankan. Biasanya dimaksudkan untuk memberi nilai awal variabel private.
  • n C++ menyediakan fungsi Destruktor (penghancur atau pelenyap) yang secara otomatis akan dijalankan pada saat berakhirnya kehidupan objek.
  • Fungsi Destruktor : untuk mendealokasikan memori dinamis yang diciptakan Konstruktor.
  • Destruktor sama dengan nama kelas ditambah awalan karakter tilde(~).