Objektově orientovaný design: definice, principy a příklady

Objektově orientovaný design je proces plánování systému interagujících objektů za účelem řešení softwarového problému. Toto je jeden přístup k vývoji zajištění.

Položka obsahuje zapouzdřená data a postupy seskupené dohromady, aby představovaly objekt. Rozhraní určuje, jak může koexistovat, a program popisuje interakci množin. Objektově orientovaný design je disciplína identifikace předmětů a jejich procesy k vyřešení problému, který byl identifikován a zdokumentován analýzou.

Následuje popis podmnožiny založené na třídách, která nezahrnuje přístupy založené na prototypech objektů, pokud nejsou obvykle získány instancí tříd, ale klonováním ostatních. Návrh je metodika objektově orientovaného designu. Pokrývá proces rozkladu a notace pro zobrazení logických i fyzických stavů, jakož i dynamických modelů navrhovaného systému.

Témata designu

Objektově orientovaná analýza a návrh

Vstup pro objektově orientovaný návrh je zajištěn výstupem analýzy. Je třeba pochopit, že artefakt nemusí být plně vyvinut, aby sloužil jako referenční bod. Analýza a návrh mohou probíhat paralelně. V praxi mohou výsledky jedné akce pohánět druhou v krátké smyčce zpětné vazby prostřednictvím iteračního procesu. První i druhou akci lze provádět postupně, artefakty lze neustále budovat, spíše než vyvíjet úplně najednou.

Některé typické položky

Zvažte nejdůležitější.

1. Koncepční model.

Výsledky objektově orientované analýzy a návrhu jsou pokryty konceptem v doméně. Koncepční model je jasně vybrán, aby byl nezávislý na detailech implementace, jako je souběžnost nebo ukládání dat.

2. Případ použití.

Popis sekvencí událostí, které společně vedou systém k něčemu užitečnému. Každý případ použití poskytuje jeden nebo více scénářů, které přenášejí objektově orientovaný návrh systémů. Je to on, kdo musí komunikovat s uživateli zvanými herci, aby dosáhl konkrétního obchodního cíle nebo funkce.

Výkonnými precedenty mohou být koncoví uživatelé nebo ostatní systémy. V mnoha případech jsou možnosti použití této metody dále vyvíjeny ve formě diagramů. Schémata precedentů se používají k definování aktéra a procesů, které provádějí. Více si můžete přečíst v knize Grady Butch "objektově orientovaný design".

3. Sekvenční diagram systému.

Jedná se o obrázek ukazující případy použití události pro konkrétní scénář, které generují externí účastníci, jejich pořadí a možné akce mezi systémy.

4. Dokumentace uživatelského rozhraní.

Papír, který zobrazuje a popisuje vzhled konečného produktu. Tato položka je volitelná, ale pomáhá vizualizovat, což usnadňuje návrháři úkol.

Relační datový model

Jedná se o abstraktní prototyp, který popisuje, jak jsou informace prezentovány a používány. Pokud se objektová databáze nepoužívá, relační datový model by měl být obvykle vytvořen před akcí, protože strategie zvolená pro přijetí objektově orientovaného návrhu je výstupem procesu.

Je však možné paralelně vyvinout relační datový model a růst artefaktu může podpořit zdokonalení dalších komponent. Více o tom je také napsáno v Butchově knize objektově orientovaná analýza a návrh. Všimněte si, že v tomto novém vydání Grady Butch najdete spoustu praktických tipů týkajících se analýzy, implementace, návrhu a řízení projektů.

Koncepce

Pět základů objektově orientovaného designu jsou funkce implementační vrstvy zabudované do programovací jazyk. Často se jim říká taková běžná jména:

1. Třída objektu.

Co to je? Třída se nazývá úzký vztah nebo dotyk datových struktur s metodami nebo funkcemi, které na ně působí (objekt je vytvořen na jeho základě). Každá položka má nějakou funkci. Je definován svými vlastnostmi. Objekt může být součástí třídy, což je sada podobných položek.

