Nesne Tabanlı Paradigma

Nesne yönelimli (OO) paradigma, şeklini yeni bir programlama yaklaşımının ilk konseptinden alırken, tasarım ve analiz yöntemlerine ilgi çok daha sonra geldi. OO analizi ve tasarım paradigması, OO programlama dillerinin geniş çapta benimsenmesinin mantıksal sonucudur.

  • Nesne yönelimli ilk dil, Simula Norveç Bilgi İşlem Merkezi'ndeki araştırmacılar tarafından 1960 yılında geliştirilen (Gerçek sistemlerin simülasyonu).

  • 1970 yılında Alan Kay ve Xerox PARC'daki araştırma grubu adlı kişisel bir bilgisayar oluşturdu. Dynabook ve ilk saf nesne yönelimli programlama dili (OOPL) - Smalltalk, Dynabook'u programlamak için.

  • 1980'lerde, Grady BoochAda programlama dili için bir tasarım sunan Nesneye Yönelik Tasarım başlıklı bir makale yayınladı. Sonraki baskılarda fikirlerini tam bir nesneye yönelik tasarım yöntemine genişletti.

  • 1990'larda, Coad davranışsal fikirleri nesneye yönelik yöntemlerle birleştirdi.

Diğer önemli yenilikler, Nesne Modelleme Teknikleri (OMT) idi. James Rum Baugh ve Nesne Yönelimli Yazılım Mühendisliği (OOSE) tarafından Ivar Jacobson.

OO Paradigmasına Giriş

OO paradigması, herhangi bir yazılımın geliştirilmesi için önemli bir metodolojidir. Boru ve filtre, veri deposu ve bileşen tabanlı gibi mimari tarzların veya modellerin çoğu bu paradigma kullanılarak uygulanabilir.

Nesne yönelimli sistemlerin temel kavramları ve terminolojileri -

Nesne

Bir nesne, fiziksel veya kavramsal bir varoluşa sahip olabilen, nesne yönelimli bir ortamda gerçek dünya unsurudur. Her nesnede -

  • Onu sistemdeki diğer nesnelerden ayıran kimlik.

  • Bir nesnenin karakteristik özelliklerini ve aynı zamanda nesnenin sahip olduğu özelliklerin değerlerini belirleyen durum.

  • Durumundaki değişiklikler açısından bir nesne tarafından gerçekleştirilen harici olarak görünür etkinlikleri temsil eden davranış.

Uygulamanın ihtiyacına göre nesneler modellenebilir. Bir nesnenin müşteri, araba vb. Gibi fiziksel bir varlığı olabilir; veya bir proje, süreç vb. gibi soyut bir kavramsal varoluş

Sınıf

Bir sınıf, ortak davranış sergileyen aynı karakteristik özelliklere sahip nesnelerin bir koleksiyonunu temsil eder. Ondan oluşturulabilecek nesnelerin planını veya açıklamasını verir. Bir sınıfın üyesi olarak bir nesnenin yaratılmasına somutlaştırma denir. Böylece, bir nesne birinstance bir sınıfın.

Bir sınıfın bileşenleri şunlardır:

  • Sınıftan başlatılacak nesneler için bir dizi nitelik. Genel olarak, bir sınıfın farklı nesnelerinin özniteliklerin değerlerinde bazı farklılıkları vardır. Nitelikler genellikle sınıf verileri olarak adlandırılır.

  • Sınıfın nesnelerinin davranışını gösteren bir dizi işlem. İşlemler ayrıca işlevler veya yöntemler olarak adlandırılır.

Example

İki boyutlu bir uzayda geometrik şekilli çemberi temsil eden basit bir sınıf olan Circle'ı düşünelim. Bu sınıfın nitelikleri şu şekilde tanımlanabilir -

  • x koordinatı, merkezin x koordinatını belirtmek için
  • y koordinatı, merkezin y koordinatını belirtmek için
  • a, dairenin yarıçapını belirtmek için

