Objektovo orientovaný dizajn: definícia, princípy a príklady

Objektovo orientovaný dizajn je proces plánovania systému interagujúcich objektov s cieľom vyriešiť softvérový problém. Toto je jeden z prístupov k vývoju softvéru.

Položka obsahuje zapuzdrené údaje a postupy zoskupené tak, aby reprezentovali objekt. Rozhranie definuje, ako môže koexistovať, a program popisuje interakciu množín. Objektovo orientovaný dizajn je disciplína definovania objektov a ich procesov na riešenie problému, ktorý bol identifikovaný a zdokumentovaný počas analýzy.

Nasleduje popis podmnožiny založenej na triedach, ktorá nezahŕňa prístupy založené na objektových prototypoch, keď sa zvyčajne nezískajú vytvorením inštancií tried, ale klonovaním iných. Dizajn je objektovo orientovaná metodika návrhu. Zahŕňa proces rozkladu a notácie na reprezentáciu logických aj fyzikálnych stavov, ako aj dynamické modely navrhovaného systému.

Témy Dizajnu

Objektovo orientovaná analýza a návrh

Vstup pre objektovo orientovaný dizajn je poskytovaný výstupom analýzy. Je potrebné si uvedomiť, že artefakt nemusí byť úplne navrhnutý tak, aby slúžil ako referenčný bod. Analýza a návrh môžu prebiehať paralelne. V praxi môžu výsledky jednej akcie poháňať ďalšiu v krátkej spätnoväzbovej slučke prostredníctvom iteračného procesu. Prvá aj druhá akcia sa môžu vykonávať postupne, artefakty sa môžu neustále zvyšovať a nie úplne vyvíjať naraz.

Niektoré typické položky

Zvážte najdôležitejšie.

1. Koncepčný model.

Výsledky objektovo orientovanej analýzy a návrhu sú pokryté konceptom v doméne. Koncepčný model je výslovne zvolený tak, aby bol nezávislý od podrobností implementácie, ako je súbežnosť alebo ukladanie údajov.

2. Prípad použitia.

Popis sekvencií udalostí, ktoré spoločne vedú k tomu, že systém robí niečo užitočné. Každý prípad použitia poskytuje jeden alebo viac scenárov, ktoré sprostredkúvajú návrh objektovo orientovaného systému. Je to to, čo musí komunikovať s používateľmi, nazývanými hercami, aby sa dosiahol konkrétny obchodný cieľ alebo funkcia.

Vykonávateľmi prípadov použitia môžu byť koncoví používatelia alebo ostatné systémy. V mnohých prípadoch sú možnosti aplikácie pre túto metódu dodatočne vyvinuté vo forme diagramov. Diagramy prípadov použitia sa používajú na identifikáciu aktéra a procesov, ktoré vykonávajú. Viac sa dočítate v knihe Gradi Butcha "objektovo orientovaný dizajn".

3. Systémový sekvenčný diagram.

Je to obrázok zobrazujúci pre konkrétny scenár prípady použitia udalostí generovaných externými účastníkmi, ich poradie a možné medzisystémové akcie.

4. Dokumentácia Používateľského Rozhrania.

Dokument, ktorý zobrazuje a popisuje vzhľad konečného produktu. Táto položka je voliteľná, ale pomáha vizualizovať, čo uľahčuje návrhárovi.

vytvorenie relačného dátového modelu

Toto je abstraktný prototyp, ktorý popisuje, ako sa informácie prezentujú a používajú. Ak sa Objektová databáza nepoužíva, relačný dátový model by sa mal zvyčajne vytvoriť pred akciou, pretože stratégia zvolená na prijatie objektovo orientovaného návrhu je výstupom procesu.

Je však možné vyvinúť relačný dátový model paralelne a rast artefaktu môže stimulovať zdokonaľovanie ďalších komponentov. Viac o tom je napísané aj v Butchovej knihe "objektovo orientovaná analýza a dizajn". Upozorňujeme, že v tomto novom vydaní gradi Bucha nájdete veľa praktických tipov týkajúcich sa analýzy, implementácie, návrhu a riadenia projektov.

Pojmami

Päť základov objektovo orientovaného dizajnu sú funkcie na úrovni implementácie zabudované do programovací jazyk. Často sa nazývajú nasledujúcimi bežnými názvami:

1. Trieda objektov.

