OOP třídy. Objektově orientované programování

Pojmy "objekt" a "třída" jsou pro každou osobu obeznámeny. Pro návrháře počítačů však mají svůj vlastní podtext. Jedná se o základní pojmy v objektově orientovaném programování. Třídy - typ dat určuje vývojář, který je charakterizován způsobem jejich přenosu a ukládání, profilem použití a sadou akcí, které mohou provádět. Odlišují se v tom, co lze implementovat jako rozhraní.

Co je OOP (objektově orientovaného programování)

Zkušení vývojáři jsou si dobře vědomi jazyka COBOL a C. psaný na ně byl průběh programu krok za krokem. Používaly postupy a funkce, aby se program stal modulárním. Tato paradigma byla zaměřena na logiku, nikoliv na data, ale na metody jejich sdružování.


Moderní programovací jazyky Delphi, Java, C # a další používají objektově orientovaný přístup. Současně je dána důležitost údajů, nikoliv pouze psaní pokynů pro úkol. Objekt je věc nebo nápad, který chcete simulovat. Mohou to být cokoli, například zaměstnanec, bankovní účet, auto, různé položky situace a tak dále. Pojem objektově orientované programování (OOP) je neoddělitelně spojen s následujícími kritérii:
  • Abstrakce.
  • Zapouzdření.
  • Dědictví.
  • Polymorfismus.
  • Zvažte každou z nich podrobněji.

    Abstrakce

    Toto kritérium umožňuje zaměřit se na to, co objekt sám dělá, ale ne na coTyto způsoby jsou způsoby realizovány v programování. OOP předpokládá, že abstrakce je znalostí o předmětu maximálního množství dat. Pomáhá při vytváření nezávislých modulů, které mohou vzájemně vzájemně ovlivňovat.


    Snažíme se selektivně zaměřit pouze na ty věci, které jsou pro nás důležité (v životě) nebo pro náš modul (v programování). Změna jednoho nezávislého modulu nemá vliv na ostatní. Jediná věc, kterou potřebujete vědět, je to, co nám dává. Osoba, která používá tento modul, se nemusí starat o to, jak je úkol řešen, co se děje na pozadí.
    Každodenní objekty, které používáme, mají abstrakce, které se používají na různých úrovních. Jedním příkladem objektově orientovaného programování je použití brzdění v autě. Tento systém je abstraktní: stačí, aby motorista stlačil pedál, aby vozidlo zpomalilo rychlost a zastavilo se. Změny systému zrychlení neovlivňují brzdový systém, protože jsou nezávislé. Řidič nemusí pochopit vnitřní práci brzd. Je potřeba jen stisknout pedál včas. V takovém případě budou fungovat brzdy (disk i buben) a automobil zpomalí rychlost.

    Zapouzdření

    Tato koncepce úzce souvisí s abstrakcí. Zapouzdření je řešením řešení problémů a nevyžaduje, aby uživatel plně porozuměl své oblasti. Spojuje data a chování s jednou jednotkou a zabraňuje tomu, aby se klient nebo uživatel modulu dozvěděli o interní jednotcereprezentace, ve které je implementováno abstraktivní chování.
    Údaje nejsou přímo dostupné. Přístup k nim probíhá prostřednictvím určitých funkcí. Ukrytí vnitřních prvků objektu chrání jeho integritu a zabraňuje uživatelům převádět data interních komponent do neplatného nebo neslučitelného stavu.

    Dědičnost

    Jedná se o mechanismus opětovného použití kódu, který může přispět ke snížení duplicity. Tento koncept je výkonnou funkcí objektově orientovaných programovacích jazyků. Pomáhá organizovat třídy v hierarchii, což im umožňuje napodobovat atributy a chování z vyšších komponent. Příklad imitace: papoušek je pták, ruský rubl je druh měny. Nicméně fráze "banka je bankovní účet" je nesprávná. Toto spojení je zřejmé, když je nutné popsat některé podstaty v tomto prohlášení problému. Podle dědictví můžete určit celkovou implementaci OOP a jeho chování a pak pro specializované třídy zrušit nebo upravit tyto indikátory pro něco konkrétnějšího. Dědictví nefunguje zpět. Zdroj (takzvaný otec) nebude mít vlastnosti derivátu (podřízená třída). Je důležité si uvědomit, že když se snažíte simulovat řešení, neměli byste přidávat více úrovní dědičnosti. Musíte se pokusit určit obecné atributy a chování v modelovaných objektech. Na základě toho můžete pokračovat v refactoringu kódu, který definuje příslušnou třídu rodičovství. Obecnou implementaci lze přesunout.

    Polymorfismus

    Tento koncept dovolujerozšířit počítačové systémy vytvořením nových specializovaných objektů. Současně umožňuje současnou verzi interakci s novým, bez ohledu na jeho specifické vlastnosti. Například, pokud máte za úkol psát zprávu na kus papíru, můžete použít pero, tužku, značku nebo pero. Stačí, aby se nástroj mohl hodit do ruky a dokázal zanechat stopu při střetu s papírem. Ukazuje se, že určitá jednání člověka na desce dělají poznámku a při používání nástroje to není pro přenos informací tak důležité. Dalším příkladem polymorfismu v systému objektově orientovaného programování je letoun a kosmická loď, která může být nazývána létajícími objekty. Jak se přesně pohybují ve vesmíru? Je zřejmé, že v jejich práci je velký rozdíl. To znamená, že způsoby realizace jejich pohybu jsou různé. Nicméně, z pohledu diváka, oba předměty letí.
    Dedičnost je jedním ze způsobů, jak dosáhnout polymorfismu, když chování definované ve zděděné třídě může být nově definováno napsáním uživatele k provedení metody. Toto se nazývá definice (polymorfismus doby kompilace). Existuje jiná forma polymorfismu, nazývaná přetížení, ve kterém dědictví není vzato v úvahu. Název metody bude stejný, ale argumenty v metodě jsou jiné.

    Vlastnosti pojmů "třída" a "objekt"

    Abychom mohli začít pracovat s objektově orientovaným programováním, musíme zjistit, co je třída OOP a objektu. Je důležité pochopit rozdíl mezi nimi. Třída je plán provytvoření objektu. Definuje atributy a chování. Vypadá to jako technická kresba domu. Objekt je instancí třídy. Zde je rozdíl mezi nimi. Následující příklad ukazuje, jak deklarovaná třída "TForml" a "Forml" programovací jazyk Delphi:



    typu
    TForml = třída (TForm)
    Buttonl: TButton;
    postup ButtonlClick (Odesílatel: TObject);
    ;
    může být
    Formulář: TForml;

    Pokud chceme modelovat v našem programu, jako je například auto, je nutné definovat jeho atributy: model, palivo, značku, barvu, jeho chování a tzv, startování motoru, brzdění, zrychlení, atd. . Je zřejmé, že tyto ukazatele jsou charakteristické nejen pro jednu značku nebo model vozidla.

    V objektově orientovaném přístupu snažíme zobecnit náš objekt (auto) s tím, že budeme modelovat v našem programu bude mít řadu atributů a metod. Mohou existovat i jiné parametry a vlastnosti vozidla, ale máme uvedeny natolik, aby pochopili, jak třídy v PLO.

    Když používáme tato data, vytvoříme auto se specifickými parametry. Při programování stejný objekt (do auta), můžeme mít různé vlastnosti, jak je uvedeno v tabulce níže:

    Objekt Object
    1 2
    model: Vaz 2107 model: Vaz 2109
    palivo: benzín palivo: nafta
    Barva: Barva: zelená
    způsob startování motoru: Start () Způsob nastartování motoru: Spustit()
    metoda brzdění: přetržení () brzdná metoda: přerušení ()
    Metoda zrychlení: Zrychlení () Metoda zrychlení: Zrychlení ()

    Objektivně orientované programování usnadňuje simulaci chování složitého reálného systému. Z OOP dat a funkcí (atributy a metody) jsou kombinovány v objektu. To zabraňuje potřebě obecných nebo globálních OOP dat. Tento přístup je hlavním rozdílem mezi objektově orientovanými a procedurálními přístupy.

    Třídy OOP se skládají z prvků různých typů:

    1. Datová pole: ukládá stav třídy pomocí proměnných a struktur.
    2. Metody: podprogramy pro manipulaci se zadanými daty.
    3. Některé jazyky umožňují třetí typ vlastností. To je něco mezi prvními dvěma.

    Metody

    Chování třídy nebo jejích instancí je určeno metodami. Jedná se o podprogram se schopností ovládat objekty. Tyto operace mohou změnit stav objektu nebo jednoduše poskytnout způsoby, jak se k němu dostat.


    Toto je definice skupiny abstraktních akcí. Zjistí, jaké chování by mělo zobrazovat určitý objekt, aniž by bylo specifikováno, jak by měl být implementován.

    Objekt může mít více rolí a uživatelé ho mohou používat z různých hledisek. Například objekt typu "člověk" může mít určitou roli:

    • Voják (s chováním "střílet v nepřítele").
    • Muž (s chováním "milovat jeho ženu").
    • Daňový poplatník (s chováním "placení daní") a tak dále.

    Avšak každý objekt si uvědomuje své chování svým vlastním způsobem: Míša platí daně včas, Andrew s po lhůtě a Petr to vůbec nečiní. Totéž lze říci o každém objektu a jiných rolích.

    Vyvstává otázka, proč základní třída všech objektů není rozhraním. Důvodem je, že v tomto případě bude každá třída muset zavést malou, ale velmi důležitou skupinu metod, která bude trvat zbytečně dlouho. Ukazuje se, že ne všechny třídy vyžadují konkrétní implementaci - ve většině případů je standardně ve výchozím nastavení standardní. Není třeba ignorovat žádné metody, ale pokud to situace vyžaduje, je možné provést jejich nahrazení.

    Dobrým příkladem jsou tlačítka na přední straně televizoru. Dá se říci, že jsou rozhraním mezi uživatelem a kabelem na druhé straně pouzdra zařízení.K zapnutí a vypnutí spotřebiče klikne osoba, která zapíná napájení. V tomto příkladu je konkrétní televizní instance instance, každá metoda je reprezentována tlačítkem a společně tvoří rozhraní. Ve své nejběžnější formě je specifikací skupiny souvisejících metod bez jejich implementace.

    Návrhář

    Toto kritérium odpovídá za přípravu objektu, například za účelem nastavení počátečních hodnot všech dat a jejich prvků. Přestože hraje zvláštní roli, konstruktér je jen další funkce, která vám umožňuje předávat informace prostřednictvím seznamu argumentů. Můžete je použít k jejich inicializaci. Jméno navrhovatele třídy je stejné.

    Následující příklad vysvětluje koncept konstruktoru třídy v jazyce C ++ (společný programovací jazyk):

    #include
    pomocí jmenného prostoru std;

    třída Line {
    public:
    void setLength (double len);
    double getLength (prázdný);
    Řádek (); //Prohlášení o návrhu
    soukromé: double length;
    };

    //Definice funkcí, včetně konstruktoru

    Řádek :: Line (void) {
    cout "Objekt vytvořen" endl;
    }

    prázdný řádek :: setLength (double len) {
    length = len;
    }

    double Line :: getLength (void) {
    délka návratu;
    }

    //Tělo programu

    int main () {
    Linka;

    //Délka čáry

    line.setLength (6.0);
    cout "Délka řádku:" line.getLength () endl;
    návrat 0;
    }

    Když je výše uvedený kód sestaven a proveden, získá se následující výsledek:

    Vytvořený objekt

    Destructor

    Toto je zvláštní funkce třídy, která ničí objekt jakopouze oblast jeho činnosti končí. Dekteriér kompilátoru se automaticky zavolá, když je objekt mimo dohled.

    Syntaxe destruktor je stejný jako pro konstruktéra, ale název třídy používané v tomto případě pro něj podepsat vlnovky „~“ jako předponu.

    V následujícím příkladu je jazyk C ++ destructor vysvětluje pojem:

    #include
    pomocí namespace std;

    třída Line {
    public: void setLength (double len);
    double getLength (prázdný);
    Řádek (); //Anotace designérů
    ~ Řádek (); //Destroyer Oznámení
    soukromé: double length;
    }

    //definice funkcí, včetně designér

    linka :: Linka (void) {
    cout "Objekt vytvořil" endl;
    }

    linie :: ~ linka (void) {
    cout "vzdálený předmět" endl;
    }

    void Line :: setLength (double len) {
    délka = len;
    }

    dvojitý řádek :: getLength (void) {
    délka návratu;
    }

    //Tělo programu

    int main () {
    , sdružené;

    //délka řádku

    line.setLength (6.0);
    cout "Délka řádku:" line.getLength () endl;
    návrat 0;

    }

    , pokud je podáván výše uvedený kód je sestaven a proveden, dá následující výsledek:

    zařízení založena [193 ]

    Délka řádku: 6

    Objekt je vzdálený

    objekty jsou rozděleny do tří kategorií:
  • Rychlý vývoj.
  • Snadná údržba.
  • Opětovné použití kódu a návrhu.
  • Třídy a PLO obecně přispívají k rychlému vývoji, protože snižují sémantickou mezeru mezi kódem a uživateli. Stojí to za tohodnocené mnoha programátory. Pomocí tohoto systému mohou analytici komunikovat s vývojáři i uživateli pomocí stejného slovníku, mluvit o účtech, klientech, účtech atd. Třídy objektů často přispívají k rychlému vývoji, protože většina objektově orientovaných prostředí má výkonné nástroje pro ladění a testování. Instance instancí je možné zkontrolovat během provádění, aby se zajistilo správné fungování systému. Navíc namísto získání jaderného výpisu většina objektově orientovaných prostředí interpretuje možnosti ladění. Výsledkem je, že vývojáři mohou přesně analyzovat, kde došlo k chybě v programu, a zjistit, jaké metody, argumenty a hodnoty byly použity.

    Související publikace