www.gizliorman.net
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Bu site Secret-Forestin hayranları içindir.
 
AnasayfaGaleriLatest imagesAramaKayıt OlGiriş yap

 

 Profili Göster ActionScript 3.0 : Nesne Yönelimli Programlama VI : Inheritance (Kalıtım)

Aşağa gitmek 
YazarMesaj
wantedteams




Erkek Mesaj Sayısı : 114
Yaş : 32
Nerden : Pardon Secretmelos.
Lakap : Ne diyorsun ya.
Kayıt tarihi : 09/02/09

Profili Göster ActionScript 3.0 : Nesne Yönelimli Programlama VI : Inheritance (Kalıtım) Empty
MesajKonu: Profili Göster ActionScript 3.0 : Nesne Yönelimli Programlama VI : Inheritance (Kalıtım)   Profili Göster ActionScript 3.0 : Nesne Yönelimli Programlama VI : Inheritance (Kalıtım) Icon_minitimePerş. Şub. 12, 2009 11:14 am

Bir sınıfa ait tüm metot ve özelliklerin (private olanlar hariç) otomatik olarak başka sınıf veya sınıflar tarafından kullanılmasına kalıtım (Inheritance) denir. Başka bir ifadeyle kalıtım, bir sınıftan başka bir sınıf türetmedir.

Nesne Yönelimli Programlamanın en temel taşlarından biri olan kalıtım sayesinde hazır olan kodlar başka sınıflar tarafından da rahatlıkla kullanılabilir. Böylelikle kodları gereksiz yere tekrar yazmadan diğer sınıflarda aynı özelliklerinden yararlanabilirler. Bu programcıya zaman ve enerji sağlayacaktır. Bu arada Fash UI (User Interface Component) bileşenlerinin de açık bir şekilde kalıtımı kullandığını söylemek gerekir. Bir sınıftaki özelliğin, diğer tüm sınıflar tarafından ortak olarak kullanılmasına Polymorphism de denir. Polymorphism’de aynı zamanda kalıtımda söz konusudur.

Kalıtımın alındığı üst sınıfa “superclass”, kalıtımı kullanan alt sınıfa “subclass” denir. Superclass’a baseclass adı da verilmektedir. Alt sınıf(subclass), üst sınıfı(superclass) genişletir. Başka sınıflardan kalıtım yoluyla özellikleri almak için “extends” anahtar sözcüğü kullanılır.



Önemli! Bir sınıfın içinde sadece bir kalıtım yapılabilir.
Önemli! “final” olarak belirilen sınıflara kalıtım uygulanamaz.
Ayrıca flashın içinde hazır bulunan (built-in) sınıflara da kalıtım uygulanabilir.

class Vahsi extends MovieClip
{
} Örnekte, “Vahsi” adlı sınıf, “MovieClip” sınıfının tüm özellik ve metotlarını kalıtım yoluyla miras almıştır. “Vahsi” adlı sınıf artık movieclip gibi davranacaktır.



Yukarıdaki şekle göre sınıfların kalıtım özellikleri incelenecek olursa;

Canlılar Sınıfı: Superclass (Base Class). Bitkiler ve Hayvanlar sınıfının üst sınıfıdır.

Bitkiler Sınıfı: Subclass. Canlılar sınıfının alt sınıfıdır.

Hayvanlar Sınıfı: Superclass ve Subclass. Canlılar sınıfının alt sınıfı, Vahşi Hayvanlar ve Evcil Hayvanlar sınıflarının üst sınıfıdır.

Subclass, superclass’ın üstündeki bir sınıftan (grandparent) kalıtım alamaz. Örnekte Evcil Hayvanlar, üst sınıfı olan Hayvanlar sınıfından kalıtım alabilirken, onun bir üstünde bulunan Canlılar sınıfından kalıtım alamaz.



Şekilde görüldüğü gibi Vahsi ve Evcil sınıfları, Hayvanlar sınıfından türetilmiş sınıflardır. Vahsi sınıfı, Hayvanlar sınıfının tüm özelliklerine sahip olmakla beraber kendine ait avlan() metoduna da sahiptir. Aynı şekilde Evcil sınıfı da, Hayvanlar sınıfının tüm özelliklerini barındırırken aynı zamanda da egit() adlı metoda sahiptir.



package
{
public class Hayvanlar
{
public var tur:String;
public function beslenme()
{
trace("Hayvanlar Beslenme");
}
public function barinma()
{
trace("Hayvanlar Barınma");
}
public function ureme()
{
trace("Hayvanlar Üreme");
}
}
}Yukarıdaki örnekte Hayvanlar sınıfı oluşturularak, beslenme(),barinma() ve ureme() metotları tanımlandı.



package
{
public class Vahsi extends Hayvanlar
{
public function Vahsi()
{
beslenme();
barinma();
ureme();
avlan();
}

public function avlan()
{
trace("Vahşi Avlan");
}
override public function beslenme() {
trace("Vahşi Beslenme");
}
}

}Bu örnekte ise; Hayvanlar sınıfının tüm özellikleri “extends” anahtar sözcüğü ile Vahsi sınıfına aktarıldı. ( public class Vahsi extends Hayvanlar )

