‫Bu videoda, C sharp'ta veya genel olarak programlamada kalıtım hakkında bilgi edineceksiniz.
‫Çok basit tutmaya çalışacağım çünkü çok fazla şey olduğu için bakarsanız oldukça karmaşık hale
‫gelebilir.
‫Ancak bunu mümkün olduğunca basitleştireceğim çünkü kalıtım fikri aslında kodun yeniden kullanılabilirliğidir.
‫Bu da sadece kendi kodumuzu azaltmamıza değil, aynı zamanda diğer geliştiricilerin ve hatta diğer isim alanlarının
‫kodlarını, daha önce olduğu gibi tekrar tekrar manuel olarak çok fazla kod yazmak zorunda kalmadan doğrudan azaltmamıza
‫olanak tanır.
‫Bu da tekrarlanan veya gereksiz kodları gerçekten azaltır.
‫Yani kalıtım fikri temelde nesne yönelimli programlamanın temel bir kavramıdır.
‫Bir üst sınıfın davranışını yeniden kullanan veya miras alan, genişleten veya değiştiren bir alt sınıf tanımlamanıza olanak
‫tanır.
‫Üyeleri miras alınan sınıfa temel sınıf denir.
‫Temel sınıfın üyelerini miras alan sınıfa türetilmiş sınıf denir.
‫Peki, bu ne anlama geliyor?
‫Basit bir ifadeyle, aynı kod veya işlevselliğe sahip birden fazla sınıfınız varsa, ancak
‫bunlar biraz farklıysa, aslında bu tekrarlanan veya gereksiz kodu ayrı bir sınıfa koyabilir ve
‫ardından sınıfımızı bu sınıftan miras alabiliriz.
‫Bu kod, tabiri caizse metodun işlevselliği veya sınıflarımızın nitelikleri olan özellikler
‫olabilir.
‫Şimdi bir örneğe bakalım.
‫Bu nedenle burada Inheritance Demo adını verdiğim yeni bir proje oluşturdum.
‫Pekala, devam edelim ve bu örneğe bakalım.
‫Genellikle birden fazla sınıfla çalışırken, devam edip burada yeni bir sınıf oluşturursunuz.
‫O zaman bunu burada da yapalım.
‫Elbette sınıfı aynı dosyada oluşturabilirsiniz, ancak bu iyi bir uygulama değildir.
‫O halde devam edelim ve bu sınıfa radyo diyelim.
‫Tamam.
‫İşte sınıf, radyo reklamı diyelim.
‫Ve şimdi aynı isim alanında bulunan bu radyal sınıfımız var.
‫Yani her iki sınıf da, uygulamamızın başlangıç noktası olan main metodumuzun bulunduğu
‫C programı ve radial sınıfı aynı dosyada yer alıyor.
‫Yani iki sınıfımız olacak.
‫Biri radyo, diğeri de televizyon olacak.
‫Birkaç mülkümüz olduğunu varsayalım.
‫Örneğin, radyonun durumunu belirleyen bir boolean, radyonun açık olup olmadığını ve ardından radyonun markasını
‫belirler.
‫Yani Panasonic mi yoksa başka markalar da var mı?
‫Ve sonra burada basit bir kurucumuz var, bu yüzden kesinlikle sınıfların temel kavramlarını anlamış
‫olmalısınız.
‫Kalıtımı tam olarak anlamak istiyorsanız, bu genellikle kalıtıma geçmeden önce anlamanızı tavsiye
‫edeceğim bir şeydir çünkü birbirinin üzerine inşa edilir.
‫Tamam.
‫O halde iki metoda sahip olmak istiyorum çünkü bu temelde işlevsellik olacak.
‫Yani biri radyoyu açacak, bu açma yöntemi olacak ve diğeri de kapatma yöntemi
‫olacak.
‫Böylece bu iki yöntemi kullanarak radyoyu açıp kapatabilir veya açıp kapatabilirsiniz.
‫Ve sonra radyo dinlememizi sağlayacak başka bir yöntemimiz olacak.
‫Burada Listen Radio adında bir metodumuz var ve kontrol edecek.
‫Radyo şu anda açık mı?
‫Peki buradaki özellik, bu boolean, aslında doğru mu olacak?
‫Ve eğer bu doğruysa, o zaman radyoyu dinleyebiliriz ve radyoyu dinlediğimizi belirtmenin
‫yolu sadece radyoyu dinlediğimizi söyleyen bu konsol kırmızı çizgi ifadesiyle olacaktır
‫ve aksi takdirde radyo kapalı, önce açın diyen bu hata mesajını yazdıracağız.
‫Tamam.
‫Yani onu dinleyebilmemiz için önce açmamız gerekiyor.
‫Tamam.
‫Artık radyomuz bu.
‫Şimdi, başka bir sınıfınız olduğunu düşünün.
‫Televizyon.
‫Şimdi devam edelim ve yeni bir sınıf oluşturalım.
‫Bu nedenle buraya gidip ekleyebilir ve ardından sınıf ekleyip bu sınıfa bir ad verebilirsiniz.
‫Ben buna TV diyeceğim.
‫Ve şimdi bu sınıfta, burada sahip olduğumuza benzer şekilde birkaç özelliğe sahip olacağım.
‫Yani temel olarak, açık veya kapalı olma durumuna da sahip olacağım.
‫Şimdi bu iki özelliği buraya ekleyelim.
‫Ardından, TV'nin yeni bir nesnesini oluştururken bu değerleri ayarlamamı sağlayan basit bir kurucum
‫olacak.
‫Yani burada özellikleri belirleyen dize markasının yanı sıra çekme de açıktır.
‫Ardından, radyoda yaptığıma benzer şekilde TV'yi açıp kapatabilmem için ayrı ayrı diğer yöntemlere sahip olacağım,
‫böylece temelde bu kodu kopyalayabilirim.
‫Ancak biraz farklı olacak çünkü burada radyo olduğunu söyleyen yorumlar vardı, ancak şimdi bu
‫TV olacak.
‫Yani bu yöntem TV'yi açacak ve bu da kapatacak veya kapatacaktır.
‫O halde TV izlememizi sağlayacak ve radyomuzun yaptığına çok benzer bir şey yapacak başka bir yönteme
‫ihtiyacımız var.
‫Sadece TV açık olduğunda TV izlememizi sağlıyor.
‫Eğer kapalıysa, önce televizyonu açmamız gerekecek.
‫Tamam, şimdi bu iki sınıfımız var ve onlara bakarsanız, son derece benzer olduklarını görürsünüz.
‫Yani tamamen aynı olan pek çok şey var, temelde bu mülk ve bu marka olduğu
‫için aynılar.
‫Her iki sınıfta da var, bu yüzden temelde gereksiz kodumuz var.
‫Bir sürü kodu kopyalayıp yapıştırmak zorunda kaldık ve aşağı yukarı aynı.
‫Peki, çok fazla kodu kopyalayıp yapıştırmak, kodu yeniden yazmak ve temelde gereksiz koda sahip olmak zorunda kalmamamız için bunu nasıl
‫yapabiliriz?
‫Miras kavramının tüm amacı da bu zaten.
‫Yani miras kurtarmaya geliyor.
‫Bu sorunu elektrikli cihaz adında üçüncü bir sınıf oluşturarak çözebiliriz.
‫Bu, sahip olduğumuz elektrikli bir cihazın tüm ortak işlevlerini ve özelliklerini içerecektir.
‫Şimdi bunlara bakalım.
‫Elimizdekiler arasında aynı olanlar hangileri?
‫Peki hem televizyonumuz hem de radyomuz için aynı olan özellikler nelerdir?
‫Aslında bizim durumumuzda tüm mülkler söz konusu, ancak hepsi olmak zorunda değil.
‫Bu durumda bunun nedeni daha fazla mülke sahip olmamamız olacaktır.
‫Ancak sahip olduğumuz iki özellik aynı olacaktır.
‫Yani açık ve marka, hem televizyonda hem de radyoda var olan özelliklerdir.
‫Dolayısıyla yeni sınıfımız bu iki özelliğe sahip olmalı ve ardından TV'yi açmamıza, radyoyu açmamıza
‫veya radyoyu kapatmamıza ve TV'yi kapatmamıza olanak tanıyan iki yöntemimiz olmalıdır.
‫Yani sizin için, eğer bunu denemek istiyorsanız küçük bir egzersiz, çünkü bu noktada bir profesyonel ve programcı olmadığınızı varsayıyorum,
‫ancak bunu denediğinizde kendinizi çok daha güvende hissedeceksiniz.
‫O halde devam edin ve iki sınıf arasında paylaşılan veya paylaşabileceğimiz tüm bu özelliklere ve yöntemlere sahip bir sınıf
‫oluşturun, bunları ayrı bir sınıfta oluşturun ve bu sınıfa elektrikli cihaz adını
‫verin.
‫Aslında siz nasıl isterseniz öyle adlandırabilirsiniz ama ben elektrikli cihazı böyle adlandıracağım.
‫Tamam.
‫Umarım videoyu geçip denemişsinizdir.
‫Bu yüzden yeni bir sınıf oluşturacağım ve bir yol koyacağım, elbette, görüyorsunuz, kısayol kontrol durumunu kullanabilirsiniz,
‫bu yüzden bunu yapalım.
‫Bu durumda, Control K C ve bu pencere burada açılacak ve elektrik olarak değiştirmeme izin verecektir.
‫Cihaz böyle.
‫Ve şimdi bu sınıf, diğer iki sınıf arasında paylaştığımız özelliklere sahip olacak.
‫Onları buraya koymama izin verin.
‫Elektrikli cihazın durumunu belirleyen boolean, açık mı değil mi?
‫Ve sonra cihazın markası.
‫Ve tabii ki bir kurucuya ihtiyacımız var.
‫Yani elektrikli cihaz açık.
‫Brent ve son olarak da metotlar olan işlevselliğe sahibiz.
‫Dolayısıyla, işlevselliğe sahip olduğunuzda, bunları yöntemlere koyarsınız ve işlevsellik bir şeyi açmak
‫veya bir şeyi kapatmaktır.
‫Dolayısıyla, sınıfınızda veya kullandığınız nesnede bir eylem gerçekleştiğinde, yöntemleri
‫kullanmanız gerekecektir.
‫Biz de burada bunu yapıyoruz.
‫Yani bir şeyi, bu durumda elektrikli cihazı açmak ve kapatmak ya da açıp kapatmak için bir
‫yöntem kullanıyoruz.
‫Tamam.
‫Yani temelde burada yaptığımız şey bu.
‫Artık bir sınıfta paylaşılan özelliklerimiz ve yöntemlerimiz olduğuna göre, TV ve radyo
‫sınıflarının diğer sınıfının bu sınıftan miras almasını veya başka bir deyişle bu sınıfı genişletmesini sağlayalım.
‫Yani bu, burada kullanabileceğiniz farklı bir terimdir.
‫Yani televizyonumuz ve radyomuz artık elektrikli cihazlar sınıfını genişletecek.
‫Peki bunu nasıl yapabiliriz?
‫Radyoyla başlayalım, çünkü televizyonun işi bitecek.
‫Senin için küçük bir meydan okuma.
‫Ne?
‫Bunu kendiniz yapmanız gerekecek.
‫Burada iki nokta üst üste işaretini ve ardından electrical device'dan miras almak istediğiniz sınıfın adını kullanırsınız;
‫bu, radyomuzun miras alacağı sınıftır veya radyomuz electrical device sınıfının işlevselliğini genişletecektir.
‫Tamam.
‫Yani Colon ve ardından genişletmek istediğiniz sınıfın adı.
‫Ve önemli olan, elbette, bu sınıfın ya aynı ad alanında olması ya da ad alanını buraya
‫eklemeniz gerektiğidir.
‫Yani bizim durumumuzda, bunların hiçbirini kullanmıyoruz, sadece system kullanıyoruz, ancak aynı
‫ad alanında olduğumuz için, elektrikli cihaz sınıfı radyo ve TV ile aynı ad alanında olduğunu söylüyor.
‫Bunu bu şekilde yapabiliriz, ancak şimdi boolean'ımızın burada bir uyarısı olduğunu görebiliriz.
‫Bu nedenle, kimliğinizin üzerine geldiğinizde Visual Studio size Radio DOT'un gizlendiğini, kalıtsal üye elektrik cihazlarının açık
‫olduğunu, gizleme amaçlandıysa yeni anahtar sözcüğünü kullandığını söyleyecektir.
‫Yani temelde aynı özellik adını kullanıyoruz ve burada bundan kaçınmak istiyorsunuz çünkü bu özelliğe zaten sahipsiniz, tabiri
‫caizse, çünkü onu elektrikli cihazdan miras alıyorsunuz.
‫Şimdi bunu gizleyebilir veya burada oluşturduğunuzla geçersiz kılabilirsiniz, eğer tam olarak aynı isimde bir şey kullanmak istiyorsanız,
‫ancak bir şekilde farklı davranması gerekiyorsa, o zaman bunu yapabilirsiniz.
‫Bu iyi bir uygulama olmasa da elbette kullanım durumuna göre değişir.
‫Bunun nedeni, artık radyo sınıfının gizlediğimiz veya örttüğümüz aynı isimde iki özellik içermesidir.
‫Bu burada farklı bir terim.
‫Elektrikli cihaz sınıfından miras aldığımız özellikler.
‫Böylece artık ihtiyacımız olmayan gereksiz kodları kaldıracağız.
‫O zaman bundan kurtulalım.
‫Ve tabii ki gereksiz kod sadece özellikleri atamak veya oluşturmak değil, aynı zamanda bu metotları burada bulundurmaktır.
‫O zaman onlardan da kurtulalım.
‫Şimdi burada görünen başka bir hata var ve bu da bir sorunu var gibi görünen bu radyo kurucusu.
‫Gerekli biçimsel parametreye karşılık gelen hiçbir argüman verilmediğini söylüyor elektrikli cihaz,
‫elektrikli cihaz, havuz dizesi.
‫Peki bu elektrikli cihaz ya da elektrikli alet nedir?
‫Havuz ipi. İşte buradaki.
‫Bu kurucu.
‫Özelliklerimiz temel sınıftan geldiğinden ve temel sınıfımız bir kurucu içerdiğinden, temel sınıfımızı
‫geçmek için base anahtar sözcüğünü kullanabiliriz.
‫Yapıcı argümanlarıdır çünkü bunlar sahip olduğumuz tek iki özelliktir ve alt sınıftaki yapıcımız
‫boş bir gövdeye sahip olacaktır.
‫Yani çok fazla konuşma var.
‫Ancak temel olarak bunun anlamı, radyo kurucumuz temel olandan
‫daha karmaşık olmadığı için, sadece devam edip temel diyebiliriz ve işte on ve marka.
‫Bu şekilde.
‫O zaman radyomuz için bir bedene ihtiyacımız kalmaz.
‫Dolayısıyla bu kurucu temel olarak lütfen is on'u ve radyo nesnesine aktarılan
‫marka özelliklerini, oluşturulduğunda elektrikli cihaz kurucusuna aktarın diyecektir çünkü temelde radyomuz
‫elektrikli cihazdan miras alınmaktadır ve bu nedenle bunu yapabiliriz, böylece onu elektrikli cihaza
‫aktarabiliriz.
‫Ve bunun yapacağı şey, temel olarak, geçirilen değerlere göre özelliklerin yanı sıra markayı da ayarlamak
‫olacaktır.
‫Yani bu.
‫Daha karmaşık kısmı.
‫Ancak buradaki güç, gerçekten de gereksiz kod oluşturmak zorunda kalmamamız ve işin bizim için yapılmış olmasıdır.
‫Bu da bize gerçekten çok fazla zaman ve kod yazma tasarrufu sağlıyor.
‫Daha sonraki bir örnekte, kendi benzersiz özelliklerini başlatmak için alt sınıftaki yapıcı gövdesini nasıl kullanacağımızı
‫göreceğiz.
‫Burada radyo sınıfını hızlıca tekrar vurgulamak istiyorum.
‫Bizim çocuk sınıfımız.
‫Yani miras alan sınıf ve elektrikli cihaz bizim üst sınıfımızdır.
‫Yani temel sınıf.
‫Yani miras alacağız.
‫Yani radyomuz elektrikli cihazlardan miras kalmıştır.
‫Yani çocuk ebeveynden miras alır.
‫Temel olarak, ebeveynleriniz belirli bir DNA'ya sahiptir ve siz de aynı DNA'ya sahipsiniz, ancak tabiri caizse biraz daha fazlasına
‫sahipsiniz.
‫Yani bu şekilde düşünebilirsiniz.
‫Tamam.
‫Şimdi size küçük bir meydan okuma.
‫TV sınıfını, elektrikli cihazdan da miras alacak şekilde ayarlayın.
‫O yüzden videoyu durdurun ve bunu deneyin lütfen.
‫Tamam.
‫Umarım denemişsinizdir.
‫Bu yüzden önce kolon elektrik cihazı eklememiz gerekiyor.
‫O zaman gereksiz kodlardan kurtulabiliriz.
‫Yani tekrarlayan kod, çünkü temel sınıfımızda zaten var ve bu da onu TV sınıfı dizinimizde de kullanabileceğimiz
‫anlamına geliyor.
‫Şimdi bunu da burada ayarlayabiliriz ve verileri temel sınıfımıza aktaracağımızı söyleyebiliriz.
‫Ve tabii ki bunu burada da ayarlamamıza gerek yok.
‫Ancak daha sonraki örnekte söylediğim gibi, vücudu hala nasıl verimli bir şekilde kullanabileceğimizi göreceğiz
‫ve temel olarak bu olacak.
‫Şimdi program CSV dosyamıza gidebilir ve buradaki kodumuzu kontrol edebiliriz.
‫Kodumuzu kontrol etmekten kastım, radyomuzun nesnelerini oluşturmak ve test etmektir.
‫Şimdi devam edelim ve radyo nesnesi oluşturalım.
‫Buna radyom diyeceğim ve bu yeni bir radyo nesnesi olacak.
‫Şimdi, elbette, açık olup olmadığını geçmem gerekiyor.
‫Bu yüzden başlangıçta kapatacağım ve Sony tarafından yapılacağını söyleyeceğim, yani marka
‫Sony olacak.
‫Şimdi özelliklere erişebiliyorum.
‫Burada bu araç öğesini, marka ve is own özelliği olan radyomun özelliklerini görebilirsiniz ve ayrıca
‫BT yöntemlerine de erişebilirim.
‫Yani aç, kapat, radyo dinle.
‫Ayrıca kendimizin hiç oluşturmadığı bazı metotların da en başından beri orada
‫olduğunu görebilirsiniz, çünkü her sınıf nesne sınıfından miras alır ve nesne sınıfının iki
‫string metodunun yanı sıra get tipi get hashCode ve equals metodu vardır.
‫Yani bu yöntemler, C sharp'ta oluşturduğunuz her bir sınıf için vardır, çünkü
‫temelde biz görmeyiz, ancak dahili olarak nesne sınıfından miras alır.
‫Yani her sınıf nesne sınıfından miras alır ve bu yüzden bu farklı yöntemlere sahibiz.
‫Ama şimdi öncelikle onu açalım.
‫İşte, aç.
‫Bu işlem radyomuzu açacak ve artık radyomuzu dinleyebileceğiz.
‫Radyomu dinleyin.
‫Dot, dinle.
‫Radyo.
‫Şimdi bunu çalıştıralım ve bu radyomuzu dinlememizi sağlayacak.
‫Böylece radyo dinliyoruz.
‫Radyoyu açıyoruz.
‫Şimdi radyoyu açmayalım ve radyo dinlemeyelim.
‫Ve radyo kapalı diyecektir.
‫Önce açın.
‫Pekala, şimdi aynı şeyi televizyonumuz için yapalım.
‫Devam edelim ve bir TV nesnesi oluşturalım.
‫Bunu yeni bir TV nesnesi olacak olan TV'mde arayacağım ve bu da kapatılacak.
‫Ve bu bir Samsung cihazı olacak.
‫Şimdi devam edelim ve açmak için TV nokta anahtarımı kullanalım.
‫Ve sonra TV izle yöntemini çağıralım.
‫Mike.
‫Şimdi bunu çalıştıralım ve şimdi TV'mizin açık olduğunu ve radyo dinlerken onu izlediğimizi
‫göreceğiz.
‫Yani oldukça zorlu bir görev.
‫Ama temelde kodumuz istediğimiz şeyi yapıyor.
‫Şimdi hem radyo hem de TV için açma yöntemi dediğimizi görüyorsunuz.
‫TV sınıfına bakarsak, bu yönteme sahip olmadığını görürüz, yani bir açma
‫ya da kapama yöntemi yoktur.
‫Radyo da bu yöntemlere sahip değil, ancak bunun nedeni bu yöntemlere sahip olan elektrikli
‫cihazdan miras almaları ve onu kullanabilmemiz için açıp kapatmalarıdır.
‫Yani temel olarak burada şu yöntemi kullanıyoruz.
‫Temel sınıf.
‫İşte burada.
‫Temel sınıfın yöntemi.
‫Ve burada çocuk sınıfının yöntemini kullanıyoruz.
‫Dolayısıyla, bu açma yöntemi ana sınıftan gelir ve TV izleme yöntemi alt sınıftan gelir.
‫Böylece artık sınıfa özgü bir kod oluşturabiliriz ve bu kod, tabiri caizse, hem TV sınıfında hem de radyo
‫sınıfında doğrudan tekrarlanmayacaktır.
‫Ancak aynı olan ve genel olarak elektrikli cihazlarla ilgili olacak her şey burada yaratabileceğimiz
‫bir şeydir.
‫Mirasla ilgili çok daha fazla şey var ve elbette bu bölüm boyunca tüm bunları inceleyeceğiz.
‫Bir sonraki videoda görüşmek üzere.