KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP)
Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut: a. Abstraksi (abstraction) b. Pembungkusan (encapsulation) c. Pewarisan (inheritence) d. Polimorfisme – banyakrupa (polymorphism)
A. Abstraksi (abstraction). Abstraksi adalah pengabstrakan atau penyembunyian kerumitan suatu proses. Abstraksi menjelaskan definisi dari objek pada class dalam suatu fungsi (method) atau fungsi khusus (constructor). Sebuah kelas dapat dideklarasikan sebagai kelas abstrak. Tujuan membuat kelas abstrak adalah agar satu kelas lain dapat memperluasnya (extend) dengan jalan menjadi subclass darinya. Contoh Abstraksi: Contoh berikut akan menjelaskan penggunaan class abstrak dalam pemrograman Objek dalam Java. Kelas abstrak yang dibuat adalah kelas Animal, kemudian dengan dua jenis variabel, jumlah kaki dan warna. Ditambahkan method berdasarkan cara jalan dan suaranya public abstract class Hewan { private int jmlKaki; private Color warna; public abstract void jalan(); public abstract void suara(); } 1
2 B. Pembungkusan (encapsulation). Selain dengan menggunakan metoda abstraksi dalam menyembunyikan method pada super class, maka juga dapat dilakukan dengan proses pembungkusan suatu fungsi. Dengan kata lain, sebenarnya proses pembungkusan itu sendiri merupakan salah satu metoda atau mekanisme untuk melakukan abstraksi. Dalam pemrograman tradisional, proses semacam ini sering juga disebut dengan penyembunyian informasi (information hiding). Dalam melakukan pembungkusan kode dan data dalam java terdapat tiga tingkatan akses data yang perlu diketahui yaitu: Engkapsulasi berhubungan class control yang diberlakukan terhadap class member yang ada di dalamnya 1. Tingkat akses Private. 2. Tingkat akses Protected. 3. Tingkat akses Public. 1. Tingkat Akses Privtae ( Encapsulation- Private) Akses Private berarti bahwa method yang digunakan hanya dapat diakses oleh kelas yang memilikinya. Dengan mendeklarasikan data dan method menggunakan akses private, ini berarti data dan method tersebut tidak boleh diakses atau dignakan oleh kelas-kelas lain yang terdapat di dalam program.
3
Sebuah variabel atau method yang dideklarasikan private hanya dapat diakses oleh method yang merupakan member dari kelas tersebut. Ia tidak dapat diakses oleh kelas lain yang berada di dalam package yang sama ataupun di lain package. Untuk mendeklarasikan suatu data atau method dengan tingkat akses private, digunakan kata kunci private. Contoh Tingkat Akses Privtae ( Encapsulation- Private)
Gambar 1
4
Gambar 2
Penjelasan: Sebagai contoh dalam gambar 1, atribut d dalam kelas Class1dideklarasikan private. Akibatnya, kelas Class2 yang berada dalam package yang sama (package1) tidak dapat mengakses atribut tersebut. Begitu juga dengan kelas SubClass1 yang merupakan subclass dari kelas Class1 tidak dapat mengakses variabel d tersebut. Dalam gambar 2, variabel d dalam kelas Class1 juga dideklarasikan private. Kelas Class2 ataupun kelas SubClass1 yang berada di dalam package yang berbeda tidak dapat mengakses atribut ini.
5 2. Tingkat Akses Privtae ( Encapsulation- Protected) Suatu data maupun method yang dideklarasikan dengan tingkat akses protected dapat diakses oleh kelas yang memilikinya dan juga oleh kelas-kelas yang masih memiliki hubungan turunan. Access control protected berarti member dapat diakses oleh kelas yang berada dalam package yang sama dan subclass yang berada di dalam package yang berbeda. Untuk mendeklarasikan tipe data atau method protected digunakan kata kunci protected.
Gambar 3
6
Gambar 4
Penjelasan : Dalam gambar 3, atribut c dalam kelas Class1 dideklarasikanprotected. Akibatnya, kelas Class2 yang berada dalam package yang sama (package1) dapat mengakses atribut tersebut. Begitu juga dengan kelas SubClass1 yang merupakan subclass dari kelas Class1 dapat mengakses variabel d tersebut. Dalam gambar 4, variabel c dalam kelas Class1 juga di-markprotected. Kelas Class2 tidak dapat mengakses atribut ini karena ia berada di package yang berbeda. Tetapi SubClass1 dapat mengakses atribut ini karena meskipun ia berada di dalam package yang berbeda, ia merupakan subclass dari kelas Class1. 3. Tingkat Akses Public (Encapsulation-Public) Tingkat akses publik merupakan kebalikan dari tingkat akses private. Data dan method yang bersifat public dapat diakses oleh semua bagian dalam program.
7 Dengan kata lain, data-data maupun method-method yang dideklarasikan dengan tingkat akses publik akan dikenali dan diakses oleh semua kelas yang ada di dalam program, baik yang merupakan kelas turunan maupun kelas yang tidak memiliki hubungan sama sekali.
Gambar 5
Gambar 6
8 Penjelasan: Dalam gambar 5, atribut b dalam kelas Class1 dideklarasikan public. Kelas yang berada dalam package yang sama (Class2 dan SubClass1) dapat mengakses atribut tersebut.
Dalam gambar 6, variabel b dalam kelas Class1 juga dideklarasikan public. Kelas Class2 dan SubClass1 yang berada di dalam package yang berbeda dapat mengakses variabel b.
C. Pewarisan (inheritance). Model Pemrograman berorientasi objek juga menerapkan konsep pewarisan. Dalam sebuah program, suatu kelas dapat diturunkan menjadi kelas-kelas baru lainnya yang akan mewarisi beberapa sifat atau perilaku dari kelas induknya. Semua class dalam Java, termasuk class yang membangun Java API, merupakan subclass dari superclass Object.
9 Contoh dari hierarki class :
Gambar 7 Pewarisan ( inheritance) terdiri dari : 1. Superclass Adalah class yang letaknya di atas class tertentu di dalam hierarki. 2. Subclass Adalah class yang letaknya di bawah class tertentu di dalam hierarki. Untuk mengambil sebuah class, gunakan keyword extends. Keuntungan penggunaan Inheritance dalam OOP adalah : Reusability. Reusability maksudnya yaitu: 1. Ketika behavior(method) dideklarasikan dalam superclass, behavior tersebut otomatis diwariskan ke seluruh subclass.
10 2. Jadi, Anda dapat meng-enkode method hanya sekali dan method tersebut dapat digunakan oleh seluruh subclass 3. Sebuah subclass hanya perlu mengimplementasikan perbedaan antara dirinya sendiri dan parent-nya.
D. Polimorfisme – banyakrupa (polymorphism). Polymorphism membuat objek-objek yang berasal dari subclass yang berbeda, diperlakukan sebagai objek-objek dari satu superclass. Hal ini terjadi ketika memilih method yang sesuai untuk diimplementasikan ke objek tertentu berdasarkan pada subclass yang memiliki method bersangkutan. Pada contoh ini, kita diberikan parent class yaitu Person dan subclassnya adalah Student, sekarang kita tambahkan subclass lainnya dari Person yaitu Employee. Berikut adalah hirarki class nya:
Gambar 8 Dalam Java, kita dapat membuat referensi dari suatu superclass ke object dari subclassnya. Sebagai contoh :
11 public static main( String[] args ) { Person ref; Student studentObject = new Student(); Employee employeeObject = new Employee(); ref = studentObject; //titik referensi Person kepada // sebuah object Student }
Misalnya, kita memiliki sebuah method getName dalam superclass Person. Dan kita meng-override method ini di kedua subclass yaitu Student dan Employee. public class Student { public String getName(){ System.out.println(“Student Name:” + name); return name; } } public class Employee { public String getName(){ System.out.println(“Employee Name:” + name); return name; } }