close

SIKI SIKI TUTMAK

Navigasyona git Aramaya git

Nesne yönelimli tasarımda , GRASP , "GRASP (nesne yönelimli tasarım Genel Sorumluluk Atama Yazılım Modelleri)"nin kısaltması olan Genel Sorumluluk Atama Yazılım Modelleri anlamına gelir. Kendi başına kalıplardan daha fazlası olduğu düşünülse de , bunlar yazılım tasarımında önerilen uygulamaların bir dizi "iyi uygulamaları" dır.

Bilgi uzmanı

Bilgi uzmanı GRASP, sorumlulukların atanmasının temel ilkesidir. Örneğin bize, bir nesnenin yaratılmasının veya bir yöntemin uygulanmasının sorumluluğunun, onu yaratmak için gerekli tüm bilgileri bilen sınıfa ait olması gerektiğini söyler. Bu şekilde daha uyumlu bir tasarım elde edeceğiz ve böylece bilgi kapsüllenmiş halde kalır (azalmış bağlantı).

Sorun
Nesnelere sorumluluk atamanın genel ilkesi nedir?
Çözüm
Bilgi uzmanına bir sorumluluk atayın.
Faydalar
Kapsülleme korunur, nesneler görevlerini yerine getirmek için kendi bilgilerini kullanır. Davranış, gerekli bilgileri içeren sınıflar arasında dağıtılır. Anlaşılmaları ve bakımı daha kolaydır.

Yaratıcı

Creator modeli , yeni nesnelerin veya sınıfların yaratılmasından (veya örneklenmesinden ) kimin sorumlu olması gerektiğini belirlememize yardımcı olur .

Yeni örnek, sınıf tarafından şu şekilde oluşturulmalıdır:

  • Nesnenin oluşturulmasını gerçekleştirmek için gerekli bilgilere sahip veya
  • Nesnenin oluşturulan örneklerini doğrudan kullanın veya
  • Sınıfın birden çok örneğini depolar veya işler
  • Sınıfı içerir veya ekler.

Bu kalıbı kullanmanın sonuçlarından biri, oluşturulan sınıf ile oluşturan sınıf arasındaki görünürlüktür. Bir avantaj, bakım ve yeniden kullanım kolaylığı anlamına gelen düşük bağlantıdır. Örnekleme, nesne yönelimli bir sistemdeki en yaygın etkinliklerden biridir. Sonuç olarak, yaratma sorumluluklarını atamak için genel bir ilkeye sahip olmak yararlıdır. İyi eşlenirse tasarım, gevşek bağlamayı, artan netliği, kapsüllemeyi ve yeniden kullanımı destekleyebilir.

Denetleyici

Denetleyici kalıbı, belirli bir arayüz ile onu uygulayan algoritma arasında aracı görevi gören, kullanıcıdan verileri alan ve bunları farklı sınıflara gönderen bir kalıptır. denilen yöntem.

Bu model, kodun yeniden kullanımını artırmak ve aynı zamanda daha fazla kontrole sahip olmak için iş mantığının sunum katmanından ayrılması gerektiğini önerir.

Uyum artırmak ve kuplajı azaltmak için sistem olaylarının mümkün olduğunca çok sayıda denetleyiciye bölünmesi önerilir.

Yüksek uyum ve düşük bağlantı

Uyum ve bağlantı kavramları yakından ilişkili değildir, ancak daha düşük düzeyde bir bağlantı ile daha yüksek bir uyum derecesine sahip olunması önerilir. Bu sayede daha az bağımlılık olur ve sistemdeki her nesnenin amacı belirlenir.

Yüksek uyum

