Jumat, 25 Maret 2011

KARAKTERISTIK PBO

Tujuan Pembelajaran
• Memahami konsep Pemrograman Berbasis Obyek atau Object Oriented Programming (OOP)
• Memahami perbedaan antara pemrograman OOP dengan pemrograman prosedural

Perbandingan OOP dengan Pemrograman Prosedural
• Diselesaikan dalam bentuk prosedur atau fungsi
• Program merupakan urut-urutan instruksi
• Program dipecah-pecah ke dalam sub program yang lebih sederhana
• Fokus utama pada prosedur dan fungsi
• Fungsi dan prosedur digunakan untuk memanipulasi data
• Sedangkan data sendiri bersifat pasif

Pemrograman Berbasis Obyek
• Fungsi dan data menjadi satu kesatuan yang disebut obyek
• Obyek-obyek dalam OOP bersifat aktif
• Cara pandang : program bukan urut-urutan instruksi tapi diselesaikan oleh obyek-obyek
yang bekerjasama untuk menyelesaikan masalah

Beda nyata antara prosedural dan OOP
• Prosedural  : Fokus pada bagaimana cara komputer menangani masalah
• OOP :Fokus pada masalah yang ditangani dengan menggunakan komputer

Tentang Obyek                                                             
Apa itu Obyek ?
• Semua hal yang ada dalam dunia nyata, baik konkrit maupun abstrak
• Contoh obyek konkrit : rumah, sekolah, dosen, mahasiswa, dll.
• Contoh obyek abstrak : mata kuliah, penjadwalan, dll.

Ciri-ciri atau karakteristik Obyek
• Obyek memiliki status (state) dan tingkah laku (behavior)
• Status (state) disebut juga dengan atribut
• Contoh obyek : obyek mobil x
– Atribut : merek, warna, bahan bakar
– Method : maju, mundur, pindah persnelling, kecepatan bertambah, dll
• Pada OOP : status disimpan dalam variabel, dan tingkah laku disimpan dalam method

Tentang Class
Apa itu Class ?
• Class merupakan tempat untuk membuat obyek
• Di dalam class dideklarasikan variabel dan method yang dimiliki oleh obyek
• Proses pembuatan obyek dari sebuah class disebut dengan instantiation
• Jadi obyek merupakan hasil instansiasi dari class
• Obyek disebut juga dengan instance

Anggota Class (class member)
• Anggota Class terdiri dari atribut dan method.
• Tiap anggota class memiliki kontrol pengaksesan tersendiri, artinya apakah anggota tersebut dapat diakses dengan bebas (tipe public) atau hanya dapat diakses melalui sebuah interface.


Tentang Atribut
Apa itu atribut ?
• Atribut adalah data yang dapat membedakan antara satu obyek dengan obyek yang lain
• Contoh untuk class mahasiswa terdapat obyek mahasiswa si A, dan obyek mahasiswa si B. Yang membedakan antara obyek si A dan obyek si B adalah NRP-nya yang merupakan atribut dari obyek tersebut.

Instance variable vs. class variable
• Instance variable
– Atribut yang dimiliki oleh obyek dari class yang sama
– Tiap obyek memiliki instance variable danmenyimpan nilainya tersendiri
– Jadi beberapa obyek yang berasal dariclass yang sama, nilai instance variablenya boleh sama boleh tidak.
• Class variable
– Atribut yang dimiliki oleh semua obyekyang berasal dari class yang sama
– Semua obyek memiliki nilai class variable yang sama
– Jadi semua obyek yang berasal dari classyang sama, nilai class variable-nya harus
sama

Ilustrasi perbedaan class variable dan instance variable
• Ada seekor kucing bernama pusi danseorang anjing bernama heli.
• Keduanya merupakan dua obyek yangberbeda dan berasal dari class yangsama yaitu binatang.
• Obyek pusi dan obyek heli memilikiclass variable :
– Jenis : binatang
– Ekor : ada
• Obyek pusi memiliki instance variable :
– Suara : meong
• Obyek heli memiliki instance variable :
– Suara : guggug

Tentang Behaviour atau Method
• Dalam Class, behavior disimpan dalam bentuk method.
• Method merupakan hal-hal yang bisa dilakukan oleh obyek dari suatu class
• Yang bisa dilakukan oleh method :
– Merubah nilai atribut suatu obyek
– Menerima informasi dari obyek lain
– Mengirim informasi ke obyek lain untuk melakukan sesuatu

Method dalam Class
• Method merupakan bagian dari class yang menangani suatu tujuan tertentu dan berisi serangkaian perintah (perintah=baris program)
• Obyek yang sama dengan obyek yang lain dapat berkomunikasi dengan menggunakan method.

Contoh pembuatan class

class Mobil {
String aktifitas, warna;
int kecepatan;
void cekKecepatan() {


if (kecepatan==0)

aktifitas=“parkir”;
}
void cetakAtribut() {

System.out.println(“Aktifitas = “+aktifitas);
System.out.println(“Warna = “+warna);
System.out.println(“Kecepatan=“+kecepatan);
}
}

Penciptaan obyek dari sebuah class
• Obyek diciptakan dengan perintah new
• Misal akan diciptakan obyek baru dari class mobil dengan nama mobilku
• Maka perintah penciptaan obyek mobilku dari class Mobil :
Mobil mobilku = new Mobil();

Karakteristik OOP
• Suatu program disebut dengan pemrograman berbasis obyek (OOP) karena terdapat :
– Encapsulation (pembungkusan)
– Inheritance (pewarisan)
– Polymorphism (polimorfisme – perbedaan bentuk)

Encapsulation (pembungkusan)
Enkapsulasi adalah suatu mekanisme untuk menyembunyikan atau memproteksi suatu proses dari kemungkinan interferensi penyalahgunaan dari luar system sekaligus menyederhanakan suatu system itu sendiri. Akses ke internal system diatu oleh interface.
Contoh : seperti dalam kasus mobil, bayangkan transmisi mobil. Kita tidak mengetahui transmisi tersebut secara fisik seperti pada system transmisi tentang bagaimana cara mobil mengatur percepatan dan apa yang dilakukannya terhadap mesin untuk mendapatkan percepatan tersebut. Kita hanay memindah-mindahkan tongkat transmisi untuk mendapatkan percepatan yang kita inginkan. Tongkat transmisi inilah yang menjadi interface mobil tersebut. Dengan pedal rem kita tidak dapat mengakses system tersebut. Sebaliknya dengan menggunakan transmisi tersebut kita tidak mungkin dapat menyalakan radio mobil ataupun membuka pintu mobil.  Konsep yang sama dilakukan dalam pemrograman.  Dalam bahasa Java “everything is an object”.
Setiap baris program merupakan bagian dari object dan memiliki fungsi masing-masing. Kita dapat mengganti object-object yang menyusun subsistem dengan object lainnya jika memang diperlukan tanpa mengganggu keseluruhan system.

• Variabel dan method dalam suatu obyek dibungkus agar terlindungi
• Untuk mengakses, variabel dan method yang sudah dibungkus tadi perlu interface
• Setelah variabel dan method dibungkus, hak akses terhadapnya bisa ditentukan.
• Konsep pembungkusan ini pada dasarnya merupakan perluasan dari tipe data struktur

Mengapa variabel dan method perlu dibungkus ?
• Supaya terlindungi, artinya hak aksesterhadapnya bisa ditentukan.
• Bersifat pribadi, artinya kita tidak perlutahu semua method yang ada dalamobyek
• Contoh : obyek Roti, obyek inimempunyai method Pembuatan Roti
• Jika kita ingin memakan roti, tentu kitatidak perlu tahu bagaimana caramembuatnya
• Demikian juga jika kita inginmengakses obyek Roti, tentu kita tidakperlu tahu isi dari method PembuatanRoti.

Inheritance (pewarisan)
Pewarisan merupakan suatu proses dimana suatu class diturunkan dari class yang lainnya sehingga ia mendapatkan cirri dan sifat dari class tersebut. Perbedaan antara class dan object, class dipergunakan untuk menggambarkan suatu model atau spesifikasi dari suatu entitas, sedangkan object merupakan kenyataan, realisasi atau perwujudan dari class itu sendiri.

• Sebuah class bisa mewariskan atribut dan method-nya ke class yang lain
• Class yang mewarisi disebut superclass
• Class yang diberi warisan disebut subclass • Sebuah subclass bisa mewariskan
atau berlaku sebagai superclass bagi class yang lain => disebut multilevel inheritance

Contoh Pewarisan
• Class Nenek adalah superclass dari class Ibu
• Class Ibu adalah superclass dari class Anak
• Sebuah subclass memiliki beberapa kesamaan dengan superclass-nya, dalam hal atribut/variabel dan method yang dimilikinya
• Contoh pewarisan yang lain : class kendaraan merupakan superclass bagi class mobil, truk dan bis

Keuntungan Penggunaan Pewarisan
• Subclass memiliki atribut dan method yang spesifik yang membedakannyadengan superclass, meskipunkeduanya mirip (dalam hal kesamaanatribut dan method)
• Dengan demikian pada pembuatansubclass, programmer bisamenggunakan ulang source code darisuperclass yang ada => ini yangdisebut dengan istilah reuse
• Class-class yang didefinisikan denganatribut dan method yang bersifat umumyang berlaku baik pada superclassmaupun subclass disebut denganabstract class

Konsep Multiple Inheritance dan Single Inheritance
• Suatu subclass bisa menjadi superclass bagi class yang lain => berlaku untuk C dan Java
• Suatu class diperbolehkan memiliki lebih dari satu superclass => berlaku hanya di C
• Suatu class hanya boleh memiliki satu superclass => hanya berlaku pada Java

Polimorphism (polimorfisme)
Polymorphism berasal dari bahasa Yunani yang berarti “banyak bentuk”. Dalam OOP, mungkin digunakannnya suatu interface yang sama untuk memerintahkan suatu objek agar melakukan tindakan yang mungkin akan memberikan hasil akhir yang serupa dengan proses berbeda. Dalam konsep lebih umum polymorphism dapat disebut “suatu interface, banyak aksi”. Contoh: dalam kasus mobil, banyak merek mobil beredar dipasaran tapi semua memiliki interface kendali yang sama. Jika kita dapat mengendarai satu mobil, kita pasti dapat mengendari mobil lain dengan merek berbeda. Interface yang sama tidak berarti cara kerja yang sama.
Dengan interface yang sama dapat mendapatkan hasil yang sama tetapi bagaimana proses yang terjadi dari aksi menjadi hasil mungkin saja berbeda.

• Secara singkat Polimorfisme artinya penyamaran dimana suatu bentuk dapat memiliki lebih dari satu bentuk