İşlemlerinden bazıları şu şekilde tanımlanabilir -

  • findArea (), alanı hesaplamak için bir yöntem
  • findCircumference (), çevreyi hesaplamak için bir yöntem
  • scale (), yarıçapı artırmak veya azaltmak için bir yöntem

Kapsülleme

Kapsülleme, bir sınıf içinde hem öznitelikleri hem de yöntemleri birbirine bağlama işlemidir. Kapsülleme yoluyla, bir sınıfın iç detayları dışarıdan gizlenebilir. Sınıfın öğelerine yalnızca sınıf tarafından sağlanan arabirim aracılığıyla dışarıdan erişilmesine izin verir.

Polimorfizm

Polimorfizm, başlangıçta, birden çok biçim alma yeteneği anlamına gelen Yunanca bir kelimedir. Nesne yönelimli paradigmada, polimorfizm, üzerinde çalıştıkları örneklere bağlı olarak işlemleri farklı şekillerde kullanmayı gerektirir. Çok biçimlilik, farklı iç yapılara sahip nesnelerin ortak bir dış arayüze sahip olmasına izin verir. Çok biçimlilik, kalıtımı uygularken özellikle etkilidir.

Example

Her biri findArea () yöntemine sahip Circle ve Square olmak üzere iki sınıfı ele alalım. Sınıflardaki yöntemlerin adı ve amacı aynı olsa da dahili uygulama yani bir alan hesaplama prosedürü her sınıf için farklıdır. Circle sınıfının bir nesnesi findArea () yöntemini çağırdığında, işlem, Square sınıfının findArea () yöntemiyle herhangi bir çakışma olmadan çemberin alanını bulur.

Relationships

Bir sistemi tanımlamak için, bir sistemin hem dinamik (davranışsal) hem de statik (mantıksal) spesifikasyonu sağlanmalıdır. Dinamik belirtim, nesneler arasındaki ilişkileri, örneğin mesaj geçişini tanımlar. Ve statik belirtim, sınıflar arasındaki ilişkileri, örneğin toplama, ilişkilendirme ve kalıtım gibi tanımlar.

İleti geçişi

Herhangi bir uygulama, uyumlu bir şekilde etkileşimde bulunan birkaç nesne gerektirir. Bir sistemdeki nesneler birbirleriyle mesaj geçişini kullanarak iletişim kurabilir. Bir sistemin iki nesnesi olduğunu varsayalım - obj1 ve obj2. Obj1, obj2'nin yöntemlerinden birini yürütmesini istiyorsa, obj1 obj2 objesine bir mesaj gönderir.

Bileşim veya Toplama

Toplama veya kompozisyon, bir sınıfın diğer sınıfların nesnelerinin herhangi bir kombinasyonundan oluşabileceği, sınıflar arasındaki bir ilişkidir. Nesnelerin doğrudan diğer sınıfların bünyesine yerleştirilmesine izin verir. Toplama, bütünden kendi parçalarına gitme yeteneği ile bir "parçası" veya "bir-bir" ilişkisi olarak adlandırılır. Toplu nesne, bir veya daha fazla başka nesneden oluşan bir nesnedir.

bağlantı

İlişkilendirme, ortak yapıya ve ortak davranışa sahip bir bağlantı grubudur. İlişki, bir veya daha fazla sınıfın nesneleri arasındaki ilişkiyi gösterir. Bir bağlantı, bir ilişkilendirmenin bir örneği olarak tanımlanabilir. Bir ilişkinin derecesi, bir bağlantıya dahil olan sınıfların sayısını gösterir. Derecesi tekli, ikili veya üçlü olabilir.

  • Tekli bir ilişki, aynı sınıftaki nesneleri birbirine bağlar.
  • İkili bir ilişki, iki sınıftaki nesneleri birbirine bağlar.
  • Üçlü bir ilişki, üç veya daha fazla sınıfın nesnelerini birbirine bağlar.