2. Skrytí objektově orientovaného návrhu informačních systémů, to je schopnost chránit některé komponenty před vnějšími vlivy.

3. Dědění.

Je to příležitost pro třídu rozšířit nebo přepsat funkčnost jiné skupiny. Takzvaná podtřída má celý oddíl, který je odvozen (zděděn) ze nadtřídy a má také vlastní sadu funkcí a dat.

4. Rozhraní (mezi technikami objektově orientovaného designu existují takzvané vzory. Abstract factory interface-jeden z nich).

Schopnost odložit implementaci metody a schopnost definovat funkce bez jejich implementace.

5. Polymorfismus (zejména podtyp) - schopnost nahradit objekt jeho podobjekty. Stejně jako schopnost objektu proměnné obsahovat nejen tuto položku, ale všechny její složky.

Objektově orientovaný návrh informačních systémů

Vývoj konceptů

Definice objektů, vytváření diagramu tříd z koncepční formy obvykle zobrazují entitu.

Identifikace atributů.

Je nutné použít vzory gama přijetí objektově orientovaného návrhu. Nejedná se o hotový produkt, ale o popis řešení obecného problému v kontextu. Základní výhoda použití návrhový vzor je možné znovu použít ve více aplikacích. Je také zvažován pro řešení problémů, které mohou nastat v mnoha různých situacích. Vzory objektově orientovaného návrhu gama obvykle ukazují vztahy a interakce mezi třídami nebo objekty, aniž by specifikovaly konečné systémy aplikací nebo objektů, které se na nich podílejí.

Definice struktury.

Toto je obvykle sada knihoven nebo tříd, které se používají k implementaci standardní struktury aplikace pro konkrétní operační systém. Spojením velkého množství opakovaně použitelného kódu do platformy vývojář ušetří spoustu času, protože řeší problém přepsání velkého množství standardního kódu pro každou novou vyvíjenou aplikaci.

Závěr (výsledky) objektově orientovaného návrhu

Sekvenční diagram musí být vyřešen, aby se přidaly konkrétní objekty, které zpracovávají systémové události. Ukazuje ve formě paralelních svislých čar různé procesy, které žijí současně, a ve formě vodorovných šipek-zasílání zpráv mezi nimi v pořadí podle jejich vzhledu.

Diagram tříd - je to Typ statickou strukturu UML, která popisuje systémy tím, že ukazuje jejich atributy a vztahy mezi nimi. Zprávy a třídy identifikované vývojem sekvenčních diagramů mohou sloužit jako vstupy pro automatické generování globálního systému.

Některé principy a strategie designu

Vzory objektově orientovaného designu

Injekce závislostí se často používají. Jaká je základní myšlenka? Pokud položka závisí na přítomnosti jiné instance, pak je nezbytná vložena do závislé. Příklad objektově orientovaného návrhu: předejte připojení k databázi jako argument konstruktoru, spíše než jej interně vytvořte. Další příklad pomocí vzoru bridge: oddělte abstrakci od její implementace, aby bylo možné obě položky nezávisle změnit.

Zvažte principy objektově orientovaného návrhu acyklických závislostí. Všimněte si, že graf komponent (stupeň podrobností závisí na rozsahu práce) by neměl mít cykly. Toto se také nazývá řízený acyklický graf. Příklad objektově orientované analýzy a návrhu: řekněme, že C závisí na B, které se řídí předmětem A. Pokud je ten druhý také relevantní pro C, bude existovat smyčka.

Jaký je princip kompozitního opětovného použití? Upřednostňuje se polymorfní složení dědičnosti. Po fázi analýzy se koncepční model dále vyvíjí do objektově orientovaného návrhu IC. Zde jsou technologicky nezávislé koncepty analýzy mapovány na implementační třídy, jsou identifikována omezení a jsou vyvinuta rozhraní, což vede k modelu pro oblast řešení.

