logo

OOPs | Objektovo orientovaný dizajn

Objektovo orientovaný dizajn začalo hneď od vynájdenia počítačov. Bolo tam programovanie a na scéne sa objavili programovacie prístupy. Programovanie je v podstate zadávanie určitých pokynov počítaču.
Na začiatku výpočtovej éry sa programovanie zvyčajne obmedzovalo na programovanie v strojovom jazyku. Strojový jazyk znamená tie sady inštrukcií, ktoré sú špecifické pre konkrétny stroj alebo procesor, ktoré sú vo forme 0 a 1. Toto sú sekvencie bitov (0100110…). Je však dosť ťažké napísať program alebo vyvinúť softvér v strojovom jazyku.
V skutočnosti je nemožné vyvinúť softvér používaný v dnešných scenároch so sekvenciami bitov. To bol hlavný dôvod, prečo programátori prešli na ďalšiu generáciu programovacích jazykov, pričom vyvinuli jazyky assembleru, ktoré boli dostatočne blízke anglickému jazyku, aby ich bolo možné ľahko pochopiť. Tieto jazyky symbolov sa používali v mikroprocesoroch. S vynálezom mikroprocesora prekvitali assemblerové jazyky a ovládli celý priemysel, no nestačilo to. Programátori opäť prišli s niečím novým, teda so štruktúrovaným a procedurálnym programovaním.



Štruktúrované programovanie -
Základným princípom prístupu štruktúrovaného programovania je rozdelenie programu na funkcie a moduly. Použitie modulov a funkcií robí program zrozumiteľnejším a čitateľnejším. Pomáha písať čistejší kód a udržiavať kontrolu nad funkciami a modulmi. Tento prístup prikladá význam skôr funkciám ako údajom. Zameriava sa na vývoj veľkých softvérových aplikácií, napríklad C bol použitý na vývoj moderných operačných systémov. Programovacie jazyky: PASCAL (predstavil Niklaus Wirth) a C (predstavil Dennis Ritchie) sa riadia týmto prístupom.
Procedurálny programovací prístup –
Tento prístup je známy aj ako prístup zhora nadol. V tomto prístupe je program rozdelený na funkcie, ktoré vykonávajú špecifické úlohy. Tento prístup sa používa hlavne pre stredne veľké aplikácie. Údaje sú globálne a všetky funkcie majú prístup k globálnym údajom. Základnou nevýhodou procedurálneho programovania je, že dáta nie sú zabezpečené, pretože dáta sú globálne a môžu byť prístupné akoukoľvek funkciou. Tok riadenia programu sa dosahuje prostredníctvom volaní funkcií a príkazov goto. Programovacie jazyky: FORTRAN (vyvinutý spoločnosťou IBM) a COBOL (vyvinutý Dr. Grace Murray Hopperovou) sa riadia týmto prístupom.
Tieto programovacie konštrukcie boli vyvinuté koncom 70. a 80. rokov 20. storočia. S týmito jazykmi boli stále nejaké problémy, hoci spĺňali kritériá dobre štruktúrovaných programov, softvéru atď. Neboli také štruktúrované, ako boli vtedajšie požiadavky. Zdá sa, že sú príliš zovšeobecnené a nekorelujú s aplikáciami v reálnom čase.
Na riešenie takýchto druhov problémov, OOP, bol ako riešenie vyvinutý objektovo orientovaný prístup.

Prístup objektovo orientovaného programovania (OOP) –
Koncept OOP bol v podstate navrhnutý tak, aby prekonal nevýhodu vyššie uvedených programovacích metodík, ktoré neboli také blízke aplikáciám v reálnom svete. Dopyt bol zvýšený, ale stále sa používali konvenčné metódy. Tento nový prístup priniesol revolúciu v oblasti metodológie programovania.
Objektovo orientované programovanie (OOP) nie je nič iné ako to, čo umožňuje písanie programov pomocou určitých tried a objektov v reálnom čase. Môžeme povedať, že tento prístup je veľmi blízky reálnemu svetu a jeho aplikáciám, pretože stav a správanie týchto tried a objektov sú takmer rovnaké ako objekty reálneho sveta.
Poďme hlbšie do všeobecných pojmov OOP, ktoré sú uvedené nižšie:
Čo sú trieda a objekt?
Je to základný koncept OOP; rozšírený koncept štruktúry používanej v C. Ide o abstraktný a užívateľom definovaný dátový typ. Pozostáva z niekoľkých premenných a funkcií. Primárnym účelom triedy je ukladať dáta a informácie. Členovia triedy definujú správanie triedy. Trieda je plán objektu, ale tiež môžeme povedať, že implementácia triedy je objekt. Trieda nie je viditeľná pre svet, ale objekt áno.