Miras

Yeteneklerini genişleterek ve iyileştirerek mevcut sınıflardan yeni sınıfların oluşturulmasına izin veren bir mekanizmadır. Mevcut sınıflar temel sınıflar / üst sınıflar / süper sınıflar olarak adlandırılır ve yeni sınıflar türetilmiş sınıflar / alt sınıflar / alt sınıflar olarak adlandırılır.

Alt sınıf, süper sınıfın izin vermesi koşuluyla, süper sınıfın / sınıfların özniteliklerini ve yöntemlerini miras alabilir veya türetebilir. Ayrıca, alt sınıf kendi niteliklerini ve yöntemlerini ekleyebilir ve süper sınıf yöntemlerinden herhangi birini değiştirebilir. Kalıtım, bir "eşittir" ilişkisini tanımlar.

Example

Bir Memeli sınıfından, İnsan, Kedi, Köpek, İnek vb. Gibi bir dizi sınıf türetilebilir. İnsanlar, kediler, köpekler ve ineklerin tümü, memelilerin farklı özelliklerine sahiptir. Ek olarak, her birinin kendine özgü özellikleri vardır. Bir ineğin bir memeli "olduğu" söylenebilir.

OO Analizi

Yazılım geliştirmenin nesneye yönelik analiz aşamasında sistem gereksinimleri belirlenir, sınıflar belirlenir ve sınıflar arası ilişkiler kabul edilir. OO analizinin amacı, sistemin uygulama alanını ve özel gereksinimlerini anlamaktır. Bu aşamanın sonucu, bir sistemin mantıksal yapısının ve fizibilitesinin gereksinim spesifikasyonu ve ilk analizidir.

Nesneye yönelik analiz için birbiriyle bağlantılı olarak kullanılan üç analiz tekniği, nesne modelleme, dinamik modelleme ve işlevsel modellemedir.

Nesne Modelleme

Nesne modelleme, yazılım sisteminin nesneler açısından statik yapısını geliştirir. Nesneleri, içinde gruplanabilecek nesnelerin sınıflarını ve nesneler arasındaki ilişkileri tanımlar. Ayrıca, her bir sınıfı karakterize eden ana öznitelikleri ve işlemleri tanımlar.

Nesne modelleme süreci aşağıdaki adımlarda görselleştirilebilir -

  • Nesneleri tanımlayın ve sınıflar halinde gruplayın
  • Sınıflar arasındaki ilişkileri tanımlayın
  • Kullanıcı nesnesi modeli diyagramı oluşturun
  • Bir kullanıcı nesnesi niteliklerini tanımlama
  • Sınıflarda yapılması gereken işlemleri tanımlayın

Dinamik Modelleme

Sistemin statik davranışı analiz edildikten sonra zamana ve dışsal değişikliklere göre davranışının incelenmesi gerekmektedir. Dinamik modellemenin amacı budur.

Dinamik Modelleme, "bireysel bir nesnenin diğer nesneler tarafından tetiklenen iç olaylara veya dış dünya tarafından tetiklenen harici olaylara, olaylara nasıl tepki verdiğini açıklamanın bir yolu" olarak tanımlanabilir.

Dinamik modelleme süreci aşağıdaki adımlarda görselleştirilebilir -

  • Her nesnenin durumlarını tanımlayın
  • Olayları tanımlayın ve eylemlerin uygulanabilirliğini analiz edin
  • Durum geçiş diyagramlarından oluşan dinamik bir model diyagramı oluşturun
  • Her durumu nesne nitelikleri açısından ifade edin
  • Çizilen durum geçiş diyagramlarını doğrulayın

Fonksiyonel Modelleme

