ÎNŢELEGE

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

GRASP (General Responsibility Assignment Software Patterns) este o colecție de tipare , utilizate în proiectarea orientată pe obiecte , care oferă îndrumări pentru alocarea responsabilităților către clase și obiecte .

GRASP include în principal următoarele tipare: Expert în informații, Creator, Controler, Cuplare redusă, Coeziune ridicată, Polimorfism, Fabricare pură, Indirecție, Variații protejate . Toate aceste tipare răspund unor probleme software , în majoritatea cazurilor legate de proiecte de dezvoltare software; prin urmare, acestea nu sunt utilizate pentru a crea informații noi, ci pentru a îmbunătăți documentația software și a standardiza vechile modele de programare .

După cum a afirmat Craig Larman în prefața cărții sale Aplicarea UML și tiparele [1] , GRASP este un fel de instrument „mental”, un ajutor educațional pentru proiectarea de software orientat obiect.

Modele GRASP

Expert în informații

Modelul Expert informațional oferă șabloanele generale asociate cu atribuirea responsabilităților obiectelor și stipulează că responsabilitatea trebuie atribuită expertului informațional (clasa care deține toate informațiile esențiale).

Acest ghid promovează descentralizarea responsabilităților și deciziilor în sistemul software, îmbunătățind încapsularea și reducând astfel cuplarea altor clase pentru implementarea clasei Expert în informații. Sistemele care utilizează în mod corespunzător modelul Expert în informații sunt mai ușor de înțeles, întreținut și extins; ele sporesc, de asemenea, posibilitatea ca un element să poată fi reutilizat pentru evoluții viitoare [2] .

Creator

Modelul Creator rezolvă problema cine ar trebui să fie responsabil pentru crearea unei noi instanțe a unei clase. Acest model este important, deoarece crearea de obiecte este una dintre cele mai omniprezente activități într-un sistem orientat pe obiecte. Un sistem care folosește modelul Creator poate obține, de asemenea, o cuplare redusă, o inteligibilitate îmbunătățită, încapsulare și un sentiment că obiectul supus testului va putea rezista la refolosire. Având în vedere două clase A și B, B ar putea fi responsabil pentru crearea lui A în cazul în care B conține (sau agregate, înregistrează, folosește strict și conține) informațiile inițiale pentru A. În acest caz se poate spune, de asemenea, că B este obiectul natural pentru a deveni creatorul obiectelor lui A.

Modelul Factory este o alternativă la Creator, utilizată în cazuri particulare, cum ar fi logici complexe de creație, care sunt create prin crearea unui obiect Pure Fabrication , numit Factory , care gestionează crearea.

Controlor

Modelul controlerului atribuie responsabilitatea pentru evenimentele de apelare a sistemului unei clase (altele decât o interfață de utilizare ) care reprezintă întregul sistem într-un scenariu de utilizare . Un controler de caz de utilizare ar putea fi utilizat pentru a comunica cu toate evenimentele de sistem ale unuia sau mai multor cazuri de utilizare (de exemplu, pentru cazurile de utilizare Creare utilizator și Ștergere utilizator , poate fi utilizat un singur controler User Controller , în loc de două separate pentru fiecare caz de utilizare ). Șablonul este definit ca primul obiect care primește și coordonează o operație de sistem. Controlorul ar trebui să delege munca necesară pentru alte obiecte. Nu ar trebui să facă multă muncă, deoarece coordonează sau controlează activitatea.

GRASP Controller poate fi, de asemenea, considerat ca parte a aplicației / serviciului Layer [3] (presupunând că aplicația a făcut o distincție explicită între aplicație / serviciu Layer și domeniu Layer) într-un sistem orientat obiect cu straturi comune.

Cuplaj scăzut

Cuplarea scăzută (sau cuplarea scăzută ) este un model de evaluare, care stabilește modul de atribuire a responsabilităților pentru sprijin:

  • dependență scăzută între clase;
  • impact redus într-o clasă de modificări în alte clase;
  • potențial ridicat de reutilizare;

Coeziune ridicată

Coeziunea ridicată (sau coeziunea ridicată ) este un model evaluativ care încearcă să mențină obiectele concentrate, ușor de manevrat și inteligibile într-un mod adecvat. Coeziunea ridicată este în general utilizată pentru a susține cuplarea redusă. Coeziunea ridicată înseamnă că responsabilitățile unui anumit element sunt puternic corelate și foarte concentrate. Programele de rupere în clase și subsisteme sunt un exemplu de activități care măresc proprietățile de coeziune ale sistemului. În schimb, coeziunea scăzută este o situație în care un anumit element are prea multe responsabilități fără legătură. Adesea, elementele cu o coeziune redusă suferă de o slabă înțelegere, reutilizare și întreținere dificile și aversiune puternică față de schimbare.

Polimorfism

Conform modelului polimorfismului , responsabilitatea pentru definirea variațiilor în comportamentele bazate pe tip este atribuită tipurilor pentru care apare această variație. Acest lucru se realizează folosind operații de polimorfism .

Fabricație pură

Fabricarea pură este o clasă care nu reprezintă un concept în domeniul problemei, creat special pentru a obține o cuplare redusă, o coeziune ridicată și un potențial de reutilizare care derivă din aceasta (atunci când nu există o soluție prezentată de modelul Expertului în informații). Acest tip de clasă se numește „Serviciu” în designul bazat pe domenii.

Indirecție

Modelul de direcție indirectă acceptă cuplarea redusă (și potențialul de reutilizare) între două elemente prin atribuirea responsabilităților de mediere între ele unui obiect intermediar. Un exemplu este introducerea unei componente a controlerului pentru medierea între date (model) și reprezentarea acestora (vizualizare) în modelul Model-View-Controller .

Variații protejate

Modelul Protected Variations protejează elementele de variațiile făcute în alte elemente (obiecte, sisteme, subsisteme) prin mascarea acestora cu o interfață și folosind polimorfismul pentru a crea diferite implementări ale acestei interfețe.

Notă

Bibliografie

  • Craig Larman, Aplicarea UML și a modelelor - o introducere în analiza și proiectarea orientate pe obiecte și dezvoltarea iterativă (ediția a 3-a), Prentice Hall PTR (2005) ISBN 0-13-148906-2

Elemente conexe