CPP






Class car> {> >int> car_id;> >char> colour[4];> >float> engine_no;> >double> distance;> > >void> distance_travelled();> >float> petrol_used();> >char> music_player();> >void> display();> }>

>

>

Tu má trieda auto vlastnosti car_id, color, engine_no a distance. Podobá sa skutočnému autu, ktoré má rovnaké špecifikácie, ktoré môžu byť vyhlásené za verejné (viditeľné pre všetkých mimo triedy), chránené a súkromné ​​(neviditeľné pre nikoho). Tiež existujú niektoré metódy, ako napríklad distance_travelled(), petrol_used(), music_player() a display(). V kóde uvedenom nižšie je auto trieda a c1 je objekt auta.

CPP




#include> using> namespace> std;> > class> car {> public>:> >int> car_id;> >double> distance;> > >void> distance_travelled();> > >void> display(>int> a,>int> b)> >{> >cout <<>'car id is= '> << a <<>' distance travelled = '> << b + 5;> >}> };> > int> main()> {> >car c1;>// Declare c1 of type car> >c1.car_id = 321;> >c1.distance = 12;> >c1.display(321, 12);> > >return> 0;> }>

>

>

Abstrakcia údajov –
Abstrakcia sa vzťahuje na akt reprezentácie dôležitých a špeciálnych funkcií bez zahrnutia podrobností o pozadí alebo vysvetlenia tejto funkcie. Abstrakcia údajov zjednodušuje návrh databázy.

    Fyzická úroveň:
    Popisuje spôsob uloženia záznamov, ktoré sú pred používateľom často skryté. Dá sa opísať slovným spojením, blok úložiska.
    Logická úroveň:
    Popisuje údaje uložené v databáze a vzťahy medzi nimi. Programátori vo všeobecnosti pracujú na tejto úrovni, pretože sú si vedomí funkcií potrebných na udržanie vzťahov medzi údajmi.
    Úroveň zobrazenia:
    Aplikačné programy z bezpečnostných dôvodov skrývajú podrobnosti o typoch údajov a informácií. Táto úroveň je vo všeobecnosti implementovaná pomocou GUI a sú zobrazené detaily, ktoré sú určené pre používateľa.

Zapuzdrenie –
Zapuzdrenie je jedným zo základných konceptov objektovo orientovaného programovania (OOP). Opisuje myšlienku zabaľovania údajov a metódy, ktoré pracujú s údajmi v rámci jednej jednotky, napr. triedy v jazyku Java. Tento koncept sa často používa na skrytie vnútornej reprezentácie stavu objektu zvonku.
Dedičstvo -
Dedičnosť je schopnosť jednej triedy dediť schopnosti alebo vlastnosti inej triedy, nazývanej rodičovská trieda. Keď píšeme triedu, dedíme vlastnosti z iných tried. Takže keď vytvoríme triedu, nemusíme znova a znova písať všetky vlastnosti a funkcie, pretože ich možno zdediť od inej triedy, ktorá ju vlastní. Dedičnosť umožňuje používateľovi znova použiť kód vždy, keď je to možné, a znížiť jeho nadbytočnosť.

Java




