Merhaba, Troia yazılarıma yazılımın ve özellikle Nesne Tabanlı Programlamanın en önemli konularından biri olan Inherit olayı ile devam ediyorum.

Inherit kalıtım demektir.

Kalıtımın temel çıkış noktası var olan özellikleri yeni nesile aktarmak demektir. Yazılımda da bu bu şekilde kullanılır.

Daha önceki derslerimizde EDUPERSONAL isimli projemizi yapmıştık. Şimdi yeni bir uygulama yapacağız. Temel olarak EDUPEROSNAL diyalogunun üzerine eklenecek verilerden oluşacak. Böyle bir durumda diyalog sıfırdan baştan yapılabilir. Ancak elde var olan diyalogdan inherit almak daha mantıklıdır.

Yeni Diyalogumuzun ismi EDUHRCD001 olacak.

NEW Dialog diyoruz. Daha sonra Hotline seçiyoruz.

Kendi Dialog’umuzun ismini veriyoruz. Inherit alacağımız dialog Base(Temel – Taban) Dialog kısmından alacağız. Search kısmına tıklayıp Base alınacak dialog bulunur seçilir. OK denir.

Görüldüğü gibi aynı diyalogumuz oluştu.

Şimdi biraz detay bakalım.

Base Dialogdan var olan bir Component üzerine sağ tıklayarak kodlarına erişilebilir. Tıkladığımızda aşağıdaki gibi bir durum ile karşılaşırız. Sadece Click tarafına tıklarsak var olan kodlara erişiriz.

Burada kodlar sadece okunabilir yeni kod üzerine eklenemez. Yeni bir kodlama ekleyeceksek aşağıdaki gibi yapacağız.

Yeni bir kod eklemek istiyorsak, ya da bu metoda sıfırdan kod yazmak istiyorsak aşağı Mavi Ok’a tıklıyoruz.

Tıkladığımızda şöyle bir ekran karşılayacak.

SUPER Metodu()

SUPER() metodu güzel düşünülmüş ve gerçekten ismi gibi süper bir metot.

SUPER() içinde base alınan metodun kodlarını taşır. Yani biz şöyle bir şey yapmak isteyebiliriz, var olan kodların devamına ya da üstüne yeni kodlar yazmak isteyebiliriz. Böyle bir durumda var olan kodlara normal şekilde müdahale edemediğimiz için SUPER() metodunu olduğu gibi kullanırız.

Eski kodlar yeni kodlamanın neresinde olunması isteniyorsa SUPER() metodu oraya yazılır.

Bazen SEARCH metoduna sıfırdan yeni kodlar yazılmak istenebilir. Böyle bir durumda SUPER() metodunu sileriz. Yeni kodlarımızı yazabiliriz.

Kodlar okunurken Runner neyi dikkate alır? Inherit alınmış bir kodlama var ise base ezilir yani onu Runner görmez, Inherit olarak yazılan yeni metod artık asıl kodlardır. Runner bunu okuyacaktır. 

Örneğin bir takım çalışması yapıyorsunuz bir takım arkadaşınız bir kodlama içinde SUPER() metodunu kullanmış. Sizde kodlama yaparken SUPER() metodunun içindeki kodları görmeye ihtiyaç duydunuz bunu gerçekleştirmek için yapmanız gereken SUPER() metodu üzerine imleci focuslayıp F2’ye basmaktır.

Inherit alınmış bir diyalog üzerinde var olan Component’lerde normal şekilde değişiklik yapamazsınız.

Üzerinden değişiklik yapabilmek için şunu yapmanız gerekir. Component üzerine sağ tıklayıp Inherit seçeneği seçilmelidir.

Bunu yaptığımız anda Component’in çevresi sarı renkle çerçevelenir. Artık istenildiği gibi Component üzerinde oynanabilir.

Şimdi şöyle bir şey olsun, yeni Dialogumuz üzerinde Base’den gelen Component’lerle oynadık, yerlerini değiştirdik. Yeni kodlamalar yaptık. Ama baktık ki yanlış yapmışız. Sistemi geri döndürmek için yapmanız gereken şey şudur. Değişiklik yaptığınız Componentleri silin. Diyaloğu kaydedin. Sonra kapatın diyalogları yeniden açın. Her şeyin eski düzende yerli yerine geldiğiniz görürsünüz.

Bir örnek gösterelim.

Aynı şekilde bir Sınıf da Inherit alınarak üzerinde çalışılabilir.

Sistemde hiç bir farklılık yok, bir diyalogdan Inherit almak ile aynı sistemdir.

Bir konuyu daha gösterip yazımızı bitirelim.

Bir sonraki yazımda görüşmek üzere.


Murat Bilginer
21 Şubat 1992'de doğdum. Endüstri Mühendisi olarak lisansımı 2016 yılında tamamladım. Industryolog Akademi - NGenius oluşumlarının kurucusuyum. Şu anda kendi şirketim Brainy Tech ile Web ve Mobil Geliştirme, AWS, Google Cloud Platform Sistemleri için DevOps, Big Data Analiz ve Görselleştirme hizmetleri sunmakta ve Online Eğitimler vermekteyiz.