logo

OOPs | Objektorientert design

Objektorientert design startet helt fra det øyeblikket datamaskiner ble oppfunnet. Programmering var der, og programmeringstilnærminger kom inn i bildet. Programmering er i utgangspunktet å gi visse instruksjoner til datamaskinen.
I begynnelsen av dataepoken var programmering vanligvis begrenset til maskinspråkprogrammering. Maskinspråk betyr de settene med instruksjoner som er spesifikke for en bestemt maskin eller prosessor, som er i form av 0-er og 1-er. Dette er sekvenser av biter (0100110...). Men det er ganske vanskelig å skrive et program eller utvikle programvare på maskinspråk.
Det er faktisk umulig å utvikle programvare som brukes i dagens scenarier med sekvenser av biter. Dette var hovedgrunnen til at programmerere gikk videre til neste generasjon programmeringsspråk, og utviklet assembly-språk, som var nær nok til det engelske språket til å enkelt forstå. Disse monteringsspråkene ble brukt i mikroprosessorer. Med oppfinnelsen av mikroprosessoren blomstret monteringsspråk og styrte over industrien, men det var ikke nok. Igjen kom programmerere opp med noe nytt, det vil si strukturert og prosedyremessig programmering.



Strukturert programmering –
Grunnprinsippet for tilnærmingen til strukturert programmering er å dele et program inn i funksjoner og moduler. Bruken av moduler og funksjoner gjør programmet mer forståelig og lesbart. Det hjelper å skrive renere kode og opprettholde kontroll over funksjonene og modulene. Denne tilnærmingen legger vekt på funksjoner i stedet for data. Den fokuserer på utvikling av store programvareapplikasjoner, for eksempel ble C brukt til moderne operativsystemutvikling. Programmeringsspråkene: PASCAL (introdusert av Niklaus Wirth) og C (introdusert av Dennis Ritchie) følger denne tilnærmingen.
Prosedyremessig programmeringsmetode –
Denne tilnærmingen er også kjent som top-down-tilnærmingen. I denne tilnærmingen er et program delt inn i funksjoner som utfører spesifikke oppgaver. Denne tilnærmingen brukes hovedsakelig for mellomstore applikasjoner. Data er globale, og alle funksjonene har tilgang til globale data. Den grunnleggende ulempen med prosedyreprogrammeringstilnærmingen er at data ikke er sikret fordi data er globale og kan nås av enhver funksjon. Programkontrollflyt oppnås gjennom funksjonskall og goto-setninger. Programmeringsspråkene: FORTRAN (utviklet av IBM) og COBOL (utviklet av Dr. Grace Murray Hopper) følger denne tilnærmingen.
Disse programmeringskonstruksjonene ble utviklet på slutten av 1970- og 1980-tallet. Det var fortsatt noen problemer med disse språkene, selv om de oppfylte kriteriene for godt strukturerte programmer, programvare osv. De var ikke så strukturerte som kravene var på den tiden. De ser ut til å være overgeneraliserte og korrelerer ikke med sanntidsapplikasjoner.
For å løse slike problemer, OOP, ble det utviklet en objektorientert tilnærming som løsning.

Tilnærmingen til objektorientert programmering (OOP) –
OOP-konseptet ble i utgangspunktet designet for å overvinne ulempen med programmeringsmetodene ovenfor, som ikke var så nær virkelige applikasjoner. Etterspørselen ble økt, men likevel ble konvensjonelle metoder brukt. Denne nye tilnærmingen brakte en revolusjon innen programmeringsmetodikkfeltet.
Objektorientert programmering (OOP) er ingenting annet enn det som tillater skriving av programmer ved hjelp av visse klasser og sanntidsobjekter. Vi kan si at denne tilnærmingen er veldig nær den virkelige verden og dens applikasjoner fordi tilstanden og oppførselen til disse klassene og objektene er nesten det samme som objekter i den virkelige verden.
La oss gå dypere inn i de generelle konseptene til OOP, som er gitt nedenfor:
Hva er klasse og objekt?
Det er det grunnleggende konseptet til OOP; et utvidet konsept av strukturen som brukes i C. Det er en abstrakt og brukerdefinert datatype. Den består av flere variabler og funksjoner. Klassens primære formål er å lagre data og informasjon. Medlemmene av en klasse definerer oppførselen til klassen. En klasse er blåkopi av objektet, men vi kan også si at implementeringen av klassen er objektet. Klassen er ikke synlig for verden, men objektet er det.



