Objektno usmerjeno oblikovanje se je začelo takoj, ko so bili izumljeni računalniki. Programiranje je bilo tam in programski pristopi so se pojavili. Programiranje je v bistvu dajanje določenih navodil računalniku.
Na začetku računalniške dobe je bilo programiranje običajno omejeno na programiranje v strojnem jeziku. Strojni jezik pomeni tiste nize navodil, ki so specifični za določen stroj ali procesor in so v obliki 0 in 1. To so zaporedja bitov (0100110…). Vendar je precej težko napisati program ali razviti programsko opremo v strojnem jeziku.
Pravzaprav je nemogoče razviti programsko opremo, ki se uporablja v današnjih scenarijih z zaporedji bitov. To je bil glavni razlog, da so programerji prešli na naslednjo generacijo programskih jezikov in razvili zbirne jezike, ki so bili dovolj blizu angleškemu jeziku, da jih je bilo enostavno razumeti. Ti zbirni jeziki so bili uporabljeni v mikroprocesorjih. Z izumom mikroprocesorja so se zbirni jeziki razcveteli in zavladali industriji, vendar to ni bilo dovolj. Spet so programerji prišli do nečesa novega, to je strukturiranega in proceduralnega programiranja.

strani, kot je bedpage
Strukturirano programiranje –
Osnovno načelo pristopa strukturiranega programiranja je razdelitev programa na funkcije in module. Zaradi uporabe modulov in funkcij je program bolj razumljiv in berljiv. Pomaga pri pisanju čistejše kode in ohranjanju nadzora nad funkcijami in moduli. Ta pristop daje pomembnejše funkcije namesto podatkov. Osredotoča se na razvoj velikih programskih aplikacij, na primer C je bil uporabljen za razvoj sodobnih operacijskih sistemov. Programska jezika: PASCAL (ki ga je predstavil Niklaus Wirth) in C (ki ga je predstavil Dennis Ritchie) sledita temu pristopu.
Proceduralni programski pristop –
Ta pristop je znan tudi kot pristop od zgoraj navzdol. Pri tem pristopu je program razdeljen na funkcije, ki opravljajo določene naloge. Ta pristop se uporablja predvsem za srednje velike aplikacije. Podatki so globalni in vse funkcije lahko dostopajo do globalnih podatkov. Osnovna pomanjkljivost pristopa proceduralnega programiranja je, da podatki niso zavarovani, ker so podatki globalni in do njih lahko dostopa katera koli funkcija. Potek nadzora programa se doseže s klici funkcij in stavki goto. Programska jezika: FORTRAN (ki ga je razvil IBM) in COBOL (ki ga je razvila dr. Grace Murray Hopper) sledita temu pristopu.
Ti programski konstrukti so bili razviti v poznih sedemdesetih in osemdesetih letih prejšnjega stoletja. Še vedno je bilo nekaj težav s temi jeziki, čeprav so izpolnjevali kriterije dobro strukturiranih programov, programske opreme itd. Niso bili tako strukturirani, kot so bile takratne zahteve. Zdi se, da so preveč posplošeni in niso v korelaciji z aplikacijami v realnem času.
Za reševanje tovrstnih problemov je bil kot rešitev razvit OOP, objektno usmerjen pristop.

Pristop objektno usmerjenega programiranja (OOP) –
Koncept OOP je bil v osnovi zasnovan za premagovanje pomanjkljivosti zgornjih metodologij programiranja, ki niso bile tako blizu aplikacijam v resničnem svetu. Povpraševanje se je povečalo, vendar so se še vedno uporabljale konvencionalne metode. Ta nov pristop je prinesel revolucijo na področju metodologije programiranja.
Objektno usmerjeno programiranje (OOP) ni nič drugega kot tisto, ki omogoča pisanje programov s pomočjo določenih razredov in objektov v realnem času. Lahko rečemo, da je ta pristop zelo blizu resničnemu svetu in njegovim aplikacijam, ker sta stanje in obnašanje teh razredov in objektov skoraj enaka objektom iz resničnega sveta.
Poglobimo se v splošne koncepte OOP, ki so navedeni spodaj:
Kaj sta razred in predmet?
Je osnovni koncept OOP; razširjen koncept strukture, ki se uporablja v C. Je abstrakten in uporabniško definiran podatkovni tip. Sestavljen je iz več spremenljivk in funkcij. Glavni namen razreda je shranjevanje podatkov in informacij. Člani razreda definirajo vedenje razreda. Razred je načrt predmeta, lahko pa rečemo tudi, da je implementacija razreda predmet. Razred ni viden svetu, predmet pa je.
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 ima razred car lastnosti car_id, colour, engine_no in distance. Podoben je resničnemu avtomobilu z enakimi specifikacijami, ki ga je mogoče razglasiti za javnega (vidnega vsem zunaj razreda), zaščitenega in zasebnega (vidnega nikomur). Obstaja tudi nekaj metod, kot so distance_travelled(), petrol_used(), music_player() in display(). V spodnji kodi je avto razred, c1 pa objekt avtomobila.
razvrščen arraylist v Javi
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;> }> |
>
>
Abstrakcija podatkov –
Abstrakcija se nanaša na dejanje predstavljanja pomembnih in posebnih značilnosti brez vključitve podrobnosti ozadja ali razlage o tej značilnosti. Abstrakcija podatkov poenostavi oblikovanje baze podatkov.

filmska igralka rekha
- Fizična raven:
Opisuje način shranjevanja zapisov, ki so pogosto skriti pred uporabnikom. Lahko ga opišemo s frazo blok shranjevanja.
Logična raven:
Opisuje podatke, shranjene v bazi podatkov, in razmerja med podatki. Programerji na splošno delujejo na tej ravni, saj se zavedajo funkcij, ki so potrebne za vzdrževanje odnosov med podatki.
Raven pogleda:
Aplikacijski programi zaradi varnosti skrivajo podrobnosti o tipih podatkov in informacijah. Ta raven je na splošno implementirana s pomočjo GUI in prikazane so podrobnosti, ki so namenjene uporabniku.
Enkapsulacija –
Enkapsulacija je eden temeljnih konceptov v objektno usmerjenem programiranju (OOP). Opisuje idejo ovijanja podatkov in metode, ki delujejo na podatkih znotraj ene enote, npr. razreda v Javi. Ta koncept se pogosto uporablja za skrivanje predstavitve notranjega stanja predmeta od zunaj.
dedovanje –
Dedovanje je zmožnost enega razreda, da podeduje zmožnosti ali lastnosti drugega razreda, ki se imenuje nadrejeni razred. Ko pišemo razred, podedujemo lastnosti drugih razredov. Torej, ko ustvarimo razred, nam ni treba znova in znova pisati vseh lastnosti in funkcij, saj jih lahko podedujemo od drugega razreda, ki ga ima. Dedovanje omogoča uporabniku, da znova uporabi kodo, kadar koli je to mogoče, in zmanjša njeno redundanco.

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. }> |
>
>
igralec saira banuIzhod
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!>
polimorfizem –
Polimorfizem je sposobnost obdelave podatkov v več kot eni obliki. Omogoča izvedbo iste naloge na različne načine. Sestavljen je iz preobremenitve metode in preglasitve metode, tj. enkratno pisanje metode in izvajanje več nalog z istim imenom metode.

CPP
java pretvori niz v int
#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;> }> |
>
>
Nekaj pomembnih točk, ki jih morate vedeti o OOP:
- OOP obravnava podatke kot kritičen element.
- Poudarek je na podatkih in ne na postopku.
- Dekompozicija problema na enostavnejše module.
- Ne dovoljuje prostega pretoka podatkov v celotnem sistemu, tj. lokaliziran nadzorni tok.
- Podatki so zaščiteni pred zunanjimi funkcijami.
Prednosti OOP-jev –
- Zelo dobro modelira resnični svet.
- Z OOP so programi enostavni za razumevanje in vzdrževanje.
- OOP ponuja možnost ponovne uporabe kode. Že ustvarjene razrede je mogoče ponovno uporabiti, ne da bi jih bilo treba znova pisati.
- OOP omogoča hiter razvoj programov, kjer je možen vzporedni razvoj razredov.
- Z OOP je programe lažje testirati, upravljati in odpravljati napake.
Slabosti OOP –
- Pri OOP so razredi včasih preveč posplošeni.
- Odnosi med razredi postanejo včasih površni.
- Zasnova OOP je težavna in zahteva ustrezno znanje. Prav tako je potrebno ustrezno načrtovati in oblikovati OOP programiranje.
- Za programiranje z OOP programer potrebuje ustrezne veščine, kot so načrtovanje, programiranje in razmišljanje v smislu objektov in razredov itd.