Anda di halaman 1dari 7

Jumadil Artha Ramadhan

152020-028
TUGAS 6
Inheritance (Pewarisan)

1. Generalisasi dan Spesifikasi


Generalisasi adalah suatu kegiatan pengambilan informasi (baik atribut maupun behavior
atau method) yang sama yang dimiliki oleh beberapa class kemudian dibentuk ke dalam suatu class
baru yang lebih umum. Class-class yang diambil informasi yang dimilikinya akan menjadi suatu
subclass dari class yang baru. Sebagai contoh, class-class Mamalia, Ikan, Burung, Reptilia dan
Amfibia, jika kita lihat kesamaan informasi yang dimiliki oleh ke lima class tersebut sama-sama
memiliki atribut hewan tulang belakang. Berdasarkan kesamaan sifat inilah kita dapat merujuk
suatu class baru yang menjadi superclass dari ke lima class, misalkan class Hewan-Bertula ng-
Belakang.
Contoh lain adalah pada game minecraft, terdapat skeleton, dragon, dan wolf yang
memilihi sifat/behaviour sama, yaitu ketiganya adalah musuh/hostile. Ketiga objek ini dapat
melakukan serangan/attack kepada player. Oleh karena itu, berdasarkan kesamaan sifat inilah kita
dapat merujuk suatu class baru yang menjadi superclass dari ketiga subclass ini, misalkan class
enemy.java.

Selanjutnya, misalkan di dalam game minecraft terdapat friendly, yang memiliki kesamaan
dengan enemy yaitu bisa berbicara, bergerak, dan berinteraksi dengan player. Maka dari kedua
class ini dapat kita ciptakan suatu class baru, misalkan class NPC (Non-Playable Character), yang
menjadi superclass dari kedua class tersebut. Berdasarkan superclass dan subclass yang diperoleh,
maka hierarki class dari class NPC akan menghasilkan diagram seperti berikut ini

Kebalikan dari generalisasi adalah spesifikasi. Spesifikasi merupakan suatu kegiatan


pengambilan informasi yang berbeda yang dimiliki oleh objek-objek dari suatu class dan kemudian
menciptakan suatu class baru yang menjadi suatu subclass dari class sebelumnya. Misalkan dari
class enemy.java tadi, kita jadikan superclass dari para sub-class di bawahnya. Contoh subclass
misalnya ada Wolf, Skeleton, dan Dragon. Kemudian class dragon dibuatkan subclass lagi menjadi
greenDragon dan redDragon.

2. Pengertian Pewarisan/Inheritance
Inheritance adalah suatu mekanisme yang disediakan oleh bahasa pemrograma n
berorientasi objek dalam pendefinisian class - class baru dari class-class yang sudah ada
sebelumnya. Inheritance ini menggunakan konsep re-use class. Inheritance merupakan hubunga n
“is-a”. Misalnya terdapat tiga class dalam game minecraft, yaitu skeleton.java, dragon.java, dan
wolf.java. Ketiga class ini nantinya memiliki object yang berbeda-beda, namun memiliki beberapa
kesamaan. Karena mereka adalah ‘enemy’ dari player, maka mereka akan mewariskan state dan
behaviour dari satu class lain, misalkan class enemy.java. Beberapa persamaan dari tiga class ini
misalnya adalah Atribut name, health, attackpoint beserta method attack() dan defense(). Berikut
ini adalah class diagramnya:
3. Abstract
Class abstrak adalah class yang masih dalam bentuk abstrak. Karena bentuknya masih
abstrak, dia tidak bisa dibuat langsung menjadi objek. Sebuah class agar dapat disebut class abstrak
setidaknya memiliki satu atau lebih method abstrak. Method abstrak adalah method yang tidak
memiliki implementasi atau tidak ada bentuk konkritnya.
Kelas pertama yang penulis buat adalah abstract class enemy.java. Pada kelas ini terdapat
inisialisasi konstruktor class enemy dan atributnya. Kemudian ada method move() dan display()
serta ada setSpeed untuk atribut speed. Method display berfungsi untuk menampilkan infor mas i
name dan speed dari objek nantinya. Sementara move adalah abstract method yang nantinya akan
digunakan di tiga kelas selanjutnya.
Tiga kelas selanjutnya yaitu skeleton, wolf, dan dragon yang mewariskan (inherit) dari
class enemy. Pada tiga class ini terdapat inisialisasi nama atribut dan overrride method move().
Setiap class memiliki formula yang berbeda untuk speed nya sesuai dengan game yang memilik i
variasi untuk setiap tipe objek.
Selanjutnya adalah MainAbstract yang merupakan main class. Dalam class ini terdapat
inisialisasi ketiga objek. Kemudian ketiga objek ini menggunakan method move() untuk setSpeed
dan display() untuk menampilkan objek.
Output:
4. Interface
Interface merupakan suatu mekanisme yang disediakan oleh java yang memungkinka n
berbagi konstanta atau menentukan bentuk metode yang dapat digunakan oleh sejumlah kelas.
Beda interface dengan kelas abstrak adalah :
- Kelas abstrak dapat mengandung metode abstrak maupun metode tidak abstrak, sedangkan
interface hanya dapat mengandung metode abstrak
- di class abstrak kita bisa buat atribut atau variabel sedangkan di interface kita cuma bisa buat
konstanta saja
- di class abstrak dapat memiliki member private dan protected sedangkan interface harus publik
semua
- Class abstrak diimpelentasikan dengan pewarisan (extends) sedangkan interface
menggunakan implements
Sederhananya, Interface sangat mirip dengan class, tetapi pada interface tidak
diperbolehkan pendeklarasian variabel instan dan method pada interface dideklarasikan tanpa
memberikan implementasi terhadap method yang kita deklarasikan. Artinya, secara praktek kita
dapat mendefinisikan interface tanpa merujuk rincian implementasinya.

Pada gambar di atas terlihat interface Operasi.java dan OperasiScientific.java. Pada kedua
interface ini kita hanya memiliki beberapa method tanpa tubuh/body/. Inilah yang dimaksud pada
poin 1 perbedaan antara abstract dan interface tadi. Selanjutnya adalah class Kalkulator.
Class Kalkulator menggunakan interface
Operasi dan OperasiScientific dengan menggunaka n
keyword implements. Program di atas menggunaka n
interface sebagai ‘induk’ nya, yang membedakan
dengan class induk yaitu interface hanya
mendeklarasikan method-methodnya saja (bentuk
blueprint). Baru method tesebut akan
diimplementasikan oleh class-class yang
mengimplementasikan interface tersebut. Dengan
kata lain interface hanya mendeklarasikan method-
method tanpa tubuh (hanya rancangan) dan dapat
mengimplementasikan sifat-sifat umumnya pada
class-class lain yang mengimplementasikannya.

Terakhir ada Main Class, di main class ini diisi dengan output judul dari program yang
berupa konstanta dari interface sebelumnya. Selanjutnya kita melakukan new object Kalkulator
dengan paramater nilai x dan y. Di bagian selanjutnya berisi println dari hasil kalkulasi dari
method-method yang sudah diinisialisasi di class sebelumnya. Ouput dapat dilihat pada gambar
berikut ini:
-----------------------------------------------TERIMA KASIH----------------------------------------------

Anda mungkin juga menyukai