Objektově orientovaný design začalo hned od chvíle, kdy byly vynalezeny počítače. Bylo tam programování a na scéně se objevily programátorské přístupy. Programování je v podstatě dávání určitých pokynů počítači.
Na začátku éry výpočetní techniky se programování obvykle omezovalo na programování ve strojovém jazyce. Strojový jazyk znamená ty sady instrukcí, které jsou specifické pro konkrétní stroj nebo procesor, které jsou ve tvaru 0 a 1. Toto jsou sekvence bitů (0100110…). Ale je docela obtížné napsat program nebo vyvinout software ve strojovém jazyce.
Ve skutečnosti je nemožné vyvinout software používaný v dnešních scénářích se sekvencemi bitů. To byl hlavní důvod, proč programátoři přešli na další generaci programovacích jazyků, vyvíjeli jazyky assembler, které byly dostatečně blízké angličtině, aby je bylo možné snadno pochopit. Tyto jazyky symbolů se používaly v mikroprocesorech. S vynálezem mikroprocesoru vzkvétaly assemblery a ovládly průmysl, ale to nestačilo. Programátoři opět přišli s něčím novým, tedy strukturovaným a procedurálním programováním.

Strukturované programování –
Základním principem přístupu strukturovaného programování je rozdělení programu na funkce a moduly. Díky použití modulů a funkcí je program srozumitelnější a čitelnější. Pomáhá psát čistší kód a udržovat kontrolu nad funkcemi a moduly. Tento přístup dává význam spíše funkcím než datům. Zaměřuje se na vývoj velkých softwarových aplikací, například C byl použit pro vývoj moderních operačních systémů. Programovací jazyky: PASCAL (představil Niklaus Wirth) a C (představil Dennis Ritchie) se řídí tímto přístupem.
Procedurální programovací přístup –
Tento přístup je také známý jako přístup shora dolů. V tomto přístupu je program rozdělen na funkce, které provádějí specifické úkoly. Tento přístup se používá hlavně pro středně velké aplikace. Data jsou globální a všechny funkce mají přístup ke globálním datům. Základní nevýhodou procedurálního programování je, že data nejsou zabezpečena, protože data jsou globální a lze k nim přistupovat jakoukoli funkcí. Toku řízení programu je dosaženo prostřednictvím volání funkcí a příkazů goto. Programovací jazyky: FORTRAN (vyvinutý společností IBM) a COBOL (vyvinutý Dr. Grace Murray Hopperovou) se řídí tímto přístupem.
Tyto programovací konstrukce byly vyvinuty na konci 70. a 80. let 20. století. S těmito jazyky byly stále nějaké problémy, ačkoli splňovaly kritéria dobře strukturovaných programů, softwaru atd. Nebyly tak strukturované, jak byly v té době požadavky. Zdá se, že jsou příliš zobecněné a nekorelují s aplikacemi v reálném čase.
K řešení takových druhů problémů byl jako řešení vyvinut objektově orientovaný přístup, OOP.

Přístup objektově orientovaného programování (OOP) –
Koncept OOP byl v podstatě navržen tak, aby překonal nedostatky výše uvedených programovacích metodologií, které nebyly tak blízké aplikacím v reálném světě. Poptávka se zvýšila, ale stále se používaly konvenční metody. Tento nový přístup přinesl revoluci v oblasti metodologie programování.
Objektově orientované programování (OOP) není nic jiného než to, co umožňuje psát programy pomocí určitých tříd a objektů v reálném čase. Můžeme říci, že tento přístup je velmi blízký reálnému světu a jeho aplikacím, protože stav a chování těchto tříd a objektů jsou téměř stejné jako u objektů reálného světa.
Pojďme hlouběji do obecných pojmů OOP, které jsou uvedeny níže:
Co jsou třídy a objekty?
Je to základní koncept OOP; rozšířený koncept struktury používané v C. Jedná se o abstraktní a uživatelem definovaný datový typ. Skládá se z několika proměnných a funkcí. Primárním účelem třídy je ukládat data a informace. Členové třídy definují chování třídy. Třída je plán objektu, ale také můžeme říci, že implementace třídy je objekt. Třída není světu viditelná, ale objekt ano.
CPP
jpa na jaře
Class car> {> >int> car_id;> >char> colour[4];> >float> engine_no;> >double> distance;> > >void> distance_travelled();> >float> petrol_used();> >char> music_player();> >void> display();> }> |
>
>
Zde má třída auto vlastnosti car_id, colour, engine_no a distance. Podobá se skutečnému autu, které má stejné specifikace, které lze prohlásit za veřejné (viditelné pro všechny mimo třídu), chráněné a soukromé (neviditelné pro nikoho). Existují také některé metody, jako je distance_travelled(), petrol_used(), music_player() a display(). V níže uvedeném kódu je auto třída a c1 je objekt automobilu.
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;> }> |
>
tostring java
>
Abstrakce dat –
Abstrakce se týká aktu reprezentace důležitých a speciálních prvků bez zahrnutí podrobností o pozadí nebo vysvětlení tohoto prvku. Abstrakce dat zjednodušuje návrh databáze.

