Kalıtım
Yapıcı metot
Kurucu metot
ve Yapılandırıcı aynı anlamda
kullanılmıştır.
Bu ifadeler, Constructor denilen kavramı
karşılamak için kullanılmıştır.
Kalıtım
• Önceleri programcılar, var olan program kodlarına
benzer kodlar yazarlardı.
• Örneğin: Bir insan kaynakları sistemi değişik çeşitlerde
personelin bilgisini tutabilir. Ancak, bu değişik
çeşitlerdeki personel aslında ortak birçok özelliğe de
sahiptir.
• Bu, daha önceleri aynı program kodunu değişik yerlere
kopyalama, yapıştırma ve üzerinde değişiklik yapma
şeklinde yapılıyordu.
• Bu durum ise aynı kodun farklı kişiler tarafından tekrar
tekrar yazılmasına sebep olan etkin olmayan bir
yöntemdi.
Kalıtım
Çözüm olarak kalıtım mantığı ile nesneleri hiyerarşik olarak organize etmek önerildi.
Bu yaklaşımlar nesne tabanlı programlama olarak adlandırıldı.
Herhangi bir şeyi organize etmede kullanılan hiyerarşi şu şekildedir:
Eleman
Çalışan
SaatÜcretli
Danışman
Gönüllü
AylıkMaaşlı
(ana)süper sınıf (superclass)
Eleman sınıfının alt sınıfı
Çalışan sınıfının alt sınıfı
SaatÜcretli sınıfının alt sınıfı
İlişkileri “olmak” (is a) şeklinde düşünebilirsiniz.
Bir çalışan aynı zamanda elemandır. Bir gönüllü de
elamandır.
Saat ücretli bir kişi aynı zamanda çalışandır.
Bir danışman saat ücretli çalışan birisidir.
Sınıflar ve Alt Sınıflar
“private” ve
“public”
konularını
hatırlayın
class Hayvan {
public String ad = "";
public String ses = "";
public int numTimesPerformed
= 0;
// yapıcı metot(lar) burada yazılacak
Public Hayvan(){}
//string parametresi alan setName metodunu tanımla
Hayvanlar, bir isme
sahiplerdir ve
kendilerini
tanımlayabilirler ve
bunun yanında
herhangi bir şeyi
yapabilirler.
//bilgileri ekrana basan metot
public void identifySelf( ) {
System.out.println(“Benim adım “ + ad);
} // ekrana ad bastir
public void perform( ) {
doYourThing( );
numTimesPerformed++;
}
= new Hayvan();
// # yapılması gereken davranışlarıHayvan
buraya minik
kodlanır
minik.setName(“Bulut”);
public void doYourThing( ) {
minik.doYourThing();
; // „no-op‟ method
// hiçbir şey söylemez
} // boş metot
} //Hayvan sınıfı sonu
Alt Sınıflar
(Köpek, Hayvandan türer
Örneğin: “Köpek bir
hayvandır” ya da
“Bütün köpekler hayvandır”)
class Kopek :: Hayvan {
public Kopek() {
ses = “Hav”;
} // yapıcı metot sonu
Hayvan
Köpek
Kedi
İnek
Hayvan sınıfı hiç bir
şey yapmayan
doYourThing()
metoduna sahiptir.
public void doYourThing ( ) {
identifySelf();
Console.WriteLine(“Ben bir köpeğim”);
Console.WriteLine(ses);
} // of doYourThing
Kopek bidik = new Kopek();
bidik.setName(“Bıdık”);
} // Kopek sınıfının sonu
bidik.doYourThing();
//Kodlar son halinde değildir
// çıktı:
//Mantığını anlamanız için ve
// “Benim adım Bidik”
//Karışıklık olmaması için
// “Ben bir köpeğim”
//Bazı kısımlar eklenmemiştir
// “Hav”
Alt Sınıflar
(Kedi, Hayvandan türer.
Örneğin: “Kedi bir
hayvandır” ya da
“Bütün kediler hayvandır”)
Hayvan
Köpek
Kedi
İnek
class Kedi :: Hayvan {
public Kedi() {
ses = “miyav”;
} // yapılandırıcı sonu
public void doYourThing ( ) {
identifySelf();
Console.WriteLine(“Ben bir kediyim”);
Console.WriteLine(ses);
} // of doYourThing
Kedi pamuk = new Kedi();
pamuk.setName(“Pamuk”);
} // Kedi sınıfının sonu
pamuk.doYourThing();
// çıktı:
// “Benim adım Pamuk”
// “Ben bir kediyim”
// “miyav”
Alt Sınıflar
(İnek, Hayvandan türer.
Örneğin: “İnek bir hayvandır” ya da
“Bütün inekler hayvandır”)
Hayvan
Köpek
Kedi
İnek
class Inek :: Hayvan {
public Inek() {
ses = “mö”;
} // yapıcı metot sonu
public void doYourThing ( ) {
identifySelf();
Console.WriteLine(“Ben bir ineğim”);
Console.WriteLine(ses);
} // of doYourThing
Inek sarikiz = new Inek();
sarikiz.setName(“Sarıkız”);
} // Inek sınıfının sonu
sarikiz.doYourThing();
// çıktı:
// “Benim adım Sarıkız”
// “Ben bir ineğim”
// “mö”
Sorular?
Kalıtım ve Görünürlük Alanı
(scope)
base ve this kullanımı
Kalıtım ve Görünürlük alanı (Scope)
Değişkenler (örneğin: ses):
• Öncelikle içinde bulunulan metot incelenir,
• Yerel değişkenler ve parametreler kontrol edilir;
• Daha sonra, o anki sınıfı incelenir (örneğin: Kopek);
• Daha sonra, süper sınıfı incelenir (örneğin: Hayvan);
• Hiyerarşi boyunca ilerleyerek hiç bir süper sınıf
kalmayıncaya kadar incelemeye devam eder.
Metodlar (örneğin: doYourThing() ya da identifySelf()):
• ilk önce o anki sınıf incelenir;
• Daha sonra, süper sınıf incelenir;
• Hiyerarşi boyunca ilerleyerek hiç bir süper sınıf
kalmayıncaya kadar incelenmeye devam eder.
Görünürlük alanının belirlenmesi
C# size, görünürlük alanıyla ilgili kuralları yeniden
belirlemenize izin verir. Hangi değişkene ya da metoda hitap
ettiğinizi söyleyebilirsiniz:
this deyimi:
O anki aktif nesneye ait bir değişkene ya da metoda
ulaşmak için kullanılır. Örneğin, this.doYourThing( )
base deyimi:
Ana sınıftan bir metoda ya da değişkene erişirken kullanılır.
Örneğin, base.doYourThing( )
//base.metot adi
base kullanımı
public class Person
{
protected string ssn = "444-55-6666";
protected string name = "John L. Malgraine";
public void GetInfo()
{
Console.WriteLine("Name: {0}", name);
Console.WriteLine("SSN: {0}", ssn);
}
}
//Person isimli sınıf tanımlamaları ve getInfo() metodu
base kullanımı
class Employee : Person
{
public string id = "ABC567EFG";
public void GetInfo()
{
// Ana sınıfa ait metot çağrılması
base.GetInfo();
Console.WriteLine("Employee ID:
{0}", id);
}
}
base kullanımı
• class Program
•
{
•
static void Main()
•
{
•
Employee E = new Employee();
•
E.GetInfo();
•
}
•
}
•
/*
•
Program çıktısı:
•
Name: John L. Malgraine
•
SSN: 444-55-6666
•
Employee ID: ABC567EFG
Geometri örneği
class Sekil {
public String ad;
Şekil
public String adAl () {
return (this.ad);
} // adAl
Dikdörtgen
Daire
public int alan () {
return (0);
} // alan
} // Sekil
Her yeni türeyen sınıf alan() metodunu yeniden tanımlaması
gerekir.
Kodun tamamı daha basit halde blogda açıklama satırları ile birlikte
paylaşılmıştır.
Yapılandırıcılar ve Kalıtım
kural:
• Eğer yapılandırıcının ilk satırında açıkça bir üst sınıfın
yapılandırıcısı çağrılmamışsa C#, üstü kapalı olarak alt tarafta
base() metodunu işletir ve ana sınıfın yapılandırıcısını çağırır.
public Kopek() {
strSes = “hav”;
} // yapıcı metot sonu
Üstü kapalı olarak Animal()
yapılandırıcısı çağırılır.
• Örnekler blogda paylaşılacaktır
•// satır içi açıklamalardan o kod parçasında neler yapıldığını takip
ediniz.
Örnekler
Blogda paylaşılmıştır.
Object Sınıfı
• C# Object adında temel bir tür sunar
•Bütün sınıflar üstü kapalı olarak Object sınıfından türerler.
Bu gerçeğe ilişkin örnekler:
equals()
toString() metotları
• Her ne zaman bir sınıfa ait kendi toString() metodunuzu
yazsanız aslında Object sınıfı tarafından sağlanan
toString( ) metodunu yeniden tanımlamış oluyorsunuz.
Nesne Hiyerarşisi
Object
Hayvan
Köpek
Kedi İnek
Object sınfının metodları:
String toString()
boolean equals(Object obj)
Çalışan
ve diğerleri...
AylıkMaaşlı
SaatlikÜcretli
Object
Ya da buna ne dersiniz...
Hayvan
Köpek
Kedi
İnek
Melez
Ağır
Hafif
Download

sinavSonrasiKalitim2