Kroky pro objektově orientovaný návrh IC lze definovat takto:

  • Nalezení kontextu systému.
  • Navrhování její architektury.
  • Identifikace objektů v systému.
  • Budování návrhových rozvržení.
  • Specifikace rozhraní objektů.
  • Design.

Objektově orientovaný návrh systému zahrnuje definování kontextu s následným vytvořením architektury.

První koncept

Kontext systému má statické a dynamické části. První je vytvořen pomocí objektově orientovaného návrhu C pomocí jednoduchého vývojového diagramu, který je rozšířen do hierarchie subsystémů. Tento model je reprezentován balíčky UML. Dynamický kontext popisuje, jak systém interaguje se svým prostředím. Je modelován pomocí diagramů případů použití.

Architektura systému je navržena na základě kontextu a podle konstrukčních principů a s ohledem na doménu. Systém je zpravidla rozdělen do vrstev a jsou rozloženy, aby vytvořily subsystémy.

Co je objektově orientovaný rozklad? Rozklad znamená rozdělení velkého komplexního systému na hierarchii menších komponent s menší složitostí. Každá hlavní část se nazývá subsystém. Objektově orientovaný rozklad identifikuje jednotlivé autonomní objekty v systému a komunikaci mezi nimi.

Výhody rozkladu:

  • Jednotlivé komponenty mají menší složitost, a proto jsou srozumitelnější a zvládnutelnější.
  • Dochází k oddělení pracovní síly se specializovanými dovednostmi.
  • To umožňuje nahradit nebo upravit subsystémy bez ovlivnění jiných částí.

Identifikace souběžnosti

Umožňuje více objektům přijímat události a provádět více akcí najednou. Souběžnost identifikovaná a prezentovaná v dynamickém modelu.

Chcete-li jej povolit, je každému paralelnímu prvku přiřazeno samostatné řídicí vlákno. Pokud je souběžnost na úrovni objektu, pak jsou dvěma symetrickým položkám přiřazeny dva různé řídicí toky. Pokud jsou dvě operace jednoho z nich paralelní povahy, pak je distribuován mezi různými vlákny.

Souběžnost souvisí s problémy integrity dat a zablokování. To znamená, že jasná strategie musí být vyvinuta, kdykoli je vyžadována souběžnost. Kromě toho musí být identifikován v samotné fázi vývoje a nemůže být ponechán ve fázi implementace.

Techniky objektově orientovaného designu, návrhové vzory

Příklady objektově orientovaného designu

Při vývoji aplikací jsou přijímána některá obecně přijímaná řešení pro jednotlivé kategorie problémů. Jedná se například o návrhové vzory. Lze jej definovat jako zdokumentovanou sadu stavebních bloků, které lze použít v určitých typech úkolů vývoje aplikací.

Některé časté techniky objektově orientovaného designu (návrhové vzory) lze nalézt v návrhových vzorech:

  • Fasádní vzor.
  • Model rozdělení pohledu.
  • Vzorek pozorovatele.
  • Model řadiče pohledu modelu.
  • Šablona proxy.
  • Správa událostí.

Během návrhu musí být identifikovány a odpovídajícím způsobem zpracovány vzorce objektově orientovaného systému události, ke kterým může dojít v předmětech.

Událost je SPECIFIKACE významné události, která má umístění v času a prostoru. Existují čtyři typy, které lze modelovat, a to:

  • Signal-pojmenovaný objekt hodený jedním a zachycený druhým.
  • Událost volání-synchronní událost představující odeslání operace.
  • Časový proces je prezentován v čase.
  • Událost změny-události představující úpravu stavu.

Zpracování okrajových podmínek

Fáze návrhu by měla brát v úvahu inicializaci a dokončení systému jako celku i každého subsystému. Různé aspekty:

  • Spuštění, t. e. přechod z neinicializovaného stavu do ustáleného stavu.
  • Vypnutí systému, T. e. zavírání všech spuštěných vláken, čištění zdrojů a odesílání zpráv.
  • Počáteční konfigurace a rekonfigurace podle potřeby.
  • Předvídání selhání nebo nežádoucího vypnutí systému.
  • Okrajové podmínky jsou modelovány pomocí podobných možností použití.