Čo to je? Trieda je úzky vzťah alebo dotyčnica dátových štruktúr s metódami alebo funkciami ,ktoré ich ovplyvňujú (na základe toho sa vytvorí objekt). Každá položka vykonáva funkciu. Je definovaný svojimi vlastnosťami. Objekt môže byť súčasťou triedy, ktorá je zbierkou podobných položiek.

2. Skrytie objektovo orientovaného dizajnu informačných systémov je schopnosť chrániť niektoré komponenty pred vonkajšími vplyvmi.

3. Dedičstvo.

Toto je príležitosť pre triedu rozšíriť alebo predefinovať funkčnosť inej skupiny. Takzvaná podtrieda má celú sekciu, ktorá je odvodená (zdedená) z nadtriedy a má tiež vlastnú sadu funkcií a údajov.

4. Rozhranie (medzi technikami objektovo orientovaného dizajnu sú takzvané vzory. Abstraktné továrenské rozhranie je jedným z nich).

Schopnosť odložiť implementáciu metódy, ako aj schopnosť definovať funkcie bez ich implementácie.

5. Polymorfizmus (najmä podtyp) - schopnosť nahradiť objekt svojimi podobjektmi. Rovnako ako možnosť variabilného objektu obsahovať nielen tento objekt, ale aj všetky jeho komponenty.

Objektovo orientovaný návrh informačných systémov

Vývoj koncepcií

Definovanie objektov, vytvorenie diagramu triedy z koncepčnej formy zvyčajne zobrazuje entitu.

Identifikácia atribútov.

Je potrebné použiť gama vzory objektovo orientovaných konštrukčných techník. Toto nie je hotový výrobok, ale opis riešenia bežného problému v kontexte. Hlavný výhoda použitia návrhový vzor spočíva v tom, že ho možno znovu použiť vo viacerých aplikáciách. Tiež sa považuje za riešenie problémov, to môže nastať v mnohých rôznych situáciách. Gama objektovo orientované dizajnové vzory zvyčajne ukazujú vzťahy a interakcie medzi triedami alebo objektmi bez určenia koncových systémov aplikácií alebo objektov, ktoré sa na nich zúčastňujú.

Definícia štruktúry.

Toto je zvyčajne súbor knižníc alebo tried, ktoré sa používajú na implementáciu štandardnej štruktúry aplikácie pre konkrétny operačný systém. Kombináciou veľkého množstva opakovane použiteľného kódu do platformy vývojár ušetrí veľa času, pretože rieši úlohu prepísania veľkého množstva štandardného kódu pre každú vyvíjanú novú aplikáciu.

Záver (výsledky) objektovo orientovaného dizajnu

Sekvenčný diagram je potrebné vyriešiť, aby bolo možné pridať konkrétne objekty, ktoré spracovávajú systémové udalosti. Ukazuje vo forme paralelných vertikálnych čiar rôzne procesy, ktoré žijú súčasne, a vo forme horizontálnych šípok-výmenu správ medzi nimi v poradí ich vzhľadu.

Diagram triedy - je typ statickej štruktúry UML, ktorá popisuje systémy zobrazením ich atribútov a vzťahov medzi nimi. Správy a triedy identifikované prostredníctvom vývoja sekvenčných diagramov môžu slúžiť ako vstupné údaje pre automatické vytvorenie globálneho systému.

Niektoré princípy a stratégie návrhu

Objektovo orientované dizajnové vzory

Často sa používa injekcia závislosti. Aká je hlavná myšlienka? Ak položka závisí od prítomnosti akejkoľvek inej inštancie, potom je potrebná položka vložená do závislej. Príklad objektovo orientovaného dizajnu: odovzdanie databázového pripojenia ako argumentu konštruktoru, a nie jeho interné vytvorenie. Ďalší príklad využívajúci mostný vzor: oddelenie abstrakcie od jej implementácie, aby bolo možné oba predmety meniť nezávisle.

Pozrime sa na Princípy objektovo orientovaného dizajnu acyklických závislostí. Upozorňujeme, že graf komponentov (stupeň podrobnosti závisí od množstva práce) by nemal mať cykly. Toto sa tiež nazýva smerovaný acyklický Graf. Príklad objektovo orientovanej analýzy a návrhu: povedzme, že C závisí od B, ktorý je podriadený predmetu A. Ak je to tiež spojené s C, potom bude existovať slučka.

Aký je princíp opätovného použitia zmesi? Uprednostňuje sa polymorfná dedičná kompozícia. Po fáze analýzy sa koncepčný model ďalej rozvíja do objektovo orientovaného IP dizajnu. Tu sú technologicky nezávislé koncepty analýzy mapované na implementačné triedy, identifikované obmedzenia a vyvinuté rozhrania, výsledkom čoho je model pre doménu riešenia.