import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >System.out.println(>'GfG!'>);> > >Dog dog =>new> Dog();> >dog.name =>'Bull dog'>;> >dog.color =>'Brown'>;> >dog.bark();> >dog.run();> > >Cat cat =>new> Cat();> >cat.name =>'Rag doll'>;> >cat.pattern =>'White and slight brownish'>;> >cat.meow();> >cat.run();> > >Animal animal =>new> Animal();> > >animal.name =>'My favourite pets'>;> > >animal.run();> >}> }> > class> Animal {> >String name;> >public> void> run()> >{> > >System.out.println(>'Animal is running!'>);> >}> }> > class> Dog>extends> Animal {> > /// the class dog is the child and animal is the parent> > >String color;> >public> void> bark()> >{> >System.out.println(name +>' Wooh ! Wooh !'> >+>'I am of colour '> + color);> >}> }> > class> Cat>extends> Animal {> > >String pattern;> > >public> void> meow()> >{> >System.out.println(name +>' Meow ! Meow !'> >+>'I am of colour '> + pattern);> >}> }>

>

>

C++




#include> #include> using> namespace> std;> > class> Animal {> public>:> >string name;> >void> run(){> >cout<<>'Animal is running!'>< } }; class Dog : public Animal { /// the class dog is the child and animal is the parent public: string color; void bark(){ cout<' Wooh ! Wooh !' <<'I am of colour '< } }; class Cat : public Animal { public: string pattern; void meow(){ cout<' Meow ! Meow !'<<'I am of colour '< } }; int main(){ cout<<'GFG'< Dog dog; dog.name = 'Bull dog'; dog.color = 'Brown'; dog.bark(); dog.run(); Cat cat; cat.name = 'Rag doll'; cat.pattern = 'White and slight brownish'; cat.meow(); cat.run(); Animal animal; animal.name = 'My favourite pets'; animal.run(); return 0; //code contributed by Sanket Gode. }>

>

>

Výkon

GfG! Bull dog Wooh ! Wooh !I am of colour Brown Animal is running! Rag doll Meow ! Meow !I am of colour White and slight brownish Animal is running! Animal is running!>

Polymorfizmus -
Polymorfizmus je schopnosť údajov spracovávať vo viac ako jednej forme. Umožňuje vykonávať rovnakú úlohu rôznymi spôsobmi. Pozostáva z preťaženia metódy a prepísania metódy, t. j. jednorazového zápisu metódy a vykonania viacerých úloh s rovnakým názvom metódy.

CPP




#include> using> namespace> std;> > void> output(>float>);> void> output(>int>);> void> output(>int>,>float>);> > int> main()> {> >cout <<>' GfG! '>;> >int> a = 23;> >float> b = 2.3;> > >output(a);> >output(b);> >output(a, b);> > >return> 0;> }> > void> output(>int> var)> {>// same function name but different task> >cout <<>'Integer number: '> << var << endl;> }> > void> output(>float> var)> {>// same function name but different task> >cout <<>'Float number: '> << var << endl;> }> > void> output(>int> var1,>float> var2)> {>// same function name but different task> >cout <<>'Integer number: '> << var1;> >cout <<>' and float number:'> << var2;> }>

>

>

premenovať adresár linux

Niektoré dôležité body, ktoré by ste o OOP mali vedieť:

  1. OOP zaobchádza s údajmi ako s kritickým prvkom.
  2. Dôraz sa kladie skôr na údaje ako na postup.
  3. Dekompozícia problému na jednoduchšie moduly.
  4. Neumožňuje voľný tok údajov v celom systéme, tj lokalizovaný riadiaci tok.
  5. Dáta sú chránené pred externými funkciami.

Výhody OOP -

  • Veľmi dobre modeluje skutočný svet.
  • S OOP sú programy jednoduché na pochopenie a údržbu.
  • OOP ponúka opätovnú použiteľnosť kódu. Už vytvorené triedy je možné znova použiť bez toho, aby ste ich museli znova písať.
  • OOP uľahčuje rýchly vývoj programov, kde je možný paralelný vývoj tried.
  • S OOP sa programy ľahšie testujú, spravujú a ladia.

Nevýhody OOP -

  • S OOP majú triedy niekedy tendenciu byť príliš zovšeobecnené.
  • Vzťahy medzi triedami sú občas povrchné.
  • Návrh OOP je zložitý a vyžaduje príslušné znalosti. Tiež je potrebné urobiť správne plánovanie a dizajn pre OOP programovanie.
  • Na programovanie s OOP potrebuje programátor správne zručnosti, ako je dizajn, programovanie a myslenie v súvislosti s objektmi a triedami atď.