Objektorienteret design startede lige fra det øjeblik, computere blev opfundet. Programmering var der, og programmeringstilgange kom ind i billedet. Programmering er grundlæggende at give visse instruktioner til computeren.
I begyndelsen af computer-æraen var programmering normalt begrænset til maskinsprogprogrammering. Maskinsprog betyder de sæt instruktioner, der er specifikke for en bestemt maskine eller processor, som er i form af 0'er og 1'er. Disse er sekvenser af bit (0100110…). Men det er ret svært at skrive et program eller udvikle software på maskinsprog.
Det er faktisk umuligt at udvikle software brugt i nutidens scenarier med sekvenser af bits. Dette var hovedårsagen til, at programmører gik videre til den næste generation af programmeringssprog, og udviklede assemblersprog, som var tæt nok på det engelske sprog til let at forstå. Disse assemblersprog blev brugt i mikroprocessorer. Med opfindelsen af mikroprocessoren blomstrede assemblersprog og herskede over industrien, men det var ikke nok. Igen fandt programmører op med noget nyt, dvs. struktureret og proceduremæssig programmering.
Struktureret programmering –
Grundprincippet i den strukturerede programmeringstilgang er at opdele et program i funktioner og moduler. Brugen af moduler og funktioner gør programmet mere forståeligt og læsbart. Det hjælper med at skrive renere kode og bevare kontrollen over funktionerne og modulerne. Denne tilgang lægger vægt på funktioner frem for data. Det fokuserer på udvikling af store softwareapplikationer, for eksempel blev C brugt til moderne operativsystemudvikling. Programmeringssprogene: PASCAL (introduceret af Niklaus Wirth) og C (introduceret af Dennis Ritchie) følger denne tilgang.
Procedurel programmeringstilgang –
Denne tilgang er også kendt som top-down tilgangen. I denne tilgang er et program opdelt i funktioner, der udfører specifikke opgaver. Denne tilgang bruges hovedsageligt til mellemstore applikationer. Data er globale, og alle funktioner kan få adgang til globale data. Den grundlæggende ulempe ved den proceduremæssige programmeringstilgang er, at data ikke er sikret, fordi data er globale og kan tilgås af enhver funktion. Programkontrolflow opnås gennem funktionskald og goto-sætninger. Programmeringssprogene: FORTRAN (udviklet af IBM) og COBOL (udviklet af Dr. Grace Murray Hopper) følger denne tilgang.
Disse programmeringskonstruktioner blev udviklet i slutningen af 1970'erne og 1980'erne. Der var stadig nogle problemer med disse sprog, selvom de opfyldte kriterierne for velstrukturerede programmer, software osv. De var ikke så strukturerede, som kravene var på det tidspunkt. De ser ud til at være overgeneraliserede og korrelerer ikke med realtidsapplikationer.
For at løse den slags problemer, OOP, blev der udviklet en objektorienteret tilgang som løsning.
Den objektorienterede programmeringstilgang (OOP) –
OOP-konceptet var dybest set designet til at overvinde ulempen ved ovenstående programmeringsmetoder, som ikke var så tæt på virkelige applikationer. Efterspørgslen blev øget, men alligevel blev der brugt konventionelle metoder. Denne nye tilgang bragte en revolution inden for programmeringsmetodologiområdet.
Objektorienteret programmering (OOP) er intet andet end det, der tillader skrivning af programmer ved hjælp af bestemte klasser og realtidsobjekter. Vi kan sige, at denne tilgang er meget tæt på den virkelige verden og dens anvendelser, fordi tilstanden og adfærden af disse klasser og objekter er næsten den samme som objekter i den virkelige verden.
Lad os gå dybere ind i de generelle koncepter for OOP, som er givet nedenfor:
Hvad er klasse og objekt?
Det er det grundlæggende koncept for OOP; et udvidet koncept af strukturen brugt i C. Det er en abstrakt og brugerdefineret datatype. Den består af flere variabler og funktioner. Klassens primære formål er at gemme data og information. Medlemmerne af en klasse definerer klassens adfærd. En klasse er planen for objektet, men vi kan også sige, at implementeringen af klassen er objektet. Klassen er ikke synlig for verden, men objektet er det.
CPP
java operatør
Class car> {> > int> car_id;> > char> colour[4];> > float> engine_no;> > double> distance;> > > void> distance_travelled();> > float> petrol_used();> > char> music_player();> > void> display();> }> |
>
>
Her har klassebilen egenskaber car_id, colour, engine_no og distance. Den ligner den virkelige bil, der har de samme specifikationer, som kan erklæres offentlig (synlig for alle uden for klassen), beskyttet og privat (synlig for ingen). Der er også nogle metoder såsom distance_travelled(), petrol_used(), music_player() og display(). I koden nedenfor er bilen en klasse, og c1 er en genstand for bilen.
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;> }> |
>
>
Dataabstraktion –
Abstraktion refererer til handlingen med at repræsentere vigtige og specielle træk uden at inkludere baggrundsdetaljerne eller forklaringen om det træk. Dataabstraktion forenkler databasedesign.
- Fysisk niveau:
Den beskriver, hvordan registreringerne opbevares, som ofte er skjult for brugeren. Det kan beskrives med sætningen, blok af opbevaring.
Logisk niveau:
Den beskriver data gemt i databasen og relationerne mellem dataene. Programmørerne arbejder generelt på dette niveau, da de er opmærksomme på de funktioner, der er nødvendige for at opretholde relationerne mellem dataene.
Visningsniveau:
Applikationsprogrammer skjuler detaljer om datatyper og information af sikkerhedsmæssige årsager. Dette niveau implementeres generelt ved hjælp af GUI, og detaljer, der er beregnet til brugeren, vises.
Indkapsling –
Encapsulation er et af de grundlæggende begreber i objektorienteret programmering (OOP). Den beskriver ideen om at pakke data og de metoder, der fungerer på data inden for en enhed, f.eks. en klasse i Java. Dette koncept bruges ofte til at skjule den indre tilstandsrepræsentation af et objekt udefra.
arv –
Arv er en klasses evne til at arve egenskaber eller egenskaber fra en anden klasse, kaldet overordnet klasse. Når vi skriver en klasse, arver vi egenskaber fra andre klasser. Så når vi opretter en klasse, behøver vi ikke skrive alle egenskaberne og funktionerne igen og igen, da disse kan arves fra en anden klasse, der besidder den. Nedarvning giver brugeren mulighed for at genbruge koden, når det er muligt og reducere dens redundans.
Java
watchcartoononline.io alternativer
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. }> |
>
>Produktion
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!>
Polymorfi -
Polymorfi er dataens evne til at blive behandlet i mere end én form. Det gør det muligt at udføre den samme opgave på forskellige måder. Den består af metodeoverbelastning og metodetilsidesættelse, det vil sige at skrive metoden én gang og udføre en række opgaver med samme metodenavn.
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;> }> |
>
>
Nogle vigtige punkter at vide om OOP:
- OOP behandler data som et kritisk element.
- Der lægges vægt på data frem for procedure.
- Dekomponering af problemet i enklere moduler.
- Tillader ikke data at flyde frit i hele systemet, dvs. lokaliseret kontrolflow.
- Data er beskyttet mod eksterne funktioner.
Fordele ved OOPs –
- Det modellerer den virkelige verden meget godt.
- Med OOP er programmer nemme at forstå og vedligeholde.
- OOP tilbyder kodegenanvendelighed. Allerede oprettede klasser kan genbruges uden at skulle skrive dem igen.
- OOP letter den hurtige udvikling af programmer, hvor parallel udvikling af klasser er mulig.
- Med OOP er programmer nemmere at teste, administrere og fejlfinde.
Ulemper ved OOP -
- Med OOP har klasser nogle gange en tendens til at være overgeneraliserede.
- Forholdet mellem klasserne bliver til tider overfladisk.
- OOP-designet er vanskeligt og kræver passende viden. Man skal også lave ordentlig planlægning og design til OOP-programmering.
- For at programmere med OOP har programmøren brug for ordentlige færdigheder såsom design, programmering og tænkning i form af objekter og klasser osv.