Objektový design

Jakmile je hierarchie subsystémů vyvinuta, jsou položky v systému identifikovány a jejich podrobnosti jsou navrženy. Na tomto fáze funguje designér. Důraz se přesouvá z domény na počítačové koncepty. Objekty identifikované během období analýzy jsou nahrazeny pro implementaci s cílem minimalizovat dobu běhu, spotřebu paměti a celkové náklady.

Návrh objektu zahrnuje následující kroky:

  • Identifikace.
  • Představa. Konstrukce návrhových modelů.
  • Klasifikace operací.
  • Návrhový algoritmus.
  • Návrh vztahů.
  • Provádění kontroly vnějších interakcí.
  • Dávkové třídy a Asociace do modulů.

Identifikace objektu

Právě to je první fáze návrhu. Objekty identifikované během období objektově orientované analýzy jsou seskupeny do tříd a vylepšeny tak, aby byly vhodné pro skutečnou implementaci.

Funkce této fáze:

  • Identifikace a upřesnění tříd v každém subsystému nebo balíčku.
  • Identifikace vazeb a asociací mezi sadami.
  • Vývoj hierarchie (zobecnění, specializace a dědičnost).
  • Návrh jednotek.

Reprezentace objektu

Gama techniky objektově orientovaného designu

Jakmile jsou třídy identifikovány, musí být zobrazeny pomocí simulačních metod. Tato fáze v podstatě zahrnuje konstrukci diagramů UML.

Musí být vyrobeny dva typy designových modelů:

Statický. K jeho popisu se používají diagramy tříd a objektů.

Dynamický model. K jeho popisu a zobrazení vztahů mezi třídami se používají diagramy interakce a stavů.

Klasifikace operací

V této fázi jsou úkoly prováděné nad položkami definovány kombinací tří modelů: objektových, dynamických a funkčních. Operace určuje, co by mělo být hotový, ne jako.

V tomto ohledu musí být splněny následující úkoly:

  • Byl vyvinut stavový přechodový diagram každého objektu v systému.
  • Operace jsou definovány pro události přijaté položkami.
  • Byly identifikovány případy, kdy jedna událost volá ostatní ve stejném nebo jiném objektu.
  • Operace v akcích jsou definovány.
  • Hlavní akty jsou rozšířeny na grafy datových toků.

Vývoj algoritmu

Objektově orientovaný design c

Operace v objektech jsou definovány pomocí sekvence. Algoritmus je postup krok za krokem, který řeší problém uvedený v operaci. Zaměřují se jak to má být provedeno.

Může existovat více než jeden algoritmus odpovídající operaci. Jakmile jsou identifikovány alternativní sekvence, je pro problémovou oblast vybrán optimální. Metriky pro výběr algoritmu:

  • Obtížnost počítání. Určuje účinnost algoritmu z hlediska výpočetního času a požadavků na paměť.
  • Pružnost. Tento koncept určuje, zda lze vybraný algoritmus implementovat vhodně a bez ztráty shody v různých prostředích.
  • Srozumitelnost. Ukazuje, zda je vybraný algoritmus snadno pochopitelný a implementovatelný.

Návrh vztahů

Tato strategie musí být zaznamenána ve fázi návrhu objektu. Mezi hlavní vztahy patří asociace, agregace a dědičnost.

Pokud jde o spojení, návrhář by měl udělat následující:

  • Určete, zda je vztah jednosměrný nebo obousměrný.
  • Analyzujte asociační cesty a v případě potřeby je aktualizujte.

Pokud jde o dědičnost, měl by konstruktér provést následující:

  • Přizpůsobte třídy a jejich asociace.
  • Definujte abstraktní systémy.
  • Vytvořte podmínky, abyste si v případě potřeby mohli vyměňovat chování.

Provádění kontroly

