1.
Pemrograman Berorientasi Objek
Secara garis besar, suatu bahasa pemrograman dapat
dikatakan sebagai bahasa pemrograman berorientasi objek (atau Object Oriented
Programming / OOP) apabila ia mendukung konsep abstraksi (abstraction),
enkapsulasi (encapsulation), polimorfisme (polymorphism), dan pewarisan
(inheritance). Selain konsep-konsep ini, ada beberapa konsep fundamental
lainnya, seperti kelas, objek, dan message.
2.
Kelas
Kelas mendefinisikan karakteristik-karakteristik abstrak
dari sesuatu (objek), termasuk karakteristik dan perilaku (behavior) dari
“sesuatu” itu sendiri. Kelas dapat diilustrasikan sebagai sebuah cetak biru
(blueprint), prototipe, atau pabrik (factory) yang berfungsi untuk menghasilkan
objek- objek.
Bentuk
kelas yang paling sederhana diperlihatkan sebagai berikut:
3.
Objek
Dalam terminologi OOP, objek adalah instans (atau
manifestasi) dari sebuah kelas. Dengan demikian, dalam konteks desain, kita
berbicara mengenai kelas; saat run time, yang kita bicarakan adalah objek.
Baik di dunia nyata maupun di dalam pemrograman, sebuah
objek memiliki dua karakteristik utama, yaitu state (status) dan behavior
(perilaku). Sebagai contoh, kucing memiliki state (nama, warna, dan sebagainya)
dan behavior (mengeong, melompat, dan sebagainya).
4.
Field
Field adalah variabel yang didefinisikan di dalam kelas,
dan disebut juga sebagai member variable. Field—dan juga member-member kelas
lainnya—dapat dideklarasikan dengan level akses tertentu. Berkaitan dengan
level akses ini, ada beberapa jenis level dari yang umum sampai yang restriktif.
5.
Pewarisan (Inheritance)
Istilah inheritance (pewarisan) mengacu pada kemampuan dari
sebuah kelas untuk mewarisi state dan behavior kelas lain. Dengan demikian,
atribut-atribut dan method-method kelas yang diwarisi (superkelas) secara
intrinsik menjadi bagian dari kelas yang mewarisinya (subkelas). Terlepas dari
warisan yang telah diperoleh, subkelas dapat menambahkan atau memodifikasi
atribut-atribut dan method-method superkelas.
Gambar
hubungan pewarisan
Konsep inheritance melahirkan sejumlah pasangan istilah
yang menggambar-kan hubungan antara dua kelas terkait, seperti superkelas-
subkelas, supertipe-subtipe, kelas dasar-kelas turunan, ancestor- descendant,
parent-heir, dan leluhur-turunan.
6.
Kelas Abstrak
Kelas abstrak (abstract class) adalah kelas yang mengandung
konsep abstrak, dan tidak akan pernah bisa diinstansiasi. Kelas abstrak
didefinisikan dengan tujuan untuk digunakan dan diperluas oleh kelas lain.
Dengan demikian, kelas ini merupakan cikal bakal superkelas.
Gambar
kelas abstrak buah
7.
Interface
Interface merupakan suatu tipe abstrak yang mendefinisikan
komunikasi antara dua entitas. Interface merepresentasikan sebuah kontrak, di
mana kelas yang mengimplementasikan interface harus menerapkan tiap-tiap aspek
interface secara nyata sebagaimana yang telah didefinisikan.
Tujuan utama penggunaan interface adalah memungkinkan
kelas-kelas yang mirip untuk memiliki behavior standar. Jadi, interface
memiliki sedikit kemiripan dengan kelas abstrak, di mana keduanya sama-sama
didesain untuk digunakan oleh kelas lain.
Di balik beberapa persamaan antara interface dan kelas
abstrak, terdapat perbedaan-perbedaan di antara keduanya. Mengacu pada
karakteristik keduanya, setidaknya ada dua perbedaan mendasar yang bisa kita
garis bawahi.
- Di dalam kelas abstrak boleh terdapat implementasi nyata dari suatu method. Keadaan ini berbeda sekali dengan interface, di mana semua method harus berupa deklarasi abstrak, dan tidak boleh ada implementasi sama sekali.
- Suatu kelas hanya boleh mewarisi sebuah kelas, tetapi ia dapat mengimplementasikan lebih dari satu interface.
8.
Polimorfisme (Polymorphism)
Polimorfisme secara harfiah dapat diartikan banyak bentuk.
Konsep ini memiliki arti kemampuan untuk mendefinisikan perilaku yang berbeda.
Singkatnya, secara teknis, method atau konstruktor dengan nama sama dapat
memiliki perilaku berbeda bergantung pada argumen atau tipe objeknya. Jadi,
kata kunci untuk merepresentasikan konsep polimorfisme adalah: satu nama,
banyak bentuk.
Konsep polimorfisme membentuk paradigma pemrograman yang
ampuh yang mampu menyederhanakan definisi client dan secara dinamis mendukung
pengubahan keterhubungan antarobjek saat runtime.
0 komentar:
Posting Komentar