Programovanie

Skúmanie zovšeobecnenia, špecializácie a závislosti v OOP

OOP (objektovo orientované programovanie) je paradigma, ktorá sa zameriava skôr na objekty a údaje, ako na akcie a logiku. Pri práci s OOP je nevyhnutné identifikovať objekty a ich vzťahy.

V OOP je problém rozložený na množstvo objektov a na to, ako spolu súvisia - proces známy ako dátové modelovanie. Medzi základné vzťahy medzi objektmi patria: asociácia, zovšeobecnenie, špecializácia, agregácia, závislosť a zloženie. V tomto článku by sme diskutovali o závislostných a dedičských vzťahoch v OOP s príkladmi kódu v C # na ilustráciu konceptov.

Závislosť

Závislosť je vzťah medzi dvoma alebo viacerými objektmi, v ktorom je objekt pri svojej implementácii závislý od druhého objektu alebo objektov. Ak sa jeden z týchto objektov zmení, môže to zasiahnuť ďalšie objekty. Vzťah závislosti medzi dvoma alebo viacerými objektmi je v UML zobrazený pomocou prerušovaných šípok. Inými slovami, ak existuje vzťah závislosti medzi dvoma alebo viacerými objektmi, objekt musí vedieť o ďalších objektoch, na ktorých závisí.

Zvážte triedy BlogEntry a View. Zatiaľ čo prvá obsahuje všetky súvisiace informácie súvisiace s položkami blogu, druhá sa týka zobrazenia údajov prijatých z triedy BlogEntry na užívateľskom rozhraní. Trieda View teda závisí od triedy BlogEntry, ktorá má zobrazovať obsah (položky blogu) v používateľskom rozhraní. Medzi triedami View a BlogEntry teda existuje vzťah závislosti. Vzťah závislosti je v UML reprezentovaný prerušovanou šípkou.

verejná trieda BlogEntry

    {

// Členovia triedy BlogEntry

    }

verejná trieda Zobraziť

    {

// Členovia triedy View

    }

Zovšeobecnenie a špecializácia

Zovšeobecnenie možno definovať ako techniku ​​extrakcie základných charakteristík (patria sem atribúty, vlastnosti a metódy) z dvoch alebo viacerých podtried a ich kombinácie vo vnútri zovšeobecnenej základnej triedy (nazývanej tiež nadtrieda). Naopak, špecializácia je obrátená k zovšeobecneniu - slúži na vyjadrenie vzťahu typu typu vytváraním podtried z existujúcich základných tried.

Dedenie je definované ako schopnosť triedy rozšíriť jednu alebo viac tried (tiež známych ako základné triedy). Všimnite si, že zovšeobecnenie je najsilnejšou formou triednych vzťahov, pretože triedy zúčastňujúce sa na zovšeobecňovacom vzťahu sú navzájom úzko spojené - väčšina vnútorných zložitostí nadradenej triedy je viditeľná pre podradenú triedu.

Trieda, ktorá rozširuje základnú alebo nadradenú triedu, je tiež známa ako podradená trieda alebo odvodená trieda. Zdedená alebo zovšeobecnená trieda rozširuje alebo dedí svoju základnú alebo nadradenú triedu. V rámci dedenia dedí podradená trieda metódy a atribúty základnej alebo nadradenej triedy okrem tých, ktoré sú súkromné. Súkromní členovia základnej triedy v podstate nie sú zdedení, pretože patria „výlučne“ do triedy, ktorej sú súčasťou. Preto by ste mali zovšeobecnenie využiť, iba ak potrebujete reprezentovať triedu, ktorá je v skutočnosti špecializovanejšou formou inej triedy.

Dedenie je nasledujúcich typov:

  • Slobodný
  • Viacnásobné
  • Viacúrovňový
  • Hierarchické
  • Hybrid

Samostatné dedičstvo je najjednoduchšia forma dedičstva, v ktorej jedna trieda rozširuje inú triedu. Nasledujúci úryvok kódu ilustruje túto formu dedenia - všimnite si, ako trieda BlogAuthor rozširuje triedu Author.

verejná trieda Autor

    {

// Členovia triedy Author

    }

public class BlogAuthor: Autor

    {

// Členovia triedy BlogAuthor

    }

Vo viacnásobnom dedičstve máte niekoľko základných tried, od ktorých je odvodená trieda. Upozorňujeme, že viacnásobné dedenie nie je podporované v programovacích jazykoch OOP, ako sú Java alebo C #.

Ďalším typom dedičstva v našom zozname je viacúrovňové dedičstvo. V tejto forme dedičstva máte navzájom zdedené triedy, ktoré tvoria reťaz. Ilustruje to nasledujúci úryvok kódu.

verejná trieda Osoba

    {

// Členovia triedy Person

    }

verejná trieda Autor: Osoba

    {

// Členovia triedy Author

    }

public class BlogAuthor: Autor

    {

// Členovia triedy BlogAuthor

    }

V hierarchickom dedičstve máte triedy, ktoré predstavujú hierarchickú štruktúru prostredníctvom dedičstva, podobne ako v rodokmeni. V tomto type dedičstva máte viac ako jednu podradenú triedu s rovnakou základnou alebo nadradenou triedou. Inými slovami, jedná sa o typ dedičstva, v ktorom má jedna alebo viac odvodených tried spoločnú základnú alebo rodičovskú triedu.

Hybridné dedičstvo je druh dedičstva, pri ktorom sú dve alebo viac foriem dedičstva spojené do jednej. Tento typ dedičstva je v podstate kombináciou dvoch alebo viacerých foriem dedičstva, ktoré vytvárajú uzavretú štruktúru. Upozorňujeme, že hybridná dedičnosť tiež nie je podporovaná v programovacích jazykoch OO, ako sú C # alebo Java.

$config[zx-auto] not found$config[zx-overlay] not found