Vývojář objektu může zahrnout upřesnění do strategie modelu stavového diagramu. Při navrhování systému je definována základní politika dynamického předmětu.

Přístupy k implementaci dynamického modelu:

1. Reprezentujte stav jako umístění v programu.

Jedná se o tradiční přístup založený na postupech, při kterém umístění ovládacího prvku určuje stav. Stavový stroj lze implementovat jako program. Přechod tvoří vstupní operátor, hlavní řídicí cesta vytváří posloupnost instrukcí, větve vytvářejí podmínky a zpáteční cesty tvoří smyčky nebo iterace.

2. Mechanismus stavového stroje.

Tento přístup přímo představuje termín prostřednictvím jeho třídy. Provádí stavový stroj prostřednictvím sady přechodů a akcí poskytovaných aplikací.

3. Správa-paralelní úkoly.

S tímto přístupem je objekt implementován jako otázka v programovacím jazyce nebo v operačním systému. Zde je událost implementována jako volání mezi úkoly, zachovává inherentní paralelismus skutečných objektů.

Třídy balení

V každém velkém projektu je důležité pečlivé rozdělení implementace na moduly nebo balíčky. Při vytváření objektů jsou třídy seskupeny, což umožňuje spolupráci více společností.

Různé aspekty balení:

1. Skrytí vnitřních informací před vzhledem. To vám umožní považovat třídu za "černou skříňku" a změnit implementaci, aniž byste museli klienty upravovat kód.

2. Konzistence prvků. Detail (například třída, operace nebo modul) je spojen, pokud je uspořádán podle dohodnutého plánu a všechny jeho části jsou nerozbitné, to znamená, že slouží společnému účelu.

Základy budování fyzických modulů:

1. Třídy by měly představovat podobné věci nebo komponenty ve stejném složeném objektu.

2. Úzce související třídy by měly být ve stejném modulu a nesouvisející nebo slabě seskupené by měly být umístěny v samostatných částech.

3. Moduly musí mít vysokou úroveň interakce mezi jejich komponentami.

Optimalizace designu

Techniky objektově orientovaného designu

Model analýzy shromažďuje logické informace o systému a součást projektu přidává podrobnosti na podporu efektivního přístupu k němu. Před implementací by měl být program optimalizován, aby byl výstup efektivnější. Cílem zlepšení je minimalizovat náklady z hlediska času, prostoru a dalších metrik.

Optimalizace designu by však neměla být přehnaná, protože důležitými problémy jsou také snadná implementace, udržovatelnost a rozšiřitelnost. V praxi je to jasně vidět. Vývojáři vědí, že dokonale optimalizovaný design je efektivnější, ale méně použitelný. Tímto způsobem musí mistr najít rovnováhu mezi nimi.

Různé věci ke zlepšení:

  • Přidejte nadbytečné asociace.
  • Vynechejte nepoužívané odbory.
  • Optimalizujte algoritmy.
  • Uložte odvozené atributy, abyste zabránili opětovnému výpočtu složitých výrazů.

Zvažte některé body podrobněji.

Přidání nadbytečných asociací.

Během optimalizace projektu se kontroluje, zda vytváření nových odborů může snížit náklady na přístup. I když tyto nadbytečné asociace nemusí přidávat žádné informace, jsou schopny zvýšit účinnost celkového modelu.

Vyloučení nepoužívaných spojení.

Mít příliš mnoho asociací může učinit systém nerozluštitelným a snížit celkovou účinnost. To znamená, že během optimalizace jsou odstraněny všechny nepoužívané spojky.

Vylepšení algoritmů.

V objektově orientovaných systémech se optimalizace datové struktury provádí na základě spolupráce. Jakmile je projekt třídy vytvořen, operace a algoritmy by měly být vylepšeny.

Optimalizace je dosaženo:

  • Permutace pořadí výpočetních problémů.
  • Změny sekvence provádění smyček.
  • Odstranění mrtvých cest v algoritmu.
  • Zachování odvozených atributů.
Články na téma