CPP

govinda skuespiller






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 egenskaper car_id, colour, engine_no, og distance. Den ligner den virkelige bilen som har de samme spesifikasjonene, som kan erklæres offentlig (synlig for alle utenfor klassen), beskyttet og privat (synlig for ingen). Det er også noen metoder som distance_travelled(), petrol_used(), music_player() og display(). I koden gitt nedenfor er bilen en klasse og c1 er en gjenstand 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;> }>

>

>

Dataabstraksjon –
Abstraksjon refererer til handlingen med å representere viktige og spesielle funksjoner uten å inkludere bakgrunnsdetaljene eller forklaringen om den funksjonen. Dataabstraksjon forenkler databasedesign.

    Fysisk nivå:
    Den beskriver hvordan postene lagres, som ofte er skjult for brukeren. Det kan beskrives med uttrykket lagringsblokk.
    Logisk nivå:
    Den beskriver data som er lagret i databasen og relasjonene mellom dataene. Programmererne jobber generelt på dette nivået da de er klar over funksjonene som trengs for å opprettholde relasjonene mellom dataene.
    Visningsnivå:
    Applikasjonsprogrammer skjuler detaljer om datatyper og informasjon for sikkerhetsformål. Dette nivået implementeres vanligvis ved hjelp av GUI, og detaljer som er ment for brukeren vises.

Innkapsling –
Innkapsling er et av de grunnleggende konseptene innen objektorientert programmering (OOP). Den beskriver ideen om å pakke inn data og metodene som fungerer på data innenfor én enhet, for eksempel en klasse i Java. Dette konseptet brukes ofte for å skjule den interne tilstandsrepresentasjonen av et objekt fra utsiden.
arv –
Arv er evnen til en klasse til å arve evner eller egenskaper til en annen klasse, kalt overordnet klasse. Når vi skriver en klasse, arver vi egenskaper fra andre klasser. Så når vi lager en klasse, trenger vi ikke å skrive alle egenskapene og funksjonene igjen og igjen, da disse kan arves fra en annen klasse som besitter den. Arv lar brukeren bruke koden på nytt når det er mulig og redusere redundansen.

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. }>

>

>

Produksjon

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!>

Polymorfisme -
Polymorfisme er dataenes evne til å behandles i mer enn én form. Det gjør det mulig å utføre den samme oppgaven på forskjellige måter. Den består av metodeoverbelastning og metodeoverstyring, det vil si å skrive metoden én gang og utføre en rekke oppgaver 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;> }>

>

>

Noen viktige punkter å vite om OOP:

  1. OOP behandler data som et kritisk element.
  2. Det legges vekt på data fremfor prosedyre.
  3. Dekomponering av problemet til enklere moduler.
  4. Tillater ikke data å flyte fritt i hele systemet, dvs. lokalisert kontrollflyt.
  5. Data er beskyttet mot eksterne funksjoner.

Fordeler med OOPs –

  • Den modellerer den virkelige verden veldig godt.
  • Med OOP er programmer enkle å forstå og vedlikeholde.
  • OOP tilbyr gjenbruk av kode. Allerede opprettede klasser kan gjenbrukes uten å måtte skrive dem på nytt.
  • OOP legger til rette for rask utvikling av programmer der parallell utvikling av klasser er mulig.
  • Med OOP er programmer enklere å teste, administrere og feilsøke.

Ulemper med OOP -

  • Med OOP har klasser noen ganger en tendens til å bli overgeneralisert.
  • Forholdet mellom klassene blir til tider overfladisk.
  • OOP-designet er vanskelig og krever passende kunnskap. Dessuten må man gjøre skikkelig planlegging og design for OOP-programmering.
  • For å programmere med OOP trenger programmereren riktige ferdigheter som design, programmering og tenkning i form av objekter og klasser, etc.