![]() |
| | #1 (permalink) |
| Kalıtım nesne tabanlı programlamanın üç temel ögesinin en önemlisidir. Çünkü, kalıtım hiyerarşik sınıflandırma oluşturmayı sağlar. Konuyu biraz açmak gerekirse birbiriyle bağlantılı bir grup elemanın ortak özelliklerinden oluşan bir sınıf oluşturulabilir. Bu sınıf daha sonra yeni değişiklikler yapılarak daha özel sınıflara kalıtım yoluyla aktarılır ve her sınıf kendisinde bulunan ek özellikleri buna aktarır. Böylece uygulamanın yeni baştan yazılmasına gerek kalmaz. Nesne tabanlı programlamada kalıtım yoluyla aktarılan sınıf, Temel sınıf’tır. Kalıtım işlemi yapılmış olan sınıf da oluşturulmuş (türetilmiş) sınıftır. Türetilmiş sınıf, temel sınıf tarafından tanımlanan tüm metot, özellik, operatör ve değişkenleri kalıtım yoluyla elde eder ve sadece kendisinde kullanılacak özellikleri, değişkenleri, metotları vb.yi kendisine ekler. Kalıtımın kullanım şekli şöyledir: Kod: Namespace Kalıtım
{
class Temel Sınıf
{
// Program Kodları
}
class Mirasçı Sınıf : Temel Sınıf
{
//Eklenecek metotlar
}
}
sınıfın ismini takip eder ve birbirlerinden : (iki nokta) ile ayrılır. : operatörü bir sınıfın, başka bir sınıfın özelliklerini devralmasını sağlar. Örnek ![]() Tablo 3.1: Kalıtımsal gösterim ( Sarı renktekiler temel sınıf, tümü ise türeyen sınıftır.) Yeni oluşturulmuş her sınıf için sadece bir temel sınıf belirtilir. Tek bir türetilmiş sınıfa birden fazla sınıf kalıtım yoluyla aktarılamaz. Türetilmiş olan bir sınıf başka bir türetilmiş sınıfın temel sınıfı olabilir. Kalıtımın avantajı, temel sınıf oluşturulduktan sonra istenilen sayıda türetilmiş sınıf oluşturmaktır. Örnek Temel sınıfla türeyen sınıfın çalışma mantığı aşağıdaki gibidir. ![]() Programda bir ana sınıf ve ana sınıftan türeyen bir mirascı sınıf olmak üzere iki sınıf oluşturulmaktadır. Program satır satır işletildiğinde, Main() metodunda mirasci adında bir üye değişken oluşturulur ve Mirasci_Sinif() metoduna yönlendirilir. Mirasçı sınıf ta ana sınıftan türetildiği için program akışı Ana_Sinif() metoduna geçer. Ana_Sinif() metodunda mesaj yazdırıldıktan sonra mirasçı sınıftaki mesaj yazdırılır. Main() metodundaki “mirasci.yazdir();” satırıyla program akışı ana sınıftaki yazdır metoduna yönlendirilerek bu metottaki mesaj yazdırılarak işlem sona erer. Bu aşamaların sonunda çalıştırılan kodların ekran görüntüsü resim 3.2’deki gibi olacaktır. ![]() Resim 3.2: Kalıtımın çalışma mantığının ekran görüntüsü Kalıtımla ilgili bir başka örnek vermek gerekirse; aşağıdaki örneği inceleyiniz. ![]() Programda yine bir ana sınıf ve ana sınıftan türeyen bir mirasçı sınıf olmak üzere iki sınıf oluşturulmaktadır. Main() metodunda “mirasci” adında türeyen sınıfa ait bir üye değişken oluşturulmakta ve program akışı Mirasci_Sinif() metoduna yönlendirilmektedir. Mirasci_Sinif() metodunda kullanılan base komutuyla string bir ifade mirasçı sınıf işletilmeden ana sınıfa gönderilmekte ve ana sınıfta bir değişkenle bu ifade karşılanmaktadır. Karşılanan bu ifade Ana_Sinif() metodunda yazdırıldıktan sonra program akışı Mirasci_Sinif() metoduna dönmekte ve bu sınıftaki mesajın yazdırılması gerçekleşmektedir. Yazdır metodu her iki sınıfta kullanılmaktadır. Mirasçı sınıftaki yazdır metodunun new ile tanımlandığına dikkat ediniz. Böylece her iki yazdır metodu birbirinden ayrılmaktadır. “mirasci.yazdir()” satırıyla program akışı new ile tanımlanan yazdır metoduna yönlendirilir. Bu metodun ilk satırında bulunan “base.yazdir();” komut satırıyla da ana sınıf içinde bulunan yazdır metodunu çalıştırır. Ana sınıftaki yazdır metodunda bulunan mesaj yazdırıldıktan sonra program akışı “base.yazdir();” satırından sonraki satıra geçer ve new ile yeniden tanımlanan yazdır metodundaki mesajı yazar. “((Ana_Sinif)mirasci).yazdir();” satırıyla oluşturulan “mirasci” üye değişkeni kullanılarak ana sınıfın yazdır metoduna program yönlendirilir ve bu metottaki mesaj yazdırılmış olur. Verilen bu örnekle türetilmiş bir sınıfın ana sınıfla iletişimi gösterilmektedir. Kod satırları derlenip çalıştırıldığında ekran görüntüsü resim 3.3’te görüldüğü gibi olur. ![]() Resim 3.3: Türetilmiş sınıf ile ana sınıfın iletişimi örneği Kaynak : MEGEP | Nesne Tabanlı Programlama 3
__________________ Beni Sevmek İçin Programlanma Devrelerini Yakarım ! | |
| | |
![]() |
| Seçenekler | |
| Stil | |
| |
Benzer Konular | ||||
| Konu | Konuyu Başlatan | Forum | Cevaplar | Son Mesaj |
| Kalıtım (Inheritance) Nedir ? | Taner | Programlama | 0 | 12-08-2009 00:48 |