5. 2. Bölüm SARMALAMA Bir nesnenin içerisindeki bazı özel üyeleri kullanıcılardan gizleyebilme özelliğidir. Programcıyı ilgilendirmeyen veya belirli arabirimler üzerinden erişilmesi istenen alanları saklamaktır. Verilere dışarıdan gelebilecek bozulmalara, yanlış kullanımlara karşı korumaktır. Nesne içerisindeki yerel alanları, özelliklerle veya erişim belirleyicilerle sarmalarız.
6. 2.1 Erişim Belirleyiciler public (Tüm erişimlere açık) private (Sadece üyesi olduğu sınıftan erişilebilir) protected (üyesi olduğu sınıftan ve bu sınıftan türetilmiş sınıflardan ulaşılır) internal (aynı program (assembly) içerisindeki sınıflardan erişilebilir)
7. private Yerel üye Dışarıdan hatta bu sınıftan türetilmiş sınıflardan bile erişilemeyeceği anlamına gelir.
9. Örnekte GetOrderDetail() fonksiyonu ve StoreId değişkeni publictir, CalTotal() yordamı ve Total değişkeni privatedir. Ana fonksiyonda IslemobjIslem=newIslem(); objIslem. dediğimizde public üyeler görünür, private üyeler görünmez.
10. protected Kendi sınıfının diğer üyeleri tarafından erişilebildiği gibi sınıfından türetilmiş sınıflardan da erişilebilir. Kendi sınıfında private, türetildiği sürece publictir.
11. internal Sadece aynı uygulama içerisinde olan sınıflar tarafından erişilmeyi sağlar. Sözkonusu üye, kendisiyle birlikte derlenmiş kodlar tarafından erişilir.
12.
13.
14.
15. 3. Bölüm ÇOK-ŞEKİLLİLİK Aynı isimdeki yordamların duruma göre farklı işlemler yapmasıdır. Bu biçim değişikliği bazen nesnelere göre bazen yordamlara gönderilen parametreler göre gerçekleştirilir. Bu işlemi iki şekilde sağlayabilir. Arabirim ve kalıtım yoluyla. Bu bölümde arabirime değineceğiz. Kalıtım yoluyla olanı sonraki konuda işlenecek.
16. 3.1 Yeniden yükleme (overloading) Aynı sınıf içerisinde parametre sayısı ve türü farklı olmak koşuluyla aynı isimde birden çok yordam tanımlanabilir. Derleyici hangi yordamı çalıştıracağını signature işlemiyle anlar. Bir yordamın signature bilgisi yordamın adı, parametre türü, parametre sırası ve paremetre erişim niceleyicisidir. Parametre ismi veya yordamın geri dönüş türü signature bilgisini etkilemez.
17.
18.
19. Yapıcı yordamlar da yeniden yüklenebilir. İlgili sınıftan bir nesne oluşturulmaya çalışılırken, yapıcı yordama ne sayıda veya ne türde parametre gönderildiği önem kazanır.
20.
21.
22.
23. Son örnekte; overload edilmiş yordamların parametreleri, birbirine dönüştürülebilir ise CLR otomatik olarak en üst tipi seçer. Byte türü integer’e, float türü double türüne dönüştürülmesi gibi.
24. 3.2 Arabirimler Sınıf ve struct gibi türler için oluşturulmuş modele arabirim denir. Arabirimler bir sınıfın temelde hangi üyelerden oluşacağını belirleyen şablonlardır. Bu şablonlar oluşturulacakları sınıflara öncülük eder. İçermeleri gereken üyelerin tanımlamaları için yol gösterir. .NET Framework, çoklu kalıtımı sınıflarla değil arabirimlerle destekler. Bir sınıf birden fazla arabirimden farklı ögeler alarak yetenekli hale gelebilir.
25. Amacı hem sınıflar tanımlanırken daha önce tanımlanmış üyelerin o sınıf için oluşturulmasını garanti etmek hem de farklı sınıflar için aynı şablonları kullanmaktır. Arabirimler üyelerin içeriklerini, yani gerçekleştireceklerini içermeyip sadece tanımlamalarını boş hallerini içerir. Arabirimler interface sözcüğüyle tanımlanır.
26.
27.
28. Alanların kodları ve ne yapacakları sınıf içerisinde belirtilmiştir. Yapıcı yordam, yıkıcı yordam ve alanlar arabirimler içerisinde tanımlanamazlar. Arabirimlerin üyeleri private olarak tanımlanamaz, public olarak tanımlandı kabul edilir. Arabirimi uygulayan sınıf, arabirimin tüm üyelerini kullanmak zorundadır. Bununla birlikte sınıf kendine ait üyelere de sahip olabilir. Bir arabirim yapı veya sınıftan türetilemez; ama başka bir arabirimden türetilebilir.
29.
30. Burada karşımıza şöyle bir sorun çıkabilir. Gerçekten Uye sınıfı Icanlı ve Iboyut arabirimlerine dönüştürülebilecek yeteneğe sahip mi? Durumu Buna izin veriyor mu? Bunu is operatörüyle kontrol edebiliriz
31.
32.
33. 3.3 Soyut Sınıf Sınıfların örnek alacağı ana sınıf şablonunu temsil eder. Soyut sınıfta, sınıflarda olması gereken öğeler tanımlanıyor ve bundan türeyecek sınıflarda bu öğelerin kullanılmasına imkan veriliyor. Arabirim ile soyut sınıf arasındaki en önemli fark, arabirim, öğelerin sadece tanımlamalarını içerirken soyut sınıf, öğelerin hem tanımlamalarını hem de içeriklerini içerir. abstract sözcüğüyle tanımlanan soyut sınıflar doğrudan kullanılamazlar. Bir sınıfın kendilerinden türetilmelerini beklerler.
34.
35. Örnekte görüldüğü gibi Arac sınıfı FreneBas() yordamını kendisi gerçekleştirmiş, Ancak Genislik özelliğini kendisini kullanacak sınıf tarafından gerçekleştirmesini istemiştir. Eğer araba sınıfında Genislik özelliğini düzenlemezsek derleyici hata verir.