- Fyzická úroveň:
Popisuje, jak jsou uloženy záznamy, které jsou uživateli často skryté. Lze to popsat frází, blok úložiště.
Logická úroveň:
Popisuje data uložená v databázi a vztahy mezi daty. Programátoři obecně pracují na této úrovni, protože jsou si vědomi funkcí potřebných k udržení vztahů mezi daty.
Úroveň zobrazení:
Aplikační programy z bezpečnostních důvodů skrývají podrobnosti o typech dat a informací. Tato úroveň je obecně implementována pomocí GUI a jsou zobrazeny podrobnosti, které jsou určeny pro uživatele.
Zapouzdření –
Zapouzdření je jedním ze základních konceptů objektově orientovaného programování (OOP). Popisuje myšlenku zalamování dat a metody, které pracují s daty v rámci jedné jednotky, např. třídy v Javě. Tento koncept se často používá ke skrytí reprezentace vnitřního stavu objektu zvenčí.
Dědictví -
Dědičnost je schopnost jedné třídy zdědit schopnosti nebo vlastnosti jiné třídy, nazývané rodičovská třída. Když píšeme třídu, dědíme vlastnosti z jiných tříd. Když tedy vytvoříme třídu, nemusíme znovu a znovu psát všechny vlastnosti a funkce, protože je lze zdědit od jiné třídy, která ji vlastní. Dědičnost umožňuje uživateli znovu použít kód, kdykoli je to možné, a snížit jeho redundanci.

Jáva
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);> >}> }> |
>
dateformat.format java
>
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ýstup
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!>
Polymorfismus –
Polymorfismus je schopnost zpracovávat data ve více než jedné formě. Umožňuje provádět stejný úkol různými způsoby. Skládá se z přetížení metody a přepsání metody, tj. jednou zapsat metodu a provést několik úloh se stejným názvem metody.

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;> }> |
prolomit mapu
>
>
Některé důležité body, které byste o OOP měli vědět:
- OOP zachází s daty jako s kritickým prvkem.
- Důraz je kladen spíše na data než na postup.
- Dekompozice problému do jednodušších modulů.
- Neumožňuje volný tok dat v celém systému, tj. lokalizovaný tok řízení.
- Data jsou chráněna před externími funkcemi.
Výhody OOP –
- Velmi dobře modeluje skutečný svět.
- S OOP jsou programy snadno pochopitelné a udržovatelné.
- OOP nabízí opětovnou použitelnost kódu. Již vytvořené třídy lze znovu použít, aniž byste je museli znovu psát.
- OOP umožňuje rychlý vývoj programů, kde je možný paralelní vývoj tříd.
- S OOP se programy snadněji testují, spravují a ladí.
Nevýhody OOP –
- S OOP mají třídy někdy tendenci být příliš zobecněné.
- Vztahy mezi třídami jsou občas povrchní.
- Návrh OOP je složitý a vyžaduje odpovídající znalosti. Také je potřeba udělat správné plánování a design pro OOP programování.
- K programování s OOP potřebuje programátor správné dovednosti, jako je navrhování, programování a myšlení ve smyslu objektů a tříd atd.