Translate

29 Nisan 2015 Çarşamba

Java : Composition (Kompozisyon, Birleşim)

SINIFLARIN TEKRAR KULLANILMASI

Belli bir amaç için yazılmış ve doğruluğu kanıtlanmış olan sınıfları, yeni uygulamaların içerisinde kullanmak hem iş süresini kısaltacaktır hem de yeni yazılan uygulamalarda hata çıkma riskini en aza indirgeyecektir. Uygulamalarımızda daha evvelden yazılmış ve doğruluğu kanıtlanmış olan sınıfları tekrardan kullanmanın iki yöntemi bulunur.

Birinci yöntem kalıtımdır (inheritance).
 Bu yöntemde yeni oluşturacağımız sınıf, daha evvelden yazılmış ve doğruluğu kanıtlanmış olan sınıftan türetilir; böylece yeni oluşan sınıf, türetildiği sınıfın özelliklerine ve işlevlerine sahip olur; Ayrıca oluşan bu yeni sınıfın kendisine ait yeni özellikleri ve işlevleri de olabilir. 
İkinci yöntem ise komposizyon’dur. Bu yöntem sayesinde daha önceden yazılmış ve doğruluğu kanıtlanmış olan sınıf/sınıfları, yeni yazılan sınıfın içerisinde doğrudan kullanabilme şansına sahip oluruz.



Komposizyon

Gösterim-5.1
class Meyva {
  //...
}

  Gösterim-5.2:
 class Elma {
  private Meyva m = new Meyva();}

 Elma sınıfı, Meyva sınıfını doğrudan kendi içerisinde tanımlayarak, Meyva sınıfının içerisindeki erişilebilir olan özellikleri kullanabilir. Buradaki yapılan iş Elma sınıfını Meyva sınıfına bağlamaktır.

Şekil-5.1. Komposizyon-I
Örnek-5.1:  Motor.java 
public class Motor {
  private static int motor_gucu = 3600;

  public void calis() {
        System.out.println("Motor Calisiyor") ;
  }

  public void dur() {
        System.out.println("Motor Durdu") ;
  } 
}

Şimdi bu Motor sınıfını, arabamızın içerisine yerleştirelim;
Örnek-5.2:  AileArabasi.java
public class AileArabasi {
  private Motor m = new Motor();
  public void hareketEt() {
        m.calis();
        System.out.println("Aile Arabasi Calisti");
  }
  public void dur() {
        m.dur();
        System.out.println("Aile Arabasi Durdu");
  }
  public static void main(String args[]) {
        AileArabasi aa = new AileArabasi() ;
        Aa.hareketEt();
        Aa.dur();
  }
}



AileArabası sınıfının içerisine, Motor tipinde global bir alan yerleştirilerek, bu iki sınıf birbirine bağlanmış oldu. AileArabası sınıfının hereketEt() ve dur() metotlarında, önce Motor sınıfına ait yordamlar (methods) direk olarak çağrıldı.

Motor sınıfının private erişim belirleyicisine sahip olan motor_gucu alanına, AileArabasi sınıfının içerisinde ulaşamayız. AileArabasi sınıfı Motor sınıfının sadece iki adet public yordamına (method) erişebilir: calis() ve dur(). Olaylara kuş bakışı bakarsak, karşımızdaki manzara aşağıdaki gibidir. 

Alıntıdır : Dilek Olgaç

Hiç yorum yok:

Yorum Gönder