SlideShare a Scribd company logo
1 of 36
OOP’nin Temel İlkeleri ,[object Object]
Sarmalama(Encapsulation)
Çok-Şekillilik(Polymorphism)
Miras Alma/Kalıtım(Inheritance),[object Object]
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.
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)
private Yerel üye Dışarıdan hatta bu sınıftan türetilmiş sınıflardan bile erişilemeyeceği anlamına gelir.
public Bu üyeye her yerden erişilebilir.
Ö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.
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.
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.
protectedinternal ,[object Object],[object Object]
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.
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.
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.
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.
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.
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.
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.
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
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.
Ö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.

More Related Content

What's hot

Architectural structures and views
Architectural structures and viewsArchitectural structures and views
Architectural structures and viewsDr Reeja S R
 
Uml package diagram
Uml package  diagramUml package  diagram
Uml package diagramVedaraj M
 
Register Organisation of 8086 Microprocessor
Register Organisation of 8086 MicroprocessorRegister Organisation of 8086 Microprocessor
Register Organisation of 8086 MicroprocessorNikhil Kumar
 
7 distributed and real systems
7 distributed and real systems7 distributed and real systems
7 distributed and real systemsmyrajendra
 
RISC Vs CISC, Harvard v/s Van Neumann
RISC Vs CISC, Harvard v/s Van NeumannRISC Vs CISC, Harvard v/s Van Neumann
RISC Vs CISC, Harvard v/s Van NeumannRavikumar Tiwari
 
Move SysML models from Rhapsody to MagicDraw with the Publisher for Rhapsody
Move SysML models from Rhapsody to MagicDraw with the Publisher for Rhapsody Move SysML models from Rhapsody to MagicDraw with the Publisher for Rhapsody
Move SysML models from Rhapsody to MagicDraw with the Publisher for Rhapsody SodiusWillert
 
SOLUTION MANUAL OF COMPUTER ORGANIZATION BY CARL HAMACHER, ZVONKO VRANESIC & ...
SOLUTION MANUAL OF COMPUTER ORGANIZATION BY CARL HAMACHER, ZVONKO VRANESIC & ...SOLUTION MANUAL OF COMPUTER ORGANIZATION BY CARL HAMACHER, ZVONKO VRANESIC & ...
SOLUTION MANUAL OF COMPUTER ORGANIZATION BY CARL HAMACHER, ZVONKO VRANESIC & ...vtunotesbysree
 
Embedded computing platform design
Embedded computing platform designEmbedded computing platform design
Embedded computing platform designRAMPRAKASHT1
 

What's hot (20)

Software architecture
Software architectureSoftware architecture
Software architecture
 
ARM Instructions
ARM InstructionsARM Instructions
ARM Instructions
 
Architectural structures and views
Architectural structures and viewsArchitectural structures and views
Architectural structures and views
 
Uml package diagram
Uml package  diagramUml package  diagram
Uml package diagram
 
Uml Common Mechanism
Uml Common MechanismUml Common Mechanism
Uml Common Mechanism
 
Register Organisation of 8086 Microprocessor
Register Organisation of 8086 MicroprocessorRegister Organisation of 8086 Microprocessor
Register Organisation of 8086 Microprocessor
 
7 distributed and real systems
7 distributed and real systems7 distributed and real systems
7 distributed and real systems
 
Priority inversion
Priority inversionPriority inversion
Priority inversion
 
Unit 5
Unit 5Unit 5
Unit 5
 
RISC Vs CISC, Harvard v/s Van Neumann
RISC Vs CISC, Harvard v/s Van NeumannRISC Vs CISC, Harvard v/s Van Neumann
RISC Vs CISC, Harvard v/s Van Neumann
 
Peripherals of Microprocessor 8085
Peripherals of Microprocessor 8085Peripherals of Microprocessor 8085
Peripherals of Microprocessor 8085
 
Move SysML models from Rhapsody to MagicDraw with the Publisher for Rhapsody
Move SysML models from Rhapsody to MagicDraw with the Publisher for Rhapsody Move SysML models from Rhapsody to MagicDraw with the Publisher for Rhapsody
Move SysML models from Rhapsody to MagicDraw with the Publisher for Rhapsody
 
Interrupt
InterruptInterrupt
Interrupt
 
Object model
Object modelObject model
Object model
 
CS8592-OOAD Lecture Notes Unit-5
CS8592-OOAD Lecture Notes Unit-5 CS8592-OOAD Lecture Notes Unit-5
CS8592-OOAD Lecture Notes Unit-5
 
1.ppi 8255
1.ppi 8255 1.ppi 8255
1.ppi 8255
 
SOLUTION MANUAL OF COMPUTER ORGANIZATION BY CARL HAMACHER, ZVONKO VRANESIC & ...
SOLUTION MANUAL OF COMPUTER ORGANIZATION BY CARL HAMACHER, ZVONKO VRANESIC & ...SOLUTION MANUAL OF COMPUTER ORGANIZATION BY CARL HAMACHER, ZVONKO VRANESIC & ...
SOLUTION MANUAL OF COMPUTER ORGANIZATION BY CARL HAMACHER, ZVONKO VRANESIC & ...
 
Embedded computing platform design
Embedded computing platform designEmbedded computing platform design
Embedded computing platform design
 
Control Memory
Control MemoryControl Memory
Control Memory
 
RTL
 RTL RTL
RTL
 

Similar to Oop’nin temel ilkeleri

Similar to Oop’nin temel ilkeleri (10)

Java OOP
Java OOPJava OOP
Java OOP
 
C# OOP
C# OOPC# OOP
C# OOP
 
BilgeAdam Nesne Yönelimli Programlama
BilgeAdam Nesne Yönelimli ProgramlamaBilgeAdam Nesne Yönelimli Programlama
BilgeAdam Nesne Yönelimli Programlama
 
OOP & SOLID
OOP & SOLIDOOP & SOLID
OOP & SOLID
 
Typescript
TypescriptTypescript
Typescript
 
ıLıas
ıLıasıLıas
ıLıas
 
ıLıas
ıLıasıLıas
ıLıas
 
Base presentation
Base presentationBase presentation
Base presentation
 
Ozgur web-gunleri-sunum
Ozgur web-gunleri-sunumOzgur web-gunleri-sunum
Ozgur web-gunleri-sunum
 
Yazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check ListYazılım Prensipleri ve Code Review Check List
Yazılım Prensipleri ve Code Review Check List
 

Oop’nin temel ilkeleri

  • 1.
  • 4.
  • 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.
  • 8. public Bu üyeye her yerden erişilebilir.
  • 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.
  • 36.