Inheritance aslında
Oject Oriented Programming!in (Nesne Yönelimli Programlama) üç prensibinden bir
tanesidir. Diğer iki prensip ise encapsulation ve polymorphism’dir. Tabii ki diğer
iki prensibe bu yazıda değinmeyeceğim. En sade şekliyle: inheritance sayesinde
bir sınıfın metodlarını kullanan başka sınıflar türetilebilmesine yarar
diyebiliriz. Ancak ayrıntılarına birazdan ineceğim. Eğer daha önce nesne tabanlı
bir programlama dili kullandıysanız, (Java ve C++ gibi) C#’ta inheritance’a çok
çabuk adapte olursunuz. Aslında şu ana kadar bahsettiklerim genel kültürden
ibaretti ve eminim çoğunuz da bunları biliyordunuz. (Nesne Tabanlı Programlama
geçmişi olmayanları da düşünerek böyle bir giriş yaptım.)
Evet şimdi ana kısma
yani programın nasıl yazılacağına geliyoruz. Bunun için basit bir örnek vereceğim.
Düşünün ki student adında bir sınıfımız(class) olsun. Ayrıca bir de teacher adında
bir sınıfıımız olsun. Bunların ortak özellikleri nedir? Tabii ki insan olmaları
diyeceksiniz ve ana sınıfımıza yani person sınıfına ulaşmış olacaksınız. Şimdi
basitçe özetlersek person sınıf’ından teacher ve student adında
iki sınıf türetmiş olduk. Sırada bunun kodunu nasıl yazacağımız var. Alışkanlıklara
devam edip adım adım kodu yazalım. (Bunu program yazarken de ilke edinirseniz
faydalı olacağına inanıyorum. Önce ne yapacağınızı adım adım belirleyin sonra
belirlediklerinizi adım adım uygulamaya geçirin.)
I. İlk önce
person sınıfını yazalım.
using System;
using
System.Windows.Forms;
namespace Miras
{
public abstract
class Person
//sınıfın sadece
türetileceğini
//belirtmek için sınıfı abstaract keyword’ünü kullanarak soyutladık
//Ancak burada abstaract keyword’ünün kullanılmasındaki temel
//belirtmek için sınıfı abstaract keyword’ünü kullanarak soyutladık
//Ancak burada abstaract keyword’ünün kullanılmasındaki temel
//faktör bu sınıfın
abstract metod içermesidir.
{
//Türetilen sınıflarda
kullanılmak üzere 3 tane değişken tanımladık.
protected string
Name;
protected int
Age;
protected string
Gender;
//Türetilen sınıflarda
metodun içi doldurulması için
//abstract
olarak makeAction metodu tanımladık
public abstract
void makeAction();
public Person()
{
}
}
}
}
II. Şimdi de
Student sınıfını yazalım.
using System;
using
System.Windows.Forms;
namespace Miras
{
//Student class'ı
Person class'ından miras aldığını belirtiyoruz.
public class
Student:Person
{
//Person sınıfında
tanımlanan abstract metodu override ederek
//metodun içini
istediğimiz gibi doldurduk.
public override
void makeAction()
{
MessageBox.Show("Ben
bir öğrenciyim");
}
public
Student(string name,int age,string gender)
{
this.Name=name;
this.Age = age;
this.Gender=gender;
}
}
}
III. Sıra
Teacher sınıfını yazmaya geldi.
using System;
using
System.Windows.Forms;
namespace Miras
{
public class
Teacher:Person //Teacher class'ı Person class'ından
// miras alıyor
{
private string
Unvan; //Teacher sınıfında kullanılmak üzere
//Unvan adında
bir değişken tanımladık.
//Person sınıfında
tanımlanan abstract metodu override ederek
//metodun içini
istediğimiz gibi doldurduk.
public override
void makeAction()
{
MessageBox.Show("Ben
bir öğretmenim");
}
public Teacher(string
name,int age,string gender,string unvan)
{
this.Name=name;
this.Age = age;
this.Gender=gender;
this.Unvan=unvan;
}
}// teacher sınıfının
sonu
}// Miras isim
uzayının sonu
Şimdi dikkat
edilmesi gereken noktaları sıralayalım:
I. Abstaract
(soyut) sınıftan yeni bir sınıf türetilemez. Örneğimizde person sınıfı abstract
sınıftır ve new anahtar sözcüğü kullanılarak yeni nesne oluşturulmaz.
II. Abstract
metodların mutlaka içleri boş olarak yaratılır ve türetildikleri sınıflarda (en
az bir sınıf türetilmek zorunda) mutlaka içleri override anahtar sözcüğü kullanılarak
doldurulur.
III. Bir sınıftan
miras yolu ile başka bir sınıf türetileceği zaman temel sınıf(base class) illa
ki abstract anahtar sözcüğü ile tanımlanmak zorunda değildir. (Eğer abstract metod
içermiyorsa.)
Student Action
butonunu tıklarsanız Student sınıfının içindeki makeAction metodu çalışır. Daha
sonra da windows formu yaratıldıktan hemen sonra yaratılan student nesnesinin
Name, Age, Gender değişkenleri bir mesaj kutusu aracılığıyla görüntülenir.
Teacher Action
butonunu tıklarsanız Teacher sınıfının içindeki makeAction metodu çalışır. Daha
sonra da windows formu yaratıldıktan hemen sonra yaratılan teacher nesnesinin
Unvan, Name, Age, Gender değişkenleri bir mesaj kutusu aracılığıyla görüntülenir.
Hiç yorum yok:
Yorum Gönder