Bize bir sınıfın sakladığı bilgilerin tutarlı olması ve (mümkün olduğunca) sınıfla ilgili olması gerektiğini söyler.

  1. Coincident Cohesion : Modül, aralarında herhangi bir ilişki olmaksızın birden fazla görevi gerçekleştirir.
  2. Mantıksal Uyum : Modül, birden fazla ilgili görevi gerçekleştirir, ancak çalışma zamanında bunlardan yalnızca biri gerçekleştirilecektir.
  3. Temporal Cohesion : Bir modül tarafından yürütülen görevler, tek ilişki olarak "aynı anda yürütülmeleri gerektiği"ne sahiptir.
  4. Prosedürel Uyum : Bir modülün görevleri arasındaki tek ilişki, "ürüne" özgü bir dizi adıma karşılık gelmeleridir.
  5. İletişim Uyum : Görevler, "ürün" için tipik olan bir dizi adıma karşılık gelir ve hepsi aynı verileri etkiler.
  6. Bilgi Uyum : Bir modül tarafından yürütülen görevlerin kendi başlangıç ​​noktaları, bağımsız kodlamaları ve aynı veriler üzerinde çalışmaları vardır. Tipik örnek: NESNELER
  7. İşlevsel Uyum : Modül, yerine getirmek için tek bir amacı olan ve yalnızca bir görevi yürüttüğünde, İşlevsel Uyum'a sahip olduğu söylenir.

Düşük bağlantı

Sınıfların mümkün olduğunca birbiriyle daha az bağlantılı olması fikridir. Herhangi birinde bir değişiklik olması durumunda, sınıfların geri kalanı üzerinde mümkün olan en az etki olacak, yeniden kullanımı teşvik edecek ve sınıflar arasındaki bağımlılığı azaltacak şekilde.

  1. İçerik Birleştirme : Bir modül, başka bir modülün içeriğine doğrudan başvurduğunda. (Yüksek seviyeli dillerde çok nadirdir)
  2. Ortak Kuplaj : İki modül aynı global değere eriştiğinde (ve etkilediğinde).
  3. Kontrol Birleştirme : Bir modül, yürütme mantığını belirleyen bir kontrol elemanını diğerine gönderdiğinde.

Polimorfizm

Ne zaman tipe bağlı bir sorumluluk yürütmek zorunda kalsanız, polimorfizmden faydalanmalısınız , alternatifler veya ilgili davranışlar tipe (sınıfa) göre değiştiğinde, davranışın sorumluluğunu - polimorfik işlemleri kullanarak - türlere atayın. davranış değişir. Farklı nesnelerdeki hizmetlere aynı adı atayın.

Saf üretim

Saf üretim, problem alanındaki gerçek bir varlığı veya nesneyi temsil etmeyen, ancak kasıtlı olarak eşleşmeyi azaltmak, uyumu artırmak ve/veya kodun yeniden kullanımını geliştirmek için oluşturulan sınıflarda gerçekleşir. Tasarımcı gevşek bir sınıfla karşılaştığında ve bazı yöntemleri uygulayacak başka bir sınıfı olmadığında çözüm budur. Yani "icat edilmiş" bir sınıftır veya problemde yoktur, ancak eklenerek sistem yapısal olarak iyileştirilir. Bir kontrendikasyon olarak, bu kalıbı kötüye kullanırken genellikle işlev veya algoritma sınıflarının (sadece bir yöntemi olan) ortaya çıktığını belirtmeliyiz.

Dolaylı

Dolaylılık modeli, aralarındaki aracılık sorumluluğunu üçüncü bir ara elemana (sınıf) atayarak iki sınıf arasındaki bağlantıyı azaltmamızı sağlar. Örneğin, bir POS'ta (Satış Noktası Terminali), onu gerçekleştiren sınıflarla farklı ödeme yöntemlerini belirleyebileceğimiz bir Arayüz "Adaptör" kullanın.

Sorun
Öğeler arasındaki doğrudan bağlantıyı önlemek/azaltmak ve yeniden kullanımı iyileştirmek için sorumluluklar nereye atanır?
Çözüm
Öğeler arasında aracılık yapan bir nesneye sorumluluk atayın.

Korumalı Varyasyonlar

Kendinizi değişimden korumanın temel ilkesi, önceki bir analizde değişikliklere açık olan her şeyi öngördüğümüz her şeyi bir arabirime sararak, çeşitli uygulamalar oluşturmak ve gelecekteki uygulamalara izin vermek için polimorfizmi kullanmaktır. sistemimize mümkün olduğunca en az bağlı kalan şeydir, böylece varyasyon meydana geldiğinde, bizim üzerimizde en az etkiye sahip olur. Gelişmiş Kavrama modellerinin bir parçasıdır.

Ayrıca