Home > OO Programming > IS-A dan HAS-A

IS-A dan HAS-A

Ketika suatu kelas diturunkan dari kelas lain maka kita menyebutnya subclass extends superclass. Nah bagaimana kita menentukan suatu kelas adalah turunan dari kelas yang lain ? Testlah terlebih dahulu dengan IS-A

Segitiga IS-A Shape. Apakah segitiga itu bentuk ? . ya .. benar. Jadi kita dapat menextends Segitiga dari Shape.

Cat IS-A Feline. Apakah kucing merupakan family kucing. Yaps benar. Sangat benar pun malah.

Surgeon IS-A Doctor. Apakah Ahli bedah itu merupakan dokter. Yups.

Nah sekarang kita akan berlatih …

Apakah Oven extends Kitchen (dapur) ? jadi kita ubah dulu bentuknya ke dalam bahasa manusia. Hehe. Apakah Oven adalah dapur ? Wow.. Tentu saja tidak. Jadi salah kalau misalnya kita menextends oven dari kitchen.

Tapi keduanya memiliki hubungan bukn ?? Oven emang berelasi dengan kitchen tapi bukan dengan inheritance. Keduanya berhubungan melalui HAS-A. Jadi lebih masuk akal apabila kita mengatakan Kitchen HAS-A Oven. Maksudnya dalam code. Brarti Kelas Kitchen akan memiliki instance variable dengan tipe Oven.

public class Oven {
	...	
	public void On() { ... }
}

public class Kitchen {
	Oven oven;
	// anggaplah ini smart kitchen . jadi semua serba otomatis

	public void MakeCookie() {
		oven.On();
		...
	}
	
	...
}

IS-A relationship berlaku pada keseluruhan inheritance tree. Jika kelas B extends kelas A, Class B IS-A Class A. Dan jika kelas C extends kelas B maka. Class C akan lulus test IS-A untuk kelas B dan kelas A.

animalt

Jadi kita tau bahwa inheritance kita itu benar dengan test IS-A. IS-A relationship hanya berlaku satu arah. Jadi jika kita bilang bahwa Triangle IS-A Shape. Tapi tidak berlaku untuk kebalikannya. Shape is Triangle. Belum tentu kan ??

jadi bagaimana dengan Guitar extends Instrument ?

Categories: OO Programming Tags: ,
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: