Nesne yönelimli programlama: Revizyonlar arasındaki fark

[kontrol edilmiş revizyon][kontrol edilmemiş revizyon]
İçerik silindi İçerik eklendi
Peykbot (mesaj | katkılar)
k düzen
1. satır:
= '''''<u>'''Nesne yönelimli programlama''' ('''NYP'''), (İngilizce:''Object Oriented Programming'') özetle bir bilgisayar [[programlama]] yaklaşımıdır. Günümüzde pek çok çağdaş [[programlama dili]] tarafından desteklenmektedir.'''</u>''''' =
 
[[Dosya:UygulamaBakimMaliyeti.PNG|right|250px|thumb|= ''<u>'''NYP'dan önceki uygulamaların bakım maliyeti ve karmaşıklık ilişkisi]]'''</u>'' =
[[1960]]'lı yılların sonuna doğru ortaya çıkan bu yaklaşım, o dönemin yazılım dünyasında beliren bir bunalımın sonucudur. Yazılımların karmaşıklığı ve boyutları sürekli artıyor, ancak belli bir nitelik düzeyi korumak için gereken bakımın maliyeti zaman ve çaba olarak daha da hızlı artıyordu. NYP'yi bu soruna karşı bir çözüm haline getiren başlıca özelliği, yazılımda birimselliği (modularity) benimsemesidir. NYP ayrıca, [[bilgi]] gizleme (information hiding), [[veri soyutlama]] (data abstraction), [[çok biçimlilik]] (polymorphism) ve [[kalıtım (programlama)|kalıtım]] (inheritance) gibi yazılımın bakımını ve aynı yazılım üzerinde birden fazla kişinin çalışmasını kolaylaştıran kavramları da yazılım literatürüne kazandırmıştır. Sağladığı bu avantajlardan dolayı, NYP günümüzde geniş çaplı yazılım projelerinde yaygın olarak kullanılmaktadır.
 
= [[1960|''<u>'''1960'''</u>'']]''<u>'''<nowiki>'lı yılların sonuna doğru ortaya çıkan bu yaklaşım, o dönemin yazılım dünyasında beliren bir bunalımın sonucudur. Yazılımların karmaşıklığı ve boyutları sürekli artıyor, ancak belli bir nitelik düzeyi korumak için gereken bakımın maliyeti zaman ve çaba olarak daha da hızlı artıyordu. NYP'yi bu soruna karşı bir çözüm haline getiren başlıca özelliği, yazılımda birimselliği (modularity) benimsemesidir. NYP ayrıca, </nowiki>[[bilgi]] gizleme (information hiding), [[veri soyutlama]] (data abstraction), [[çok biçimlilik]] (polymorphism) ve [[kalıtım (programlama)|kalıtım]] (inheritance) gibi yazılımın bakımını ve aynı yazılım üzerinde birden fazla kişinin çalışmasını kolaylaştıran kavramları da yazılım literatürüne kazandırmıştır. Sağladığı bu avantajlardan dolayı, NYP günümüzde geniş çaplı yazılım projelerinde yaygın olarak kullanılmaktadır.'''</u>'' =
NYP'nın altında yatan birimselliğin ana fikri, her bilgisayar programının (izlence), etkileşim içerisinde olan birimler veya nesneler kümesinden oluştuğu varsayımıdır. Bu nesnelerin her biri, kendi içerisinde veri işleyebilir, ve diğer nesneler ile çift yönlü veri alışverişinde bulunabilir. Hâlbuki NYP'den önce var olan tek yaklaşımda ([[Yordamsal programlama]]), programlar sadece bir komut dizisi veya birer işlev (fonksiyon) kümesi olarak görülmektediler.
 
= ''<u>'''NYP'nın altında yatan birimselliğin ana fikri, her bilgisayar programının (izlence), etkileşim içerisinde olan birimler veya nesneler kümesinden oluştuğu varsayımıdır. Bu nesnelerin her biri, kendi içerisinde veri işleyebilir, ve diğer nesneler ile çift yönlü veri alışverişinde bulunabilir. Hâlbuki NYP'den önce var olan tek yaklaşımda ([[Yordamsal programlama]]), programlar sadece bir komut dizisi veya birer işlev (fonksiyon) kümesi olarak görülmektediler.'''</u>'' =
[[Nesne yönelimli programlama dilleri]] yukarıda adı geçen tüm öğelere sahip olurken, [[Visual Basic]] gibi [[Nesne tabanlı programlama dili|nesne tabanlı programlama dilleri]] birkaçından yoksundur.
 
= [[Nesne yönelimli programlama dilleri|''<u>'''Nesne yönelimli programlama dilleri'''</u>'']]''<u>''' yukarıda adı geçen tüm öğelere sahip olurken, [[Visual Basic]] gibi [[Nesne tabanlı programlama dili|nesne tabanlı programlama dilleri]] birkaçından yoksundur.'''</u>'' =
== Tasarım Şablonları ==
 
Nesneye yönelik tasarım esnasında bazı sorunlara sıkça rastlanır. Bu sık rastlanan sorunlara karşı yaygın olarak kabul edilmiş çözümler de mevcuttur. Bu çözümlere ''[[tasarım Şablonları]]'' denir (İngilizce - Design patterns). Bu alanda en çok tanınmış kaynak, [[Erich Gamma]], [[Richard Helm]], [[Ralph Johnson]] ve [[John Vlissides]] tarafından yazılmış ''Design Patterns: Elements of Reusable Object-Oriented Software'' adlı, en sık kullanılan 23 tasarım şablonu içeren kitaptır. Bu tasarım şablonları ''[[Oluşturucu Tasarım Şablonları]]'', ''[[Yapısal Tasarım Şablonları]]'', ''[[Davranışsal Tasarım Şablonları]]'' olmak üzere üç kategoriye ayrılır.
=== Oluşturucu ''<u>'''Tasarım Şablonları'''</u>'' ===
 
Teklik (Singleton) Tasarım Şablonu<br />
= ''<u>'''Nesneye yönelik tasarım esnasında bazı sorunlara sıkça rastlanır. Bu sık rastlanan sorunlara karşı yaygın olarak kabul edilmiş çözümler de mevcuttur. Bu çözümlere ''[[tasarım Şablonları]]'' denir (İngilizce - Design patterns). Bu alanda en çok tanınmış kaynak, [[Erich Gamma]], [[Richard Helm]], [[Ralph Johnson]] ve [[John Vlissides]] tarafından yazılmış ''Design Patterns: Elements of Reusable Object-Oriented Software'' adlı, en sık kullanılan 23 tasarım şablonu içeren kitaptır. Bu tasarım şablonları ''[[Oluşturucu Tasarım Şablonları]]'', ''[[Yapısal Tasarım Şablonları]]'', ''[[Davranışsal Tasarım Şablonları]]'' olmak üzere üç kategoriye ayrılır.'''</u>'' =
 
== ''<u>'''Oluşturucu Tasarım Şablonları'''</u>'' ==
 
= ''<u>'''Teklik (Singleton) Tasarım Şablonu'''</u>''<br />
Fabrika (Factory) Tasarım Şablonu<br />
Soyut Fabrika (Abstract Factory) Tasarım Şablonu<br />
İnşaatçı (Builder) Tasarım Şablonu<br />
Prototip (Prototype) Tasarım Şablonu =
 
=== Yapısal Tasarım Şablonları ===
Adaptör (Adapter) Tasarım Şablonu<br />