C# Temel Konular – Sınıf Üyeleri Modül 3 - C# Temel Konular – Diğer Tipler Modül 4 - Nesne Yönelimli Programlama Prensipleri C# ile Nesne Yönelimli Programlama Eğitimi
kendi üyeleridir, sınıftan türeyen nesnelerden bağımsız hareket ederler Statik üyelere erişmek için sınıftan nesne oluşturulmasına gerek yoktur Sınıf ile birlikte yüklenirler, Nesne üzerinden değil sınıf üzerinden erişilirler Nesneye bağımlı olunmayan işlemlerde kullanılabilir Statik constructors Private olarak tanımlanırlar, Doğrudan çağırılamazlar ve parametre almazlar, Nesne Talebinin ilkinde çalışır Kaç nesne yaratılırsa yaratılsın sadece ilk nesne oluşturulurken çalışırlar İlk önce statik yapıcı daha sonra normal yapıcı method çalışır
bir sınıf, yapı, method ve interface tanımı yapılmasını sağlar Büyük projelerde karmaşık sınıfları ayrı dosyalar da tanımlamak için kullanılır, Nested partial types Örneğin;
üyeler için ise (method, property) override edilmeyi önler Sınıfın geliştirmesinin son hali olduğunu gösterir, geliştirilmeye kapalı olduğunu ifade eder Örneğin; String class
Sayıları kod içerisinde direkt kullanmak yerine isim vererek kullanmamızı sağlar Belirtilmediği sürece değerler int tipindedir Byte, short, long olarak tanımlayabiliriz
Sınıfların daha light versiyonudur, Küçük miktarda verilerin saklanmasında daha yüksek performans sağlar, Kalıtımı desteklemez, İnterface uygulayabilirler
implement Temelde bir sınıfın hangi üyelerden oluşacağını belirleyen şablonlarıdır, Bir sınıf birden fazla sınıfı kalıtamaz ama birden fazla interface i implemente edebilir Uygulandığı tiplere bazı kurallar koyma veya yetenek kazandırmak amacı ile kullanılır Uygulandığı sınıf, o interface in tüm üyelerini ezmek (override) zorundadır. Üyeler default olarak public tir, yapıcı, yıkıcı ve field tanımlanmaz Arabirimler üyelerin içeriklerini yani gerçekleştireceği işlemleri içermeyip sadece tanımlamalarını içerir, Bir sınıfın temelde hangi üyelerden oluşacağını belirleyen, yetenek kazandıran şablonlardır .NET de çoklu kalıtım sınıflar ile değil arayüzlerle desteklenir Örneğin ; IComparable,IEnumerable
amaç; bir takım sınıflara temel sınıf olmaktır Bu sınıflardan nesne oluşturulmaz Sınıf ve methodlara uygulanabilir Abstract olarak belirtilen üyeler aynı zamanda virtual olarak işaretlenir Abstract sınıfların içerisinde abstract methodlar tanımlanabilir Virtual ihtiyaç dahilinde override edilebilir Kalıtılan tüm sınıflarda farklı ise abstract method tanımlanır
tanımlanmış tiplerdir Sınıf veya Struct içerisinde tanımlı tiplerdir Nested Type onu kapsayan tipin tüm private üyelerine erişebilir Örneğin ; Table Row , Column
Generic Class,Interface, Method Tasarım anında tipin belli olmamasıdır Tipden bağımsız bir şekilde sınıfın oluşturulması Kod tekrar kullanılabilirliği maksimize etmek için kullanılır Genellikle koleksiyon sınıfları yaratmak için kullanılır Örneğin ; List<Int>
sadece ilişkilendirdikleri üyeler için ilave bilgi sağlarlar Kullanıcı tanımlı nitelikler System.Attribute abstract sınıfından türemek zorundadır Tiplere ve üyelere uygulanan nitelikler uygulanan üyelere ve tiplere ekstra bilgi katar Bu bilgiler reflection ile kullanılır Reflection ile çalışma zamanında herhangi bir tipin ve üyenin hakkında bilgi sahibi oluruz Örneğin ; Obsolete, Description, DefaultValue,Format
başka bir method vermek, Değişkenlere değer atar gibi method atıyoruz, Reference tipidir ve methodların referansını tutarlar, Delegate in imzası tutacağı methodların imzaları ile aynı olmalıdır, Methodlar delegeye bağlanma sırasına göre çalışırlar, Örneğin ; Action delegate, Func delegate
Delegate ler ile beraber tanımlanır ve kullanılırlar Olaylar programlar içerisinde gerekli şartlar sağlandığında kendiliğinden gerçekleşir Olaylar temsilciler tipinden tanımlanarak ortama fırlatılırlar Örneğin ; Button.OnClick();
gerçekleştirebilen bir veri tipi olarak genelleştirmek anlaşılmalıdır. Gerçekliği basitleştirir, devasa detayları yoksayar ve bizim için önemli bir amaca odaklanırız, Bir nesnenin belirli alanlarını dış dünyadan ayrı tutma işlemidir, Programı yazan kişinin nesnenin içerisinde ne olup bittiğini bilmesinin zorunlu olmamasıdır Nesne ile ilgili anlaşılması güç şeylerden soyutlamayı amaçlamaktır, Programcıyı nesneyi işin nasıl gerçekleştiğini bilmesi gerekmeyip sadece nasıl kullanması gerektiğini bilmesidir, Örneğin ; Araba-motor ilişkisi
özel üyeleri kullanıcıdan gizleme özelliğidir Verileri dışarıdan gelebilecek bozulamalara ve yanlış kullanımlara karşı korumaktır Yerel alanları özellikler ve erişim belirliyiciler ile sarmalarız Örneğin; Çamaşır makinesi- düğme ilişkisi
üyesi olduğu sınıftan erişilebilir Protected Üyesi olduğu sınıftan ve ondan türetilmiş sınıftan erişilebilir Internal Aynı asembly içerisindeki sınıflardan erişilebilir Protected internal *FamilyAndAssembly Aynı projeden ve türetilmiş sınıflardan erişilebilir Private protected Tip üyelerinin erişim sınırlarını belirler, C# da yazılan tüm tiplere uygulanabilir, Sınıfların güvenliği için bazı üyelerin erişilebilirliğinin kısıtlanması gerekmektedir, Nasıl ve ne şekilde erişilebileceğini belirleyen niteleyicilerdir, Protected internal = protected or internal Aynı assembly içerisinde Public Farklı assembly içerisinde Protected
child class, is a Var olan bir sınıftan yeni bir sınıf türetme işlemidir, Asıl sınıfı miras alıp ondan yeni sınıflar türetmektir, bu yeni sınıfa türemiş sınıf (derived class), kalıtımın uygulandığı asıl sınıfa ise temel sınıf (base class) denir, Bir sınıf sadece bir ana sınıftan türetilebilir, fakat bir ana sınıftan bir çok sınıf türetilebilir, Sınıflar arasında ilişki kurarak sınıfların bazı özelliklerini birbirinden miras alması sağlanmıştır, Inherit edilmesi zorunlu sınıflar abstract sınıflar Inherit edilemeyen sınıflar sealed sınıflar Örneğin; Eski araba modeli yeni araba modeli
kullanılır This : Varolan nesneyi referans eder Constructor Constructor chaining Shadowing new *Üye gizlemek Override işlemi temel sınıftaki bir methodu yeniden tanımlamak içindir, Temel sınıfta varolan bir methodu aynı method imzası ile yeniden yazmaktır, Shadow temel sınıftaki methodu gizler, Shadow işleminde üyenin erişim belirleyicisini değiştirilebilir, Sınıf içerisindeki tüm üyelere uygulanabilir, virtual tanımlanmasına gerek yoktur
göre farklı işlemler yapmasıdır, Bu biçim değişikliği bazen nesneye göre bazen methodlara gönderilen parametrelere göre değişiklik gösterebilir, Ana sınıftan başka bir sınıf türetildiğinde, türeyen sınıfın ana sınıf içindeki üyeleri kendine göre farklı olarak uygulamasıdır (override, new) Örneğin; Taksi sürmek, Otobüs sürmek, araba sürmek İki farklı şekilde polymorphism i gösterebiliriz Interface aracılığıyla polymorphism Inheritance aracılığıyla polymorphism
için base sınıftan üzerine yazılmasına izin vermesi gerekir (virtual) Override edilen üyenin erişim belirleyicisini değiştiremezsiniz Params değerlendirmeye alınmaz Overloading Methodların aşırı yüklenmesi Aynı isim farklı parametre tipi, sayısı, sırası Aynı methodun farklı şekillerde aynı işi yapması
Operation,Manager, Extention,Helper, Service Yeniden kullanılabilirliği sağla Entity,Model,ViewModel BaseRepository, Base Service, CoreEntity, BaseViewModel Category Product
Programlama ile Nesne Yönelimli Programlama farklı kavramlardır, OOP nın daha kısıtlı bir versiyonudur, Polymorpshism desteklenmez, Inheritance desteklenmez, Örneğin ; Javascript