|
|
- ing. miras
- bir class'ın diğer bir class üstüne eklenmesi durumu. ikinci class'ımız birinci class'dan aldığı variable'ları, function'ları daha bir çeşitlendirmek görevini alıyor.
süper olay.
php'den örneklendirelim hemen :
bir okullu class'ı var diyelim. $okunan_okul değişkenini alıp $okul döndürüyor. (bir boka yaramıyor bu, evet)
class okullu {
var $okul;
function hangi_okul ($okunan_okul){
$this->okul=$okunan_okul;
}
}
şimdi bize lise'lerle ilgili bir olay lazım okul işleriyle uğraşmadan extend ediyoruz eski class'ımızı :
class liseli extends okullu {
var $lise;
function hangi_lise ($okunan_lise){
$this->lise=$okunan_lise
}
}
şimdi :
$okul_ortamlari=new liseli;
$okul_ortamlari->hangi_okul("robert kolej");
$okul_ortamlari->hangi_lise("nişantaşı şehit bob marley anadolu meslek lisesi");
echo $okul_ortamlari->okul; //"robert kolej" çıkaracaktır
echo $okul_ortamlari->lise; //"nişantaşı şehit bob marley anadolu meslek lisesi" çıkaracaktır.
bakın liseli class'ı normalde içermemesine rağmen "okul" class'ının method'larını her şeyini aldı sömürdü. bize de halay çekmek kaldı. tey tey tey...(wondrous, 17.01.2005 14:24 ~ 30.01.2005 08:39)
- http://www.bilisim-kulubu.com/...
- bir nesnenin başka bir nesnenin özel hali olması ve ondaki bütün özellikleri içerimesini sağlayan yapı. manager, örneğin, employee'nin özel bir halidir. çünkü her manager aynı zamanda bir employee'dir. sigorta işlemelri örneğin her ikisininde de olduğu için, manager için ayrı bir işlem yapmaya gerek yoktur.
- geçen seneki ben'in inheritance olayını iyi anlatamadığını farkettim. genel olarak inheritance şöyledir:
class lise1
{
function lise1() { return "matematik, fizik"; }
}
class lise2 extends lise1
{
function lise2() { return "edebi metinler, psikoloji"; }
}
$lise1egidengenc=new lise1;
//ekrana "matematik, fizik" çıkacaktır.
echo $lise1egidengenc->lise1();
$lise2yegidengenc=new lise2;
//ekrana "matematik, fizik, edebi metinler, psikoloji" çıkacaktır.
echo $lise2yegidengenc->lise1();
echo $lise2yegidengenc->lise2();
anladık? anlamadıysak sözlükten böyle ilmi şeyler öğrenilmeyeceğini de akıllarda tutmak gerekir.
- new model army'nin thunder and consolation albümünden leziz bir şarkıdır aynı zamanda...
mother, father, i'm doing ok
on the other side of the country
far away
and though i know the things
that you want to hear me say
sometimes these things are hard
mother, father, i am your son
right down to the long thin pointed face
and this muddled up and twisted tongue
and now i find that i'm doing all those
things you would have done
sometimes these things are hard
so do i thank you ?
do i curse you ?
these tracks stretch out before me
the ones you left behind
what i want and what i feel
it's yours, yours, not mine
mother, father, all those battles that have been
and the long long silences that lay in between
please don't try to tell me all those were in vain
sometimes these things are hard
we live up at the wedding
in rows of deep set eyes
in our finest formal dresses
yes, and proper suits and ties
like a family of munsters
in a really bad disguise ...
so do i thank you ? ...
do i curse you ?
- (bkz: by inheritance)
- classlar arası "has a", "uses a" ilişkileri adt olarak kabul edilebilir. ancak nesne tabanlı mimaride, bu superclassından özellikleri devralan çocuk classlar "is a" ilişkisine sahiptir ve oldukça kullanışlıdır. hatta oop'un temelinde bulunur. maksat, ortak paranteze almak gibidir; aynı işi yapanları bir üst paydada toplayıp hepsine dağıtmak gibi. java'da ördek verelim;
"public interface insan" tanımladık diyelim, bunun sonrasında
"public abstract class birey implements insan" diyebiliriz. sonra da
"public class yetiskin extends birey" ve "public class bebek extends birey" diyerek erişkin ile bebek tipinde insan tanımlamış oluyoruz. insan olmanın tüm özelliklerini taşıyan "birey" nesnesi, yetişkin ve bebek olmak üzere 2 tipte incelenebilir.
classların içlerini incelemek gerekirse:
insan: interface olarak tanımlandı, dişi ve erkek olabilir. konuş() ve kipirda() metodları void olarak tanımlanmıştır.
birey: insan'ın altındaki bir class. isim, soyisim, cinsiyet değişkenleri var. kipirda() methodu da bulunmakta.
yetiskin: birey'in alt türü. konuş() fonksiyonu burada daha spesifik olarak tanımlı ve "merhaba" diye çıktı verebiliyor. ayrıca yetişkin kişiye, hangi "iş"te çalıştığına dair bir sorgulama da yapılabilir. bebek çalışmazken, yetişkin bir birey için işe girme çıkma olayları söz konusudur.
bebek: birey'in alt türü. konuş() methodu ise bebek üzerinde çalıştırıldığında "agu" diye bir çıktı vermekte. iş ile ilgili bir değişken, methodu bulunmamakta.
lakin bebek olsun yetişkin olsun, iki sınıfa ait nesneler de isim, soyisim, icnsiyet gibi özelliklere sahiptir ve bu özelliklerini insan veya birey olmalarından almışlardır. yetişkin veya bebek için ayrı ayrı değişkenler tanımlamaktansa, bu hiyerarşide ortak özellikleri belirtmek kolaylık sağlar, kod yükünü azaltır. bir de bu classlar arası ilişki venn şeması ile veya booch method ile daha iyi açıklanabilirdi ama çizemiyorum burada, neyse.
|