Ancak Vahsi sınıfında da kendine ait bir beslenme() metodu olduğu için, Vahsi sınıfı bu metodu üst sınıfı (superclass) olan Hayvanlar sınıfından almak istemediği için “override” anahtar sözcüğü ile üst sınıfın metodunu geçersiz kılıp kendi beslenme() metodunu kullandı.

(override public function beslenme() )

var miras:Vahsi=new Vahsi();

/* Ekran Çıktısı:
Vahşi Beslenme
Hayvanlar Barınma
Hayvanlar Üreme
Vahşi Avlan
*/Oluşturulan “Vahsi.fla” dosyasında Vahsi sınıfının bir örneği olan “miras” nesnesi ile, Vahsi() yapılandırıcı fonksiyonu çağrılıp yukarıdaki ekran çıktısı elde edilmiştir.

super operatörü: Superclass ve subclass sınıflarının ikisinde de aynı metod varsa, derleyiciye hangi metodun kullanılacağını belirtmek gerekir. Eğer subclass metodu kullanılacak ise; “override” anahtar sözcüğü kullanılmalıdır. Superclass metodu kullanılacaksa “super” anahtar sözcüğü kullanılmalıdır.

Override (Metotları Geçersiz Kılma): Üst sınıftan miras alınan metotların, alt sınıf tarafından kullanılmayıp, alt sınıfın kendi metodunu kullanma olayına overriding denir. Override işlemlerinde şunlara dikkat edilmelidir:

“static” metotlar override yapılamaz.
Superclass’ta “private” olarak belirtilen metotlar override yapılamaz.
“final” anahtar sözcüğü ile belirtilen metotlar override yapılamaz.
Superclass içinde “var” ve “const” anahtar sözcükleriyle tanımlanan değişkenler override(geçersiz) yapılamaz.
Subclass’ta override yapılacak metotun erişim özelliği ile superclass’taki metodun erişim özelliği aynı olmalıdır.
Subclass’ta override yapılacak metotun adı ile superclass’taki metodun adı aynı olmalıdır.
Subclass’ta override yapılacak metodun alacağı parametre sayısı ile veri tipi superclass’taki metodun alacağı parametre sayısı ile veri tipi aynı olmalıdır.
Aşağıdaki örnekte superclass ve subclass’ta ortak olarak bulunan beslenme() metodunun çağrılması gösterilmiştir. super.beslenme(); ifadesi ile üst sınıf olan Hayvanlar sınıfındaki beslenme() metoduna ulaşılmış ve ekrana “Hayvanlar Beslenme” çıktısı yazdırılmıştır.

beslenme(); ifadesi ile override (üst sınıf metodunu iptal etme) özelliği ile Vahsi sınıfının kendi metoduna ulaşılmıştır. Böylece Vahsi sınıfının beslenme() metodundaki “Vahşi Beslenme” ifadesi ekrana yazdırılmıştır.

package
{
public class Vahsi extends Hayvanlar
{
public function Vahsi()
{
super.beslenme(); // superclass'taki metodu kullanır.
beslenme(); // subclass'taki metodu kullanır.
barinma();
ureme();
avlan();
}

public function avlan()
{
trace("Vahşi Avlan");
}
override public function beslenme()
{
trace("Vahşi Beslenme");

}
}
}Superclass içinde “private” olarak belirtilen tüm metot ve özelliklere “subclass” içinden doğrudan ulaşılamaz. Superclass’taki private metodu değiştirmek için get ve set metotları kullanılmalıdır.

Superclass içindeki bir metodun, subclass tarafından iptal edilmesi (override) istenmiyorsa, superclass içindeki o metotun özelliği “final” yapılmalıdır.



package
{
public class Hayvanlar
{

public var tur:String;
final function beslenme()
{
trace("Hayvanlar Beslenme");
}
public function barinma()
{
trace("Hayvanlar Barınma");
}
public function ureme()
{
trace("Hayvanlar Üreme");
}
}
}

package
{
public class Vahsi extends Hayvanlar
{
public function Vahsi()
{
beslenme();
barinma();
ureme();
avlan();

}
public function avlan()
{
trace("Vahşi Avlan");
}
override public function beslenme()
{
trace("Vahşi Beslenme");

}
}
}


var miras:Vahsi=new Vahsi(); // Derleyici hata veriyor.Yukarıdaki örnekte, subclass olan Vahsi sınıfı, superclass olan Hayvanlar sınıfındaki beslenme() metodunu override yapamaz. Çünkü; beslenme() metodu superclass’ta “final” olarak tanımlanmıştır.

Yazan: Muttalip TULGAR
Sayfa başına dön Aşağa gitmek
 
Profili Göster ActionScript 3.0 : Nesne Yönelimli Programlama VI : Inheritance (Kalıtım)
Sayfa başına dön 
1 sayfadaki 1 sayfası
 Similar topics
-
» ActionScript 3.0 : Nesne Yönelimli Programlama VII : Interfaces (Arabirimler)
» ActionScript 3.0 : Nesne Yönelimli Programlama V : Encapsulation (Kapsülleme)
» ActionScript 3.0: Nesne Yönelimli Programlama IV: Sınıf Yolları
» ActionScript 3.0: Nesne Yönelimli Programlama III: Package (Paketler)
» AS3 dart oyunu programlama dersleri

Bu forumun müsaadesi var:Bu forumdaki mesajlara cevap veremezsiniz
www.gizliorman.net :: Flash Dersleri-
Buraya geçin: