4 Temmuz 2013 Perşembe

C#’ta Inheritance(Miras) Kavramı

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
//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