| Meraki ısına Delphi ile Programlama Bu sayımızda nesneye yönelik programlama (Object Oriented l'rogramrning / OOP) kavramlarına giriş yapacağız, tyi bir Delphi programcısı olmak isliyorsanız, nesneye yönelik programlamayı er-geç öğrenmeniz gerekecektir. Bu nedenle üç sayımızı bu konuya ayıracağız. Nesneye yönelik programlama karmaşık ve grafik ta bani; uygulamalar gelinlikçe, hu uygulamaların geliştirme aş* malarında kullanılan doğal hır yontum halrae gelmiştir OOP programlama maıılığında nesneler temel birimi oluşturmaktadır. Nesneler. gÜnltlk bayana i*trafımızd;i gördü giımuz her şeydir. Nesneleri lanım-layan birtakım özelliklen vardır. Nesnelerin özelliklen dışında görev Icri de bulunur. Bu görev birden \az-la olabilir. Örneğin, araba bir nesnedir. Araba nesnemizin rengi, saatte kav kilometre hız yaptığı y;i da motor gûcû gibi hirıakmı özellikleri vardır. Oysa arabamızın bir yerden başka bir yere gidebilmesi onun görevi ya da bir ha$ka deyişle onun bir metodudur İSU' nesneye yönelik programlama mantığında da nesnelerin ösellıkleri ve yerine getirdikleri görevlen vardır. Nesneye, yönelik programlamada Nesne Atanları olarak adlandırılan bu özellikler, nesneyi tanımlar lar ve nesnenin belli bir andaki durumunu verirler (Arabamızın rengi, ağırlığı gibi). Nesnelerin sahip olduğu bu özelliklerin içindeki değeri değiştirmek, nesneye yönelik programlama terminolojisinde "Nesnenin Durumunu Değiştirmek' şeklinde adlandırılır {Arabamızın rengini maviden siyaha yevirmek gîlıi). Nes- nelerin görevleri ise "Nesnenin Me-tod'"Ian olarak adlandırılır. Mctod-lar yine OOP terminolojisine göre "Nesnenin Davranısı"'nı tanımlar (Arabamızın hareket edebilmesi o-nun bir davranışıdır). Genel olarak bir nesne kcml:-irıt tanımlayan özelliklerden ve bu özelliklen kullanarak bazı görevleri yerine gı.ıhvıı metodlarııı birleşmesinden oluşmuştur. Sınıf (Class) Kavramının Kullanımı Sınıf kavramı, nesneye yönelik programlama man Ilgındaki en ö-nemli temellerden biridir. Sındı şöyle bir örnekle açıklamaya çalışalım: Konuşurken basen genel olarak a rubalardan, bazen da kendi arabamızdan bahsedebiliriz. Genel olarak arabalardan balıseııiguniz zaman "Araba MnılT'tıdan konuşmakta, kendi arabamızdan bahscuıgımız zaman ise bir "Araba Nesnesi" nden söz çimekleyiz. Yanı nesneler, bir sı nıttan alınan örneklerdir. Encapsulation (İçerme) Kavramı Yukarıdaki örneği hatırlatacak o-lursak arabaların rengi, kaç kişi alabileceği, saatte kaç km. hız yapabileceği gibi özellikleri vardıı Bu özellikler acabayı tanımlar ve arabanın belli bir andaki durumunu verir. Arabanın bizi bir yerilen bir ba*k;i yere götürmesi ise arabanın gerçekleştirdiği bir görev, yani arabanın metodudur, Simdi de bilgisayarla ilgili bir örnek verelim. Windows altında uygu lama geliştirirken sıkça karşılaşngv mtz pencerelerin her biri birer IICS' nedir. Bu pencerelerin özelliklen ve nıetodları vardır. Bu özeliikle.rden en belirgin olan-lan, pencerenin koordinatlarıdır-Buna göre. Üst, Sok Air. Sag koordi-tiatlarmi veren sayısal değişkenler, pencerenin özelliklerini göstermek' tedir. Bu özellikler bilindikten son-ra, pencere kendisini ekranda rahatlıkla çizebilir, işte bu da (pencerenin kendisini ekranda çizebilmesi) pencerenin bir görevi, yani onun bir metodudur. Objecı Pascal programlama dilinde, nesnelerin özellikleri ve meıod-lannı. aşağıdaki şekilde göslerebili-riz: NesneAdı. Özellik; ¦ 'NesneAdı.Metod; Buna göre yukarıda verdiğimiz pencere örneğinin özelliklerine su şekilde ulaşabiliriz : Paoceeem.Ust:- 05: PKnnerem.Sot - 05; pencerem.Alt ->* 10; iPencerem.Sag .- 15; 206 • CHIF ŞUSAİ 19' Arıık penceremizin özelliklen onu tanımlamakladır Bu durunda penceremizin Ciz adında bîr metodu varsa, kendisini, sahip olduğu özellikleri kullanarak rahatlıkla ekranda çizebilir. Bu metoda ise Pencerem.Ciz; şeklînde ulaşabiliriz. Bu ıneıod çalışmaya başladığında, sahip olduğu lisı. Sol, Alt ve âag özelliklerine bakar ve ona göre ekranda ken dişini çizer. istenirse bu özellikler ve meıodlar İhtiyaca göre rahatlıkla artırılabilir. OnıefŞn, penceremiz ekranda çizilirken belirli bir renkte görünmesini istiyorsak, ona Renk Özelliği ekleyebilir ve bazı durumlarda penceremizin görünmesini İslemiyorsak, penceremizin ekranda goriınmemesmi sağlayan Sakla adcıda bîr meiod yazabiliriz. Dikkat edilecek olursa, buraya kadar yazdıklarımız nesneleri lanımîa-yau özellikler ve bu özellikleri kullanan metodların bir ilişki içinde olduklarını gösiçimektedir. Nesneyi laııııniavan özellikler ve nıelodların o nesnenin kendi bünyesinde bulunmalına Hncapsulaıjon (İçerme) adı verilir, Inheritance (Kalıtım) Kavramı Şimdi nesneye yönelik programlamadaki önemli kavramlardan biri o-lan Kalıtım konusunu inceleyelim. Ünce molorhı iaşıilar teklinde bİTSL-ml düşünelim. Bu tasalarda benzin deposunun olması, motorlu araçların genel bir özelliğidir. Motorlu la-sıılar çalılığında bir yerden başka bir yere gidilir. Bu, bu lUr tahılların genel bir metodudur. Simdi de arabalar ve kamyonlar sı rııfinı düşünelim. Bu iki .sınıf da motorlu taşıtların özelliklerini taşımakladır Yanı motorlu taşıtlar arabalar ve kamyonlar sınışarının atasıdır. Ancak arabalar sınıfında ve kamyon lar sındında, motorlu taşıtlarda olmayan başka özellikler de vardır. Bu özellikler araba ve kamyonlarda bahirinden farklıdır. Örneğin, arabalar yolcu taşımak için kullanılır, kamyonlar İse yük iaşımak için. Şimdi de Şahin marka araba sınıfıyla Mercedes marka araba sındını düşünelim. İki sınıf da arabalar sınıfının özelliklerini taşımakladır; dolayısıyla motorlu taşıllar sınıfının da özelliklerini iaşımakladır. Ayrıca bunlara ek olarak kendi markalarının getirmiş olduğu özellikleri de la-:?;inakladırlar. Motorlu taşıtlar simli ve arabalar sınıfı, ^ahin marka ve Mercedes marka araba sııullarımn a-tasıdır. Yine arabalar sınıfı ve 5ahin marka araba Sınıfı da motorlu taşıtların çocuklarıdır. Bu hiyerarşi içinde. bir ûst seviyedeki alaya ebeveyn, bir alt seviyedeki loruna da çocuk denilebilir. Motorlu Taşıtlar Arabalar Kamyonlar Şahin Mercedes Yıı kandaki şekilde, motorlu taşıtların, lüm araba ve kamyonların sahip olduğu orlak özellik ve. nıeiodla-rı vardır. Arabalar, motorlu taşıtların sahip okluğu özellik ve meledla-ra sahipıir. Ama kamyonların sahip olduğu bazı özellik ve melodları yoktur. Kamyonlar, rr.oınrhı laşııla-rın sahip olduğu özellik ve melodilini sahiptir. Ama arabaların sahip olduğu bazı özellik ve mctodlan yok-nır. Sahln marka, arabaların ve dolayısıyla motorlu taşılların sahip olduğu tum özellik ve uıeiodlara sahip-lir. .Ancak Mercedes marka arabalarla arasında farklı bazı meıodlar ve ö-zellikler vardır. Mercedes marka, a-rabaiann ve dolayısıyla motorlu taşılların sahip olduğu Kim özellik ve nıetodlara sahiptir. Ancak Şahin marka arabalarla arasında farklı bazı meıodlar ve özellikler vardır. Object Pascal'da tanımlanan sınıl kırdan yem sınışar türetilebilir; Bu yeni sıuıilar. tanımlandıkları sınılın özelliklerini taşırlar ve yine tanım laudıkları simlin mctodlan bu sınıl ların da geçerli melodları olur Objen Pascal'da lum sınışar 1 Object a-dı verilen bir sınıftan lûrchlmişlir. Bu nedenle biz typeH lYeni&ntf -C'BSS'lt encr.cf şeklinde bir sınıf ranımlasak bile. Objecı Pascal bunu, type *ş TYsniSınıff TObjGCt.) >? end; 1 şeklinde algılayacakiır ve bu nedenle FYenîSimİ sınıfı TObject sındının sahip olduğu rom özellik ve meıod-lara sahip olacaktır. TObject Sınıfı ile Daha Kolay TObject Sunu, Object Pascal'dii o-luşiıırulacak olan yeni sınırların me-todlarının, program geliştiriciler tarafından daha kolay ve hızlı bir şekilde yazı I ab i linçleri için yaratılmış hir sınıftır. Bu sınıfın özellikle iki metodu, (Creale ve Destroy) yeni sınışara ait nesne örneklerinin yaratılması ve yok edilmesi sırasında çok önemlidir. Nesne örnekleri halızaya dinamik olarak yerleştirilirler. Nesne örnek leri aslında bir değişken değil, bir hafıza adresidir, nesne omegi hafızadaki bu adresi gösterir ve nesne or neğinın özellikleri bu adresten itibaren hafızaya yerleştirilir Yanı ihtiyaç duyulduğu arıda o sınıfa aiı bir nesne örneği yaratılır ve işi bittikten sonra lekrar yok edilir, Bu nedenle hir nesne örneği yaratılırken yapılması gereken ilk İş, o-nun hafızada kendisi için bir yer a-yırmasıdır- Yalnız bu işlem yapılırken, hafızada yeterli yer olup olmadığının kontrol edilmesi gibi birtakım İşlemlerin yapılması gerekir. İşle TObject sınıfının C.reate metodu bu işlemleri bizim için yapan bir baş- SUBAt |ıM CHtP -207 Meraklısına ,-:¦¦//" . ¦ ı.1 01: unteUnfcl: 02: 03. intertûce 04: uses 05 Wmdows, Mes3ages. SysUtİls. Classes. BraphİGB, Controls. Forms, Oialogs. 06 StdCtrte; 03; 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22. 23: 24: 25: 26: 27: 28; 29: 30. 31: 3H: 33: 34: 35: 36: 37: 3B: 39: 40: 41. 42 43 44: 45: 46: 47; 48: 49: 50: 51- typa TForml - cisssITForml Buaoni: TButton: procHdurH Bucton1Clıc>(Sendep: TGbject]; privaiâ publıc end; TKisiSinifi = Cİ8E5( T03jecc 1 Adi ; string. Soyaci: strtng. proceüure itkQitgı( strArtı: stnng; strSoyadrsînng. ]• procedura BilgiViiz; Forml: TForml; Implemetıtason {$R -.DFM} p>*ocodure TKifi>Stnifi.llkBİIg>[su*Adi:£^ng:£trSoyBdi'string begin Adi :- scrAc'i. Soyadı .- sLrSoyacJc ond; procûduc© TKisiSinifi. Rı(gİYıİ; beyin ShoyİMBssagG( 'Adı '- Adi); ShowMe&saga( Soyadı : '+SoyBşi): end; prscödure TFomı1.Uijtmn10ickI5ender TObject); var objKisi : TKisiSinifi; begin ObjKİsi :¦ TKısıSnifi.Creaie; ObjKiı.;ikQtir3i| •atfS'.'RresIey'); ObjK&.BilfjiYaz, übjKiSi.Destrüy; end; Tablo 1: Yeni uygulama yaracmak için kullanılacak olan kod. langıç metodudur. Yarattığımız nesne örneğiyle işimiz bittikten Sonra, u nesne için hafızada ayrılan bölümün tekrar serbest bırakılması gerekir. Bu işlemi de TObieei sınırının Dcsiroy adlı metodu yapar. Objecı Pascafda tüm sınışar. Töbjeci sınıfının çocuklarıdır. O halde bizim yaratacağımız lum sınıf* ların da C.reaıe ve Desrroy adlı nıe-todları olacaktır. Simdi yeni bir uygulama yaraıalım. mumunuz üzeri* ne bir TButlon bileceni yerleştirelim ve kodumuzu aşağıdaki gibi tamamlayalım (tablo i). 16. satırdan İtibaren haşlayan IKisi-Sinifi oiüinaiikınaıı TObject simlinin çocuğu olmaktadır. TKi-siSinifi'nın Adi ve Soyadl olarak iki Özelliği bulu n inakladır. Ayrıca llkUilgi ve ÜilgiYaz adında iki de. metodu vardır. Bit sınıfa ail ıne-todlaı. program içinde mutlaka kod lanmahdır (29. ve 15. samdan itibaren görüldüğü gibi). Kodlayacagımi7 metodun prosedür başlığı, metod a-dından önce sınıf adı yazılarak oluşturulur (TKışıSınıfı.BilgiY'az gibi). Bu şekilde hır sınıf oluşturdukları sonra, 45. sanrda görüldüğü gibi. nbjKisi nesnemiz. Crcate meıoduyla yaratılır. İlgili ileriki sayılarda yeniden Cre-8te metodu üzerinde duracağız. Ancak şimdilik bir nesnen in kullanılabilmesi için her zaman hafızada o ıııırı için hır yer ayrılması gerektiğini ve bu işlemi Creatc metodunun yaptığını düşünmeniz yeterli olacaktır. Nesnemiz Creatc metoduyla yaratıldıktan sonra, 46. ve 47. satırlarda görüldüğü gibi attık onun meiodla-rına erişebiliriz. Son olarak nesnemizle işimiz bittikten sonra, onun hafızada kapladığı alanı serbesi bırakmak gerekiyor. Bunun İçin 4S. satırda goruldugu gibi Deslroy metodunu çağırmamız geıt-keecklİı £3 Rahvei Barengi ruhvet@pah0o.c0m 208- CHVP SUBAI 1999 |
Cep telefonları |
Ekran kartları |
Masaüstü |
Notebook |
Ses kartları |
Webcam |
Klavye & Fare |
Yazıcılar |
Tablet
Ev Sineması
Mp3 Player | Usb Bellekler | Video kameralar | Fotoğraf Makinesi | Taşınabilir diskler | LED & LCD Tv | Monitörler | OEM | PDA
Navigasyon | Oyun Konsolu

