A. Konsep Inheritas
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek
dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance,
sebuah class dapat mempunyai class turunan.Suatu class yang mempunyai
class turunan dinamakan parent class atau base class. Sedangkan class
turunan itu sendiri seringkali disebut subclass atau child class. Suatu subclass
dapat mewarisi apa-apa yang dipunyai oleh parent class. Karena suatu
subclass dapat mewarisi apa apa yang dipunyai oleh parent class-nya,
maka member dari suatu subclass adalah terdiri dari apaapa yang ia punyai
dan juga apa-apa yang ia warisi dari class parent-nya. Kesimpulannya,
boleh dikatakan bahwa suatu subclass adalah tidak lain hanya memperluas
(extend) parent class-nya.
Gambar 1. Ilustrasi konsep inheritance
Dari hirarki diatas dapat dilihat bahwa, semakin kebawah, class akan semakin
bersifat spesifik. Class karnivora memiliki seluruh sifat yang dimiliki oleh binatang,
demikian halnya juga harimau dan ular memiliki seluruh sifat yang diturunkan
Kurnia Rahman Agus, S.S.T 4
Harimau
Ular
Karnivora
Monyet
Binatang
Omnivora
Gorila
Ayam
Ayam
Herbivora
Herbivora
Kambing
Sapi
Modul Pemrograman Berorientasi Objek
dari class karnivora. Dengan konsep ini, karakteristik yang dimiliki oleh class
binatang cukup didefinisikan didefinisikan dalam class binatang saja. Class
karnovora, herbivora, dan omnivora tidak perlu mendefinisikan ulang apa yang
telah dimiliki oleh class binatang, karena sebagai class turunannya, ia akan
mendapatkan karakteristik dari class binatang secara otomatis. Demikian juga
dengan class harimau, ular, gorila, ayam, monyet, kambing dan sapi hanya
perlu mendefinisikan karakteristik yang spesifik dimiliki oleh class-nya masing-
masing. Dengan memanfaatkan konsep pewarisan ini dalam pemrograman,
maka hanya perlu mendefinisikan karakteristik yang lebih umum akan
didapatkan dari class darimana ia diturunkan. Dalam Java, semua
class,termasuk class yang membangun Java API, adalah subclasses dari
superclass Object. Contoh hirarki class diperlihatkan di bawahini. Beberapa
class di atas class utama dalam hirarki class dikenal sebagai superclass,
Sementara beberapa class di bawah class pokok dalam hirarki class dikenal
sebagai subclass dari class tersebut.
Pewarisan adalah keuntungan besar dalam pemrograman berbasis object
karena suatu sifat atau method didefinisikan dalam superclass, sifat ini secara
otomatis diwariskan dari semua subclasses. Jadi, Anda dapat menuliskan kode
method hanya sekali dan mereka dapat digunakan oleh semua subclass.
Subclass hanya perlu mengimplementasikan perbedaannya sendiri dan
induknya.
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek dapat
mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah class
dapat mempunyai class turunan. Suatu class yang mempunyai class turunan
dinamakan parent class atau base class. Sedangkan class turunan itu sendiri
sering kali disebut subclass atau child class. Suatu subclass dapat Mewari siapa-
apa yang dipunyai oleh parent class-nya, sehingga member dari suatu subclass
adalah terdiri dari apa- apa yang ia punyai dan juga apa-apa yang diawarisi
Kurnia Rahman Agus, S.S.T 5
Modul Pemrograman Berorientasi Objek
dari classparent-nya. Kesimpulannya, boleh dikatakan bahwa suatu subclass
adalah tidak lain hanya memperluas (extend) parentclass-nya.
B. Hubungan antar kelas B.1 Asosiasi
Dapat dilihat pada gambar kelas diagram di atas, hubungan asosiasi
digambarkan dengan satu garis tidak putus - putus dan tidak memiliki anak
panah pada kedua ujungnya. Kemudian juga dibubuhkan kardinal pada garis
tersebut.
Asosiasi adalah hubungan yang bisa saling menggunakan di dalam
sebuah kelas, dan tidak saling memiliki. Misal pada gambar di atas terdapat
kelas Dosen dan kelas Mahasiswa, dilihat dari kardinalitasnya, satu dosen bisa
memiliki banyak mahasiswa. Apabila dosen dihilangkan, mahasiswa masih bisa
digunakan karena tidak saling memiliki.
Penjelasan tentang asosiasi ini bisa lebih jelas dengan melihat dua potongan kode
dibawah
Kurnia Rahman Agus, S.S.T 6
Modul Pemrograman Berorientasi Objek
public class mahasiswa {
private String nim; private String nama; public void setNama (String nama) {
this.nama = nama; } public void setNim (String nim) {
this.nim = nim; } public String getNim () {
return this.nim; } public String getNama () {
return this.nama; } } public class dosen { private String Kddosen; private String[] nimMHS; private int
JmlMahasiswa; public void setKddosen (String Kddosen) {
this.Kddosen = Kddosen; } public void setNimMahasiswa (String nimMhs) {
if (JmlMahasiswa<5) {
nimMHS[JmlMahasiswa] = nimMhs; JmlMahasiswa++; } } public int getJmlMahasiswa () {
return this.JmlMahasiswa; } public String getKddosen () {
return this.Kddosen; } public String getMahasiswa (int i) {
return (nimMHS[i]); } }
Kurnia Rahman Agus, S.S.T 7 mahasiswa.java
dosen.java
Modul Pemrograman Berorientasi Objek
Dari dua potongan kode di atas, dapat kita ketahui bahwa kelas Dosen
menggunakan variable nim mahasiswa yang terdapat pada kelas Mahasiswa.
Kita dapat menghapus setiap kelas tanpa mempengrahui kelas lain. Hubungan
seperti di atas adalah hubungan asosiasi.
B.2 Agregasi
Hubungan agregasi digambarkan dengan diamond putih, yang ditempelkan
pada kelas yang memiliki, tidak dibubuhkan panah pada ujung yang tidak
memiliki simbol diamond putih. Kemudian juga dibubuhkan kardinalitas seperti
pada hubungan asosiasi.
Jika hubungan asosiasi adalah saling menggunakan, di sini hubungan yang
terjadi adalah memiliki. Dilihat pada gambar kelas diagram di atas, bahwa
kelas Jurusan memiliki kelas Mahasiswa sebagai variable nya. Meskipun kelas
Jurusan memiliki kelas Mahasiswa, namun kedua kelas tersebut dapat dibuat
secara independen.
Penjelasan dengan menggunakan potongan kode akan bisa lebih rinci di
bagian menggunakan kelas lain. Lihat potongan kode di bawah.
Kurnia Rahman Agus, S.S.T 8
Modul Pemrograman Berorientasi Objek
jurusan.java
Potongan kode di atas merupakan lanjutan dari potongan kode pada
bagian asosisasi. Bisa dilihat bahwa pada kelas Jurusan, menggunakan kelas
Mahasiswa sebagai variable di dalamnya, sehingga bisa dibilang bahwa kelas
Jurusan memiliki kelas Mahasiswa. Apabila kelas Mahasiswa dihapus maka kelas
Jurusan tidak dapat berdiri, namun tidak terjadi sebaliknya, kelas Mahasiswa
masih bisa berdiri tanpa terdapat kelas Jurusan. Hubungan seperti ini disebut
agregasi.
Kurnia Rahman Agus, S.S.T 9
Modul Pemrograman Berorientasi Objek
B.3 Komposisi
Komposisi digambarkan menggunakan diamond hitam yang menyatakan
memiliki bagian seperti pada agregasi, tapi lebih spesial. Kemudian
menggunakan garis tidak putus ke kelas yang dimiliki.
Pada paragraf di atas dikatakan “memiliki bagian seperti pada agregasi,
namun lebih spesial”, apa yang menjadikan hubungan komposisi lebih spesial
adalah karena setiap kelas tidak dapat berdiri sendiri. Seperti contoh kelas
diagram di atas, bahwa kelas Komputer tidak akan terbentuk tanpa adanya
kelas Keyboard, Mouse dan CPU. Begitu pula sebaliknya, apabila tidak terdapat
kelas Komputer, maka kelas kelas yang lain tidak akan berfungsi.
Perhatikan potongan kode di bawah.
Kurnia Rahman Agus, S.S.T 10
Modul Pemrograman Berorientasi Objek
cpu.java
keyboard.java
mouse.java
Kurnia Rahman Agus, S.S.T 11
Modul Pemrograman Berorientasi Objek
komputer.java
mainKomputer.java
Dapat dilihat dari file mainKomputer.java bahwa komponen kelas Mouse,
Keyboard, Cpu baru dibuat setelah komputer dibuat. Apabila objek komputer
dihapus maka semua komponen juga terhapus. Begitulah ilustrasi dari
hubungan komposisi.
Kurnia Rahman Agus, S.S.T 12
Modul Pemrograman Berorientasi Objek
C. Penerapan Inheritas
Kita baru perlu menerapkan inheritance pada saat kita jumpai ada suatu class
yang dapat diperluas dari class lain.
Misal terdapat class Pegawai public class Pegawai {public String nama;public
double gaji;} Misal terdapat class Manager public class Manajer
{public String nama;public double gaji;public String departemen;} Dari 2
buah class diatas, kita lihat class Manajer mempunyai data member yang
identik sama dengan class Pegawai, hanya saja ada tambahan data member
departemen.Sebenarnya yang terjadi disana adalah class Manajer merupakan
perluasan dari class Pegawai dengan tambahan data member departemen.
Disini perlu memakai konsep inheritance, sehingga class Manajer dapat kita
tuliskan seperti berikut :
Gambar 2. Listing Program
D. Keuntungan inheritas
• Subclass menyediakan state/behaviour yang spesifik yang
membedakannya dengan superclass, hal ini akan memungkinkan
programmer Java untuk menggunakan ulang source code dari
superclass yang telah ada.
Kurnia Rahman Agus, S.S.T 13
public class Manajer extends Pegawai {
public String departemen;
}
Modul Pemrograman Berorientasi Objek
• Programmer Java dapat mendefinisikan superclass khusus yang bersifat
generik, yang disebut abstract class, untuk mendefinisikan class dengan
behaviour dan state secara umum.
E. Deklarasi inheritas
Di dalam Java untuk mendeklarasikan suatu class sebagai sub class dilakukan
dengan cara menambahkan kata kunci extends setelah deklarasi nama class,
kemudian diikuti dengan nama parentclass-nya. Kata kunci extends tersebut
memberitahu compiler Java bahwa kita ingin melakukan perluasan class.
Berikut adalah contoh deklarasi inheritance:
Gambar 3. Listing Program
Contoh di atas memberitahukan compiler Java bahwa kita ingin meng- extend
class A ke class B. Dengan kata lain, class B adalah subclass (class turunan) dari
class A, sedangkan class A adalah parent class dari class B.
Java hanya memperkenankan adanya single inheritance. Konsep single
inheritance hanya memperbolehkan suatu sublass mempunyai satu parent
class. Dengan konsep single inheritance ini, masalah pewarisan akan dapat
diamati dengan mudah.
Dalam konsep dasar inheritance dikatakan bahwa suatu subclass adalah tidak
lain hanya memperluas (extend) parentclass-nya. Contoh:
Kurnia Rahman Agus, S.S.T 14
public class B extends A{
.....
}
Modul Pemrograman Berorientasi Objek
Gambar 4. Listing Program
Pada saat class Manajer menurunkan atau memperluas (extend) class
Pegawai, maka ia mewarisi data member yang dipunyai oleh class Pegawai.
Dengan demikian, class Manajer mempunyai data member yang diwarisi oleh
Pegawai (nama, gaji), ditambah dengan data member yang ia punyai
(departemen).
F. Kontrol Pengaksesan
Pengaksesan member yang ada di parent class dari subclass-nya tidak jauh
berbeda dengan pengaksesan member subclass itu sendiri. Contoh: Suatu
parent class dapat tidak mewariskan sebagian member-nya kepada subclass-
nya. Sejauh mana suatu member dapat diwariskan ke class lain, ataupun suatu
member dapat diakses dari class lain, sangat berhubungan dengan access
control (control pengaksesan). Di dalam java, kontrol pengaksesan dapat
digambarkan dalam table berikut ini:
Modifier Class yang
sama
package yang sama
subclass Class
subclass Class
manapun
manapun
Kurnia Rahman Agus, S.S.T 15
Private √ Default √ √
Public class Pegawai{ Public String nama; Public
double gaji;
} Public class Manajer extends Pegawai{ Public String
departemen;
}
Modul Pemrograman Berorientasi Objek
F. Rangkuman
Konsep inheritance ini mengadopsi dunia riil dimana suatu entitas/obyek
dapat mempunyai entitas/obyek turunan. Dengan konsep inheritance, sebuah
class dapat mempunyai class turunan. Di dalam Java untuk mendeklarasikan
suatu class sebagai subclass dilakukan dengan cara menambahkan kata kunci
extends setelah deklarasi nama class, kemudian diikuti dengan nama parent
class-nya.
G. Tugas
Penugasan dalam kegiatan belajar untuk adalah melatih keterampilan anda
dengan melakukan proses pengamatan benda dan obyek disekitar anda dan
coba dihubungkan dengan pendekatan berorientasi objek yang akan
memandang sistem yang dikembangkan sebagai suatu kumpulan objek yang
berkorespondensi dengan objek-objek dunia nyata.
No comments:
Post a Comment