ScholarGate
Asistan

Buyurgan ve Nesne Yönelimli Programlama

Buyurgan programlama, hesaplamayı durum değiştiren komut dizileri olarak ifade etmektedir; nesne yönelimli programlama ise bu durumu ve davranışı kapsüllenmiş, mesajlaşan nesneler halinde düzenlemektedir.

PaperMind ile konu bulYakındaMakale ve konu bul
Tools & resources
Slaytları indir
Learn & explore
VideoYakında

Tanım

Buyurgan programlama, program durumunu atama ve kontrol akışı aracılığıyla değiştiren ifade dizileri olarak hesaplamayı tanımlamaktadır; nesne yönelimli programlama ise durum ve işlemlerin, metotları çağırarak etkileşimde bulunan nesneler halinde bir araya getirildiği bir yapılandırma disiplinidir.

Kapsam

Bu konu, değiştirilebilir değişkenler, atama ve açık kontrol akışı üzerine kurulu buyurgan hesaplama modelini ve buyurgan programları nesneler, sınıflar, kalıtım, kapsülleme ve dinamik gönderim (dynamic dispatch) etrafında yapılandıran nesne yönelimli disiplini kapsamaktadır. Alt tipleme (subtyping) ve davranışsal ikame edilebilirlik (behavioral substitutability), tasarım kalıpları (design patterns) ile nesneler ve soyut veri tipleri arasındaki ilişkiyi içermektedir.

Temel sorular

  • Kapsülleme, değiştirilebilir durumun karmaşıklığını nasıl kontrol etmektedir?
  • Bir tipin, başka bir tipin davranışsal alt tipi olması ne anlama gelmektedir?
  • Kalıtım ne zaman yardımcı olmakta ve ne zaman kırılgan bir bağımlılık (fragile coupling) yaratmaktadır?
  • Nesneler, soyut veri tipleri ve modüllerle nasıl ilişkilidir?

Temel kuramlar

Davranışsal alt tipleme (Liskov Yerine Koyma Prensibi)
Liskov ve Wing, bir alt tipin nesnelerinin bir üst tipin nesneleri yerine güvenli bir şekilde ne zaman geçebileceğini formüle etmekte, alt tiplerin üst tipten beklenen gözlemlenebilir davranışı ve değişmezleri korumasını gerektirmektedir.
Yapısal programlama
Dahl, Dijkstra ve Hoare, anlaşılır buyurgan programların temeli olarak disiplinli kontrol akışını ve adım adım iyileştirmeyi (stepwise refinement) belirlemiş, sınırsız goto tabanlı kontrolün yerini almıştır.
Tasarım kalıpları
Gamma ve meslektaşları, nesne yönelimli tasarım problemlerine yönelik tekrarlayan çözümleri kataloglamış, işbirliği yapan nesneleri düzenlemek için ortak bir kelime dağarcığı sağlamıştır.

Klinik önem

Nesne yönelimli tasarım, kapsülleme ve polimorfizmin modüler geliştirmeyi ve büyük ölçekte kodun yeniden kullanımını desteklemesi nedeniyle birçok endüstriyel yazılımın temelini oluşturmaktadır. Liskov Yerine Koyma Prensibi ve tasarım kalıpları, sürdürülebilir sınıf hiyerarşileri ve arayüzler oluşturmak için pratik rehberler olmaya devam etmektedir.

Tarihçe

Buyurgan programlama, Fortran ve Algol gibi en eski depolanmış program makineleri ve dilleriyle ortaya çıkmıştır. Simula 67 sınıfları ve kalıtımı tanıtmış; Smalltalk, 1970'ler ve 1980'lerde saf nesne yönelimini ve mesajlaşmayı yaygınlaştırmıştır. C++ ve daha sonra Java, nesne yönelimini ana akım endüstriye taşırken, Liskov'un veri soyutlama (data abstraction) üzerine çalışmaları ve 1994 tarihli Design Patterns kitabı nesne yönelimli metodolojiyi sistemleştirmiştir.

Tartışmalar

Kalıtım ve birleşim (composition)
Tasarımcılar, uygulama kalıtımının mı yoksa nesne birleşiminin (object composition) mi yeniden kullanımı ve esnekliği daha iyi teşvik ettiğini tartışmaktadır; sonraki uygulamaların çoğu birleşimi ve arayüz tabanlı tasarımı tercih etmektedir.

Öne çıkan isimler

  • Barbara Liskov
  • Ole-Johan Dahl
  • Kristen Nygaard
  • Alan Kay
  • Edsger Dijkstra

İlgili konular

Temel eserler

  • goldberg1983
  • liskov1994
  • dahl1972
  • gamma1994

Sıkça sorulan sorular

Liskov Yerine Koyma Prensibi nedir?
Bu prensip, bir alt tipin nesnelerinin, programın doğruluğunu bozmadan, üst tipin nesnelerinin beklendiği her yerde kullanılabilmesi gerektiğini belirtmektedir; bu da alt sınıfların davranışı nasıl geçersiz kılabileceğini kısıtlamaktadır.
Nesne yönelimli programlama doğası gereği buyurgan mıdır?
Klasik nesne yönelimli programlama, değiştirilebilir nesne durumuna dayanmakta ve bu nedenle bir buyurgan programlama biçimi olarak kabul edilmektedir; ancak nesne yönelimli özellikler, fonksiyonel ve değişmez (immutable) stillerle de birleştirilebilmektedir.

Bu kavram için yöntemler

İlgili kavramlar