Fonksiyonel Modelleme, nesne yönelimli analizin son bileşenidir. İşlevsel model, bir nesne içinde gerçekleştirilen işlemleri ve yöntemler arasında hareket ederken verilerin nasıl değiştiğini gösterir. Bir nesne modelleme işlemlerinin anlamını ve dinamik bir modellemenin eylemlerini belirtir. Fonksiyonel model, geleneksel yapılandırılmış analizin veri akış diyagramına karşılık gelir.

Fonksiyonel modelleme süreci aşağıdaki adımlarda görselleştirilebilir -

  • Tüm giriş ve çıkışları tanımlayın
  • İşlevsel bağımlılıkları gösteren veri akış diyagramları oluşturun
  • Her işlevin amacını belirtin
  • Kısıtlamaları belirleyin
  • Optimizasyon kriterlerini belirtin

Nesneye Yönelik Tasarım

Analiz aşamasından sonra kavramsal model, nesne yönelimli tasarım (OOD) kullanılarak nesne yönelimli bir modele dönüştürülür. OOD'de, analiz modelindeki teknolojiden bağımsız kavramlar, uygulama sınıfları ile eşleştirilir, kısıtlamalar belirlenir ve arayüzler tasarlanarak çözüm alanı için bir model elde edilir. OO tasarımının temel amacı, bir sistemin yapısal mimarisini geliştirmektir.

Nesneye yönelik tasarım aşamaları şu şekilde tanımlanabilir:

  • Sistemin bağlamını tanımlama
  • Sistem mimarisinin tasarlanması
  • Sistemdeki nesnelerin tanımlanması
  • Tasarım modellerinin yapımı
  • Nesne arayüzlerinin spesifikasyonu

OO Tasarımı iki aşamaya ayrılabilir - Kavramsal tasarım ve Ayrıntılı tasarım.

Conceptual design

Bu aşamada, sistemi kurmak için gerekli olan tüm sınıflar belirlenir. Ayrıca, her sınıfa belirli sorumluluklar verilir. Sınıf diyagramı, sınıflar arasındaki ilişkileri netleştirmek için kullanılır ve olayların akışını göstermek için etkileşim diyagramı kullanılır. Olarak da bilinirhigh-level design.

Detailed design

Bu aşamada, her sınıfa etkileşim diyagramlarına göre nitelikler ve işlemler atanır. Durum makinesi diyagramı, tasarımın diğer ayrıntılarını açıklamak için geliştirilmiştir. Olarak da bilinirlow-level design.

Tasarım ilkeleri

Aşağıda ana tasarım ilkeleri verilmiştir -

Principle of Decoupling

Bir sınıftaki değişiklik diğer sınıfların kademeli güncellemelerine neden olabileceğinden, bir dizi birbirine bağımlı sınıftan oluşan bir sistemi sürdürmek zordur. Bir OO tasarımında, yeni sınıflar veya kalıtım getirilerek sıkı bağlantı ortadan kaldırılabilir.

Ensuring Cohesion

Uyumlu bir sınıf, yakından ilişkili bir dizi işlevi gerçekleştirir. Uyum eksikliği, tüm sistemin işleyişini etkilemese de, bir sınıf ilgisiz işlevleri yerine getirir. Yazılımın tüm yapısını yönetmeyi, genişletmeyi, sürdürmeyi ve değiştirmeyi zorlaştırır.

Open-closed Principle

Bu ilkeye göre, bir sistem yeni gereksinimleri karşılayacak şekilde genişletilebilmelidir. Sistemin genişletilmesi sonucunda mevcut uygulama ve sistemin kodu değiştirilmemelidir. Ek olarak, aşağıdaki yönergelerin açık-kapalı ilkesine uyulması gerekir -

  • Her somut sınıf için, ayrı arayüz ve uygulamalar sürdürülmelidir.

  • Çok iş parçacıklı bir ortamda, öznitelikleri gizli tutun.

  • Global değişkenlerin ve sınıf değişkenlerinin kullanımını en aza indirin.