Fázy pre objektovo orientovaný IC dizajn možno definovať takto:

  • Hľadanie kontextu systému.
  • Navrhovanie jeho architektúry.
  • Identifikácia objektov v systéme.
  • Rozloženie dizajnu budov.
  • Špecifikácia rozhraní objektov.
  • Dizajn.

Objektovo orientovaný dizajn systému zahŕňa definovanie kontextu a následné vytvorenie architektúry.

Prvý koncept

Kontext systému má statické a dynamické časti. Prvý bol vytvorený vďaka objektovo orientovanému dizajnu pomocou jednoduchého vývojového diagramu, ktorý je rozšírený do hierarchie subsystémov. Tento model je reprezentovaný balíčkami UML. Dynamický kontext popisuje, ako systém interaguje so svojím prostredím. Modeluje sa pomocou schém prípadov použitia.

Architektúra systému je vyvíjaná na základe kontextu a v súlade so zásadami návrhu, ako aj s prihliadnutím na predmetnú oblasť. Systém je spravidla rozdelený na vrstvy a rozkladajú sa na subsystémy.

Čo je objektovo orientovaný rozklad?? Rozklad znamená rozdelenie veľkého zložitého systému na hierarchiu menších komponentov s menšou zložitosťou. Každá hlavná časť sa nazýva subsystém. Objektovo orientovaný rozklad identifikuje jednotlivé autonómne objekty v systéme a vzťah medzi nimi.

Výhody rozkladu:

  • Jednotlivé komponenty majú menšiu zložitosť, a preto sú zrozumiteľnejšie a zvládnuteľné.
  • Existuje rozdelenie pracovnej sily so špecializovanými zručnosťami.
  • To umožňuje výmenu alebo úpravu subsystémov bez ovplyvnenia iných častí.

Identifikácia paralelizmu

Umožňuje viacerým objektom prijímať udalosti a vykonávať viac akcií súčasne. Paralelizmus je identifikovaný a prezentovaný v dynamickom modeli.

Na jeho povolenie je každému paralelnému prvku priradený samostatný riadiaci tok. Ak je rovnobežnosť na úrovni objektu, potom sú dvom symetrickým objektom priradené dva rôzne riadiace toky. Ak sú dve operácie jednej z nich paralelné, potom sú rozdelené medzi rôzne vlákna.

Paralelizmus je spojený s problémami integrity údajov a zablokovaním. To znamená, že vždy, keď sa vyžaduje súbežnosť, by sa mala vypracovať jasná stratégia. Okrem toho sa musí identifikovať v samom štádiu vývoja a nemôže sa od neho upustiť vo fáze implementácie.

Objektovo orientované konštrukčné techniky, návrhové vzory

Príklady objektovo orientovaného dizajnu

Pri vývoji aplikácií sa prijímajú niektoré všeobecne akceptované riešenia pre určité kategórie problémov. Ide napríklad o šablóny dizajnu. Môže byť definovaný ako zdokumentovaná sada stavebných blokov, ktoré je možné použiť pri určitých typoch úloh vývoja aplikácií.

Niektoré bežné techniky objektovo orientovaného dizajnu( návrhové vzory) možno nájsť v návrhové vzory:

  • Kreslenie fasády.
  • Zobraziť separačný model.
  • Vzorka pozorovateľa.
  • Model ovládača zobrazenia modelu.
  • Šablóna Proxy.
  • Správa Udalostí.

Počas navrhovania vzorov objektovo orientovaného systému musia byť udalosti, ktoré sa môžu vyskytnúť v objektoch, identifikované a zodpovedajúcim spôsobom spracované.

Udalosť je špecifikácia významnej udalosti, ktorá má miesto v čas a priestor. Existujú štyri typy, ktoré je možné modelovať, a to:

  • Objekt s názvom signálu hodený jedným a zachytený druhým.
  • Udalosť hovoru je synchrónna udalosť predstavujúca odoslanie operácie.
  • Proces času je zastúpený v čase.
  • Zmena udalosti-udalosť predstavujúca zmenu stavu.

Spracovanie hraničných podmienok

Fáza návrhu by mala brať do úvahy inicializáciu a dokončenie systému ako celku, ako aj každého subsystému. Rôzne aspekty:

  • Spustenia,. teda. prechod z neinicializovaného stavu do stabilného.
  • Vypnutie systému, t. e. zatvorenie všetkých spustených vlákien, vymazanie zdrojov a odosielanie správ.
  • Počiatočná Konfigurácia a v prípade potreby rekonfigurácia.
  • Predvídanie porúch systému alebo nechcených vypnutí.
  • Okrajové podmienky sú modelované pomocou podobných prípadov použitia.

Objektový dizajn

Po vytvorení hierarchie subsystémov sa identifikujú položky v systéme a navrhnú sa ich podrobnosti. V tomto fáza , dizajnér pracuje. Dôraz sa presúva z predmetnej oblasti na počítačové koncepty. Objekty identifikované počas analytického obdobia sa vytlačia na implementáciu, aby sa minimalizoval čas vykonávania, spotreba pamäte a celkové náklady.

Návrh objektu zahŕňa nasledujúce etapy:

  • Identifikácia.
  • Výkon. Stavebné konštrukčné modely.
  • Klasifikácia operácií.
  • Algoritmus návrhu.
  • Návrh vzťahov.
  • Kontrola vonkajších interakcií.
  • Dávkové triedy a asociácie do modulov.

Identifikácia objektu

Toto je prvá etapa dizajnu. Objekty identifikované počas období objektovo orientovanej analýzy sú zoskupené do tried a spresnené tak, aby boli vhodné pre skutočnú implementáciu.

Funkcie tejto fázy:

  • Identifikácia a spresnenie tried v každom subsystéme alebo balíku.
  • Definovanie vzťahov a asociácií medzi množinami.
  • Vývoj hierarchie (zovšeobecnenie, špecializácia a dedenie).
  • Návrh jednotiek.

Reprezentácia Objektu

Gama techniky objektovo orientovaného dizajnu

Po identifikácii tried by sa mali zobraziť pomocou modelovacích techník. Táto fáza v skutočnosti zahŕňa konštrukciu diagramov UML.

Existujú dva typy dizajnových modelov, ktoré je potrebné vyrobiť:

Statický. Na jeho opis sa používajú diagramy tried a objektov.

Dynamické modely. Na jeho opis a zobrazenie vzťahov medzi triedami sa používajú interakčné a stavové diagramy.

Klasifikácia operácií

V tejto fáze sa úlohy vykonávané na predmetoch určujú kombináciou troch modelov: objektového, dynamického a funkčného. Operácia určuje, čo by malo urobiť, nie ako.

V tejto súvislosti by sa mali vykonávať tieto úlohy:

  • Bol vyvinutý prechodový diagram stavov každého objektu v systéme.
  • Operácie sú definované pre udalosti prijaté položkami.
  • Identifikované prípady, keď jedna udalosť spôsobí iné v tom istom alebo inom objekte.
  • Čiastkové operácie v akciách sú definované.
  • Základné akcie rozšírené na diagramy toku údajov.

Vývoj algoritmov

Objektovo orientovaný dizajn c

Operácie v objektoch sú definované pomocou sekvencie. Algoritmus je postup krok za krokom, ktorý rieši problém načrtnutý v operácii. Sú zamerané na to, ako by sa to malo robiť.

Môže existovať viac ako jeden algoritmus zodpovedajúci operácii. Hneď ako sa určia alternatívne sekvencie, vyberie sa optimálna pre problémovú oblasť. Metriky pre výber algoritmu:

  • Zložitosť výpočtov. Určuje účinnosť algoritmu z hľadiska požiadaviek na výpočtový čas a pamäť.
  • Flexibilita. Tento koncept určuje, či je možné zvolený algoritmus implementovať správne a bez straty súladu v rôznych prostrediach.
  • Jasnosť. Ukazuje, či je zvolený algoritmus ľahko pochopiteľný a implementovateľný.

Návrh vzťahov

Táto stratégia by sa mala zaznamenať vo fáze návrhu objektu. Medzi hlavné vzťahy patria asociácie, agregácie a dedičstvá.

Pokiaľ ide o spojenia, dizajnér by mal urobiť nasledovné:

  • Zistite, či je vzťah jednosmerný alebo obojsmerný.
  • Analyzujte asociačné cesty a v prípade potreby ich aktualizujte.

Pokiaľ ide o dedičstvo, dizajnér by mal urobiť nasledovné:

  • Konfigurácia tried a ich asociácií.
  • Definujte abstraktné systémy.
  • Vytvorte podmienky, aby v prípade potreby bolo možné vymieňať si správanie.

Vykonávanie kontroly

Vývojár objektu môže zahrnúť vylepšenia do stratégie modelu štátneho diagramu. Pri navrhovaní systému je definovaná Základná Politika dynamického subjektu.

Prístupy k implementácii dynamického modelu:

1. Reprezentovať štát ako miesto v programe.

Ide o tradičný prístup založený na postupoch, v ktorom umiestnenie kontroly určuje stav. Konečný stavový stroj je možné implementovať ako program. Prechod tvorí vstupný operátor, hlavná riadiaca cesta generuje postupnosť inštrukcií, vetvy vytvárajú podmienky a spätné cesty tvoria cykly alebo iterácie.

2. Mechanizmus konečného štátneho stroja.

Tento prístup priamo predstavuje pojem prostredníctvom svojej triedy. Vykonáva konečný automat prostredníctvom súboru prechodov a akcií poskytovaných aplikáciou.

3. Riadenie-paralelné úlohy.

S týmto prístupom je objekt implementovaný ako otázka v programovacom jazyku alebo v operačnom systéme. Tu je udalosť implementovaná ako volanie medzi úlohami, zachováva inherentnú paralelnosť skutočných objektov.

Triedy balenia

V každom veľkom projekte je dôležité starostlivo distribuovať implementáciu do modulov alebo balíkov. Pri vytváraní objektov sú triedy zoskupené, čo umožňuje viacerým spoločnostiam spolupracovať.

Rôzne aspekty balenia:

1. Skrytie interných informácií pred vzhľadom. To vám umožní považovať triedu za" čiernu skrinku " a zmeniť implementáciu bez toho, aby ste od klientov vyžadovali úpravu kódu.

2. Konzistencia prvkov. Časť (napríklad trieda, operácia alebo modul) súvisí, ak je organizovaná podľa dohodnutého plánu a všetky jej časti sú neoddeliteľné, to znamená, že slúžia spoločnému účelu.

Základy budovania fyzických modulov:

1. Triedy by mali predstavovať podobné veci alebo komponenty v rovnakom zloženom objekte.

2. Úzko súvisiace triedy by mali byť v jednom module a nesúvisiace alebo voľne zoskupené triedy by mali byť umiestnené v samostatných častiach.

3. Moduly musia mať vysokú úroveň interakcie medzi svojimi komponentmi.

Optimalizácia dizajnu

Objektovo orientované konštrukčné techniky

Model analýzy zhromažďuje logické informácie o systéme a komponent projektu pridáva podrobnosti na podporu efektívneho prístupu k nemu. Pred implementáciou by mal byť program optimalizovaný tak, aby bol výstup efektívnejší. Cieľom zlepšenia je minimalizovať náklady z hľadiska času, priestoru a ďalších ukazovateľov.

Optimalizácia návrhu by však nemala byť prehnaná, pretože dôležitá je aj ľahká implementácia, udržiavateľnosť a rozšíriteľnosť. V praxi je to jasne viditeľné. Vývojári vedia, že dokonale optimalizovaný dizajn je efektívnejší, ale menej opakovane použiteľný. Preto musí majster nájsť rovnováhu medzi nimi.

Rôzne veci, ktoré možno urobiť na zlepšenie:

  • Pridajte nadbytočné asociácie.
  • Vynechať nepoužité spojenia.
  • Optimalizácia algoritmov.
  • Uložte odvodené atribúty, aby ste sa vyhli prehodnoteniu zložitých výrazov.

Pozrime sa na niektoré body podrobnejšie.

Pridávanie nadbytočných asociácií.

Počas optimalizácie projektu sa kontroluje, či vytvorenie nových odborov môže znížiť náklady na prístup. Aj keď tieto nadbytočné asociácie nemusia pridávať žiadne informácie, môžu zlepšiť efektívnosť celkového modelu.

Vylúčenie nevyužitých odborov.

Príliš veľa asociácií môže spôsobiť, že systém bude nerozlúštiteľný a zníži celkovú efektivitu. To znamená, že počas optimalizácie sa odstránia všetky nepoužívané odbory.

Zlepšenie algoritmov.

V objektovo orientovaných systémoch sa optimalizácia dátovej štruktúry vykonáva na základe spolupráce. Po vytvorení projektu triedy by sa mali vylepšiť operácie a algoritmy.

Optimalizácia je dosiahnutá:

  • Permutácie poradia výpočtových problémov.
  • Zmeny v postupnosti vykonávania cyklov.
  • Odstránenie mŕtvych ciest v algoritme.
  • Ukladanie odvodených atribútov.
Články na tému