11 Aralık 2014 Perşembe

IS-A ve HAS-A Kavramları

S.a. Arkadaşlar,
Bugün IS-A ve HAS-A konularını işlemeye çalışacağız. Öncelikle kalıtımın java için vazgeçilmez bir iş olduğunu kabullenmek gerekir. Peki nedir bu kalıtım ne işe yarar diye sorarsak , kısaca;
-          Kod tekrarından kurtuluruz
-          Kalıtım sayesinde bir sınıftan birden fazla sınıf türetebiliriz.

Peki IS-A ve HAS-A kalıtımın neresinde kalıyor diye sorarsanız biraz da onu açıklayalım.
Bilindiği gibi java’da sınıflar birbirinden türer demiştik. Bunu da kodla açıklamaya çalışalım öyle daha kalıcı/anlaşılır olabiliriz.

public class Car {
  gasaBas(){}
}
public class Ferrari extends Car {
  turbo(){}
}

        Arabalar diye bir sınıfımız var. Ve burada birden çok markası olduğunu varsayalım ve her birinin de gaza bas() özelliği olsun. Bu özellik her arabada bulunan bir şeydir. Bu nedenle Car sınıfı altına koyup her defasında tekrar tekrar tanımlamaya gerek yoktur. Fakat turbo() her arabada değil Ferrari’den olan bir özellik olduğu için Ferrari Classına tanımlamış olduk ve Ferrari is a Car olmuş oldu. Yani Ferrari bir arabadır. Kısaca is-a böyledir.

                Şimdi de has-a kavramına bakalım. Has-a kavramı da bir sınıfın farklı bir sınıftaki objesini kullanmasını ifader. Yani yukarıdaki örnekte Ferrari’nin bir motoru olsun ve biz bunu Car adı altında kullanalım. Fakat Ferrari olmadan motorunun da bir önemi yoktur. Onlar birlikte ya vardırlar ya yoktur. Buradaki kavrama da has-a diyoruz. Onu da kodlarsak dediğimiz havada kalmaz diye umuyorum.

public class Motor extends Ferrari {
                 //kodlar
}

                public class Motor {
   Private Motor motor;
   public void Motor(){
         this.motor= new Motor();
}
}

Elimizden geldiğince dilimiz döndüğünce konuyu anlatmaya çalıştık. Bir eksiğimiz olduysa affola . Kolay Gelsin.
Kaynak

Hiç yorum yok:

Yorum Gönder