Polimorfisme
Polimorfisme (atau dalam bahasa Inggrisnya ditulis polymorphism) berasal dari dua kata Yunani kuno yaitu poly yang berarti banyak dan morph yang berarti bentuk. Sehingga menurut asal katanya polimorfisme berarti banyak bentuk.
Seringkali programmer pemula dibingungkan dengan banyaknya istilah-istilah yang ada pada Object Oriented Programming. Hal ini membuat topik Object Oriented Programming terkesan sulit untuk dipahami. Tidak terkecuali untuk polimorfisme.
Polimorfisme pada dasarnya sederhana, bahkan sadar atau tidak sadar dari tutorial sebelumnya anda telah berkali-kali melakukan apa yang dinamakan sebagai polimorfisme. Seperti yang telah dijelaskan sebelumnya polimorfisme adalah sebuah proses membuat satu atau lebih objek dari kelas tertentu. Pada tutorial sebelumnya anda pernah membuat sebuah kelas bernama Produk, masih ingat? Anggaplah anda telah membuat sebuah kelas Produk. Kemudian anda membuat objek dari kelas tersebut, katakanlah 3 buah objek seperti berikut:
Maka anda telah melakukan apa yang dinamakan sebagai polimorfisme. Konsep pewarisan yang telah dibahas pada tutorial sebelumnya pun bisa kita sebut sebagai polimorfisme. Karena anda membuat objek yang baru beserta property & method tambahan tetapi masih tetap memiliki property & method dari kelas orang tua.
$keyboard = new Produk();
$mouse = new Produk();
$monitor = new Produk();
Constructor & Destructor
Dalam pemrograman berorientasi objek, anda tidak akan pernah lepas dari yang namanya Constructor dan padanannya yaitu Destructor. Apa sih Constructor itu? Constructor adalah blok penyataan khusus (bisa juga disebut method khusus) yang dibuat ketika sebuah objek dibuat. Ketika anda tidak membuat constructor & destructor di dalam kelas yang anda buat, maka constructor & destructor akan dibuat secara otomatis. Ketika anda membuat objek $keyboard, $mouse, dan $monitor pada contoh sebelumnya, secara otomatis dibuatlah constructor untuk ketiga objek tersebut.
Oke, sekarang pengertian constructor sudah dipahami, lalu untuk apa constructor itu? Umumnya constructor digunakan untuk memberi nilai awal property pada objek yang dibuat. Tata kalimat untuk membuat constructor adalah sebagai berikut:
Kata construct sebelumnya harus diawali dengan dua kali tanda garis bawah pada keyboard. Kemudian diberi kurung buka & tutup. Di antara kurung bisa diberikan parameter jika anda memang merasa perlu untuk ditambahkan parameter. Kemudian anda bisa masukan kode di dalam konstruktor.
function __construct(parameter)
{
kode
}
Sebagai contoh, misalkan anda membuat kelas produk. Di dalam kelas produk tersebut terdapat property harga yang nilai awalnya haruslah 0, maka potongan kodenya akan terlihat sebagai berikut:
Jika constructor dibuat serta digunakan pada saat objek dibuat, maka destructor adalah kebalikannya. Destructor dibuat serta digunakan saat objek akan dihapus. Pada pemrograman PHP destructor akan otomatis dipanggil pada saat akhir pengerjaan script PHP anda.
class produk
{
private nama;
private harga;
private foto;
private deskripsi;
function __construct()
{
$this->harga = 0;
}
...
...
...
Sama seperti constructor, anda juga dapat memberikan pengaturan tersendiri pada destructor. Tata kalimat untuk membuat constructor sendiri adalah sebagai berikut:
Sama seperti constructor, kata kunci destruct diawali dengan dua garis bawah pada keyboard. Berikut adalah contoh sederhana lainnya mengenai constructor dan destructor supaya lebih jelas lagi:
function __destruct(parameter)
{
kode
}
Ketika kode PHP di atas anda jalankan maka anda akan melihat dua teks, yaitu "Memanggil constructor" dan "Memanggil destructor". Padahal anda tidak memasukan kode memanggil method __construct() dan method __destruct(). Hal ini terjadi karena seperti yang sudah saya jelaskan sebelumnya, ketika anda mulai membuat sebuah objek, maka PHP secara otomatis akan membuat constructor dari objek tersebut. Kemudian ketika objek sudah selesai digunakan dan akan dihapus dari memori maka secara otomatis destructor dari objek tersebut akan dipanggil.
<?php
class MyClass {
function __construct() {
echo "Memanggil constructor<br>";
}
function __destruct() {
echo "Memanggil destructor<br>";
}
}
$Test = new MyClass();
?>
UML
Bagian ini merupakan tambahan sebagai penutup tutorial singkat Object Oriented Programming dengan PHP5. Alasan saya menambahkan UML ini karena dalam pemrograman berorientasi objek, ketika anda mulai membuat program maka anda membuat objek, kelas, dan sebagainya. Sedangkan sebelum mulai membuat program, terlebih untuk program skala besar, anda harus membuat perancangan yang baik. Nah, UML adalah teknik analisa & desain program berorientasi objek sebelum anda mulai membuat program.
Pada bagian ini saya hanya memberikan gambaran singkat mengenai UML. Sehingga anda kelak akan memiliki persiapan yang baik ketika akan mulai memperdalam UML. Mari kita mulai pembahasan mengenai UML
Apa itu UML?
UML adalah bahasa pemrograman visual untuk menggambarkan model sistem yang akan dibuat serta menjelaskan seperti apa sistem yang akan dibuat kelak dengan menggunakan diagram dan teks. UML menganalisa dan mendesain program berorientasi objek dengan menggunakan sejumlah diagram, di antaranya adalah sebagai berikut:
Diagram struktur:
- Diagram kelas.
- Diagram objek.
- Diagram komponen.
- Diagram deployment.
- Diagram use-case.
- Diagram urutan/sekuen.
- Diagram kolaborasi.
- Diagram statechart.
- Diagram aktivitas.
Pada kesempatan ini, saya tidak membahas keseluruhan diagram di atas. Saya hanya membahas beberapa di antaranya. Apakah semua diagram di atas harus dibuat dalam perancangan program? Menurut saya pribadi, UML sama seperti bahasa pemrograman lainnya, hanya berupa alat untuk membantu pekerjaan kita, oleh karena itu jika dalam proyek pemrograman yang dibuat memerlukan semua diagram di atas maka bisa kita buat. Namun tidak jarang juga kita cukup membuat beberapa di antaranya saja jika program yang kita buat masih dalam skala kecil.
Saya termasuk orang yang percaya bahwa contoh konkrit jauh lebih mudah dipahami dan berarti dibandingkan dengan teori yang panjang lebar. Oleh karena itu mari kita mulai belajar mengenai UML dengan contoh konkrit.
Misalkan anda akan membuat sebuah sistem informasi pada suatu perpustakaan berbasis web dengan menggunakan PHP, maka perancangan berorientasi objek yang bisa anda lakukan pertama adalah dengan membuat diagram use-case.
Diagram Use-Case
Diagram use-case digunakan untuk memperlihatkan hubungan antara aktor dan kebutuhan fungsional di dalam sistem. Maksud dari kebutuhan fungsional adalah apa yang harus dilakukan di dalam sistem tersebut. Misalkan anda adalah seorang programmer yang akan membuat program komputer untuk perpustakaan, tentu saja sebelum anda mulai membuat program, anda harus mulai menganalisa dan membuat perencanaan yang baik.
Program yang akan anda buat misalkan akan digunakan oleh petugas perpustakaan. Kemudian anda juga dari hasil analisa di lapangan mengetahui bahwa kelak petugas perpustakaan ini akan menggunakan program anda untuk:
- Memasukan data buku yang masuk.
- Memasukan data buku yang keluar dipinjam.
- Membuat laporan buku masuk.
- Membuat laporan buku keluar.
Dari contoh tersebut bisa kita lihat bahwa user (petugas perpustakaan) adalah aktor, sedangkan kebutuhan fungsionalitas seperti input buku masuk dan input buku ke luar adalah kebutuhan fungsionalitas (use-case). Use-case menggambarkan hubungan antara aktor dan kebutuhan fungsionalitas. Seperti contoh di atas terlihat aktor berhubungan dengan kebutuhan fungsionalitas yang dihubungkan dengan tanda panah.
Pada diagram use-case, aktor digambakan dengan simbol orang yang kemudian dibawahnya diberi nama aktor tersebut, sedangkan use-case digambarkan dengan simbol elips di mana di dalamnya dituliskan kebutuhan fungsionalitasnya. Use-case ini dibuat sebagai gambaran besar seperti apa program yang akan kita buat sebelum mulai pembuatan program.
Diagram Kelas
Setelah anda mulai memiliki gambaran apa saja yang harus dilakukan program anda melalui diagram use-case, maka anda mulai membuat diagram kelas. Dalam diagram kelas ini anda merancang kelas-kelas apa saja yang dibutuhkan dari program yang akan dibuat berdasarkan pada setiap use-case. Misalkan anda mulai merancang untuk bagian use-case input buku masuk. Anda mulai memprakirakan kelas apa saja yang perlu untuk dibuat. Dalam contoh kasus ini, misalkan anda membutuhkan 2 kelas saja, yaitu:
- Kelas Buku yang digunakan untuk mengetahui informasi buku.
- Kelas BukuMasuk yang digunakan untuk mengetahui buku apa saja yang masuk.
Dari gambar di atas bisa kita lihat pada kotak paling atas merupakan nama kelas, kotak kedua (tengah) adalah kumpulan property kelas, kotak terakhir (paling bawah) adalah kumpulan method kelas. Pada gambar di atas terdapat dua kelas yang tersambung dengan sebuah garis. Garis yang menyambungkan kedua kelas ini, menggabarkan bahwa ada hubungan antara kelas Buku dengan kelas BukuMasuk.
Pada tutorial sebelumnya, saya sudah menjelaskan mengenai protected, private, dan public. Pada diagram kelas ini, setiap property atau method bisa bersifat protected, private, atau public. Tanda ‘+’ menunjukan bahwa property/method tersebut bersifat public, sedangkan tanda ‘-‘ menunjukan bahwa property/method tersebut bersifat private. Adapun untuk property/method yang bersifat protected menggunakan tanda ‘#’. Namun pada contoh kasus ini saya berusaha menjelaskan diagram kelas secara sederhana, sehingga property/method yang bersifat protected tidak saya cantumkan.
Dari perancangan ini saya yakin, anda sudah mulai mengira-ngira apa saja yang harus ada pada program anda dan kemudian bagaimana langkah-langkah untuk memulai program. Inilah fungsi utama dari UML. Ketika anda membuat program di mana, jumlah orang yang terlibat di dalamnya cukup banyak, penggunaan UML seperti ini akan sangat membantu dibandingkan dengan membuat daftar tugas dengan anggota tim lainnya.
Banyaknya diagram yang dibuat bergantung pada kebutuhan program yang akan dibuat. Semakin besar dan banyak orang yang terlibat dalam pembuatan program, tentu saja semakin banyak diagram UML yang akan digunakan.
*.:。✿ Don't forget to come back again ✿.。.:*
Visit Wahyudi Blog !
Tidak ada komentar:
Posting Komentar
Plisss...
Jangan nyepam (spam), jangan promosi (apapun itu), jangan SARA, jangan OOT...
Mohon kerja samanya, berikan komentar yang berbobot dan bermanfaat bagi semua... ^^