Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Object Oriented Programming - 2

Object Oriented Programming - 2

Avatar for yunus emre keskin

yunus emre keskin

February 12, 2018

More Decks by yunus emre keskin

Other Decks in Programming

Transcript

  1. Modül 1 - Nesne Yönelimli Programlamaya Giriş Modül 2 -

    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
  2. Modül 3 - C# Temel Konular – Diğer Tipler 

    Static members  Partial Class  Sealed Class  Enum  Struct  Abstract Class  Interface  Generic Types  Nested Types  Attributes  Delegates  Events 2.Gün Yol Haritası
  3. Static Class, Method *durağan üyeler, genel değişkenler, statik  Sınıfın

    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
  4. Partial Class *kısmi, parçalı  İki veya daha fazla dosyada

    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;
  5. Sealed Class *mühürlü sınıflar, korumalı, kapalı  Sınıflar için kalıtımı,

    ü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
  6. Enum *numaralandırıcılar  Bir değer aralığının tanımlandığı sayısal tiplerdir 

    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
  7. Struct *yapı  Değer tipidir,  Sınıflardan daha hızlıdır, 

    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
  8. Interface *arayüz, şablon, arabirim, I prefix, can do, has do,

    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
  9. Abstract Class *soyut sınıf, method  Bir sınıfın abstract olmasındaki

    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
  10. Nested Types *iç içe tipler  Bir başka tip içerisinde

    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
  11. Generic Types *generic tipler, type parametreleri, <T>, where T :

     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>
  12. Attributes *öznitelikler, nitelik, reflection  Attribute ler sınıf üyeleri değillerdir

    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
  13. Delegate *vekil, temsilci, eventHandler, handler  Bir methoda parametre olarak

    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
  14. Event *olay  Delegateler invoke edilir, Eventler raise olur 

    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();
  15. Modül 4 - Nesne Yönelimli Programlama Prensipleri  Abstraction 

    Soyutlama  Encapsulation  Kapsülleme  Access Modifier  Inheritance  Miras/Kalıtım  base, this  Shadowing  new  Constructor, destructor  Sealed  Polymorphism  Çok biçimlilik  Overloading  Overriding  virtual  İnterface polymorphism  İnheritance polymorphism  Object Relationship Types  Nesne Tabanlı Programlama 2.Gün Yol Haritası
  16. Abstraction *soyutlama  Nesneyi bazı karakteristikleri olan ve bazı eylemleri

    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
  17. Encapsulation *kapsülleme, sarmalama, bilgi saklama  Bir nesnenin içerisindeki bazı

    ö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
  18. name field address field accountType field Account Class Save(); AccountType

    getter; setter; Delete(); ....... Name getter; setter; Update(); Address getter; setter; Save(); User Interface Account acc = new Account(); acc.Save(); acc.Name = ‘’Company Account’’
  19. Access Modifier *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 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
  20. Access Modifier *erişim belirleyiciler  Class, Struct ,Interface  internal,

    public  Namespace, Enum  public  Method  private
  21. Inheritance *miras alma, kalıtım, base class, derived class, parent class,

    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
  22. 3.Level 2.Level 1.Level Data Operation Database Operation SqlServer Operation OracleServer

    Operation File Operation Excel Operation Inheritance Seviyeleri
  23. Base, This  Base : Temel sınıfın kendisine erişmek için

    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
  24. Polymorphism *çok biçimlilik, çok şekillilik  Aynı isimdeki yordamların duruma

    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
  25. Overriding  Sadece method ve property lere uygulanabilir  Override

    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ı
  26. Object Relationship Types *nesne ilişki tipleri Collaboration «uses a» Composition

    «has a» Inheritance «is a» , «is kind of» Aggregation «has a»
  27. Object Relationship Types *nesne ilişki tipleri Collaboration «uses a» Customer

    Repository Product Repository Address Repository Customer Product Address
  28. Object Relationship Types *nesne ilişki tipleri Customer Repository Product Repository

    Address Repository Customer Product Address Composition «has a»
  29. Nesne Yönelimli Programlama Sınıfları Tanımla Sorumlulukları Tanımla İlişkileri kur Repository,

    Operation,Manager, Extention,Helper, Service Yeniden kullanılabilirliği sağla Entity,Model,ViewModel BaseRepository, Base Service, CoreEntity, BaseViewModel Category Product
  30. Nesne Tabanlı Programlama *object based programming, obp  Nesne Tabanlı

    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