logo

OOPs | Objektorienterad design

Objektorienterad design började redan från det ögonblick som datorer uppfanns. Programmering fanns där, och programmeringssätt kom in i bilden. Programmering är i grunden att ge vissa instruktioner till datorn.
I början av datoreran var programmering vanligtvis begränsad till maskinspråksprogrammering. Maskinspråk betyder de uppsättningar instruktioner som är specifika för en viss maskin eller processor, som är i form av 0:or och 1:or. Dessa är sekvenser av bitar (0100110...). Men det är ganska svårt att skriva ett program eller utveckla mjukvara på maskinspråk.
Det är faktiskt omöjligt att utveckla programvara som används i dagens scenarier med sekvenser av bitar. Detta var den främsta anledningen till att programmerare gick vidare till nästa generation av programmeringsspråk, och utvecklade assemblerspråk, som låg tillräckligt nära det engelska språket för att lätt kunna förstå. Dessa assemblerspråk användes i mikroprocessorer. Med mikroprocessorns uppfinning blomstrade assemblerspråken och styrde över industrin, men det räckte inte. Återigen kom programmerare på något nytt, det vill säga strukturerad och procedurprogrammering.



Strukturerad programmering –
Grundprincipen för det strukturerade programmeringssättet är att dela upp ett program i funktioner och moduler. Användningen av moduler och funktioner gör programmet mer begripligt och läsbart. Det hjälper till att skriva renare kod och att behålla kontrollen över funktionerna och modulerna. Detta tillvägagångssätt ger vikt åt funktioner snarare än data. Den fokuserar på utveckling av stora mjukvaruapplikationer, till exempel användes C för modern operativsystemutveckling. Programmeringsspråken: PASCAL (introducerad av Niklaus Wirth) och C (introducerad av Dennis Ritchie) följer detta tillvägagångssätt.
Procedurmässig programmeringsmetod –
Detta tillvägagångssätt är också känt som top-down-metoden. I detta tillvägagångssätt är ett program uppdelat i funktioner som utför specifika uppgifter. Detta tillvägagångssätt används främst för medelstora applikationer. Data är global och alla funktioner kan komma åt globala data. Den grundläggande nackdelen med procedurprogrammeringsmetoden är att data inte är säkrade eftersom data är globala och kan nås av vilken funktion som helst. Programkontrollflöde uppnås genom funktionsanrop och goto-satser. Programmeringsspråken: FORTRAN (utvecklat av IBM) och COBOL (utvecklat av Dr. Grace Murray Hopper) följer detta tillvägagångssätt.
Dessa programmeringskonstruktioner utvecklades i slutet av 1970- och 1980-talen. Det fanns fortfarande några problem med dessa språk, även om de uppfyllde kriterierna för välstrukturerade program, mjukvara, etc. De var inte så strukturerade som kraven var vid den tiden. De verkar vara övergeneraliserade och korrelerar inte med realtidsapplikationer.
För att lösa sådana problem, OOP, utvecklades ett objektorienterat tillvägagångssätt som lösning.

Den objektorienterade programmeringsmetoden (OOP) –
OOP-konceptet var i grunden utformat för att övervinna nackdelen med ovanstående programmeringsmetoder, som inte var så nära verkliga tillämpningar. Efterfrågan ökade, men ändå användes konventionella metoder. Detta nya tillvägagångssätt medförde en revolution inom programmeringsmetodikområdet.
Objektorienterad programmering (OOP) är inget annat än det som tillåter skrivning av program med hjälp av vissa klasser och realtidsobjekt. Vi kan säga att detta tillvägagångssätt ligger mycket nära den verkliga världen och dess tillämpningar eftersom tillståndet och beteendet hos dessa klasser och objekt är nästan detsamma som verkliga objekt.
Låt oss gå djupare in i de allmänna koncepten för OOP, som ges nedan:
Vad är klass och objekt?
Det är grundkonceptet för OOP; ett utökat koncept av strukturen som används i C. Det är en abstrakt och användardefinierad datatyp. Den består av flera variabler och funktioner. Det primära syftet med klassen är att lagra data och information. Medlemmarna i en klass definierar klassens beteende. En klass är ritningen av objektet, men vi kan också säga att implementeringen av klassen är objektet. Klassen är inte synlig för världen, men objektet är det.



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();> }>

>

java designmönster

>

Här har klassbilen egenskaperna bil_id, färg, motornr och avstånd. Den liknar den verkliga bilen som har samma specifikationer, som kan förklaras offentlig (synlig för alla utanför klassen), skyddad och privat (synlig för ingen). Det finns också några metoder som distance_travelled(), petrol_used(), music_player() och display(). I koden nedan är bilen en klass och c1 är ett objekt i 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 hänvisar till handlingen att representera viktiga och speciella egenskaper utan att inkludera bakgrundsdetaljer eller förklaringar om den egenskapen. Dataabstraktion förenklar databasdesign.

som gjorde skolan
    Fysisk nivå:
    Den beskriver hur posterna lagras, som ofta är dolda för användaren. Det kan beskrivas med frasen, block of storage.
    Logisk nivå:
    Den beskriver data som lagras i databasen och relationerna mellan data. Programmerare arbetar i allmänhet på denna nivå eftersom de är medvetna om de funktioner som behövs för att upprätthålla relationerna mellan data.
    Visa nivå:
    Applikationsprogram döljer information om datatyper och information av säkerhetsskäl. Denna nivå implementeras vanligtvis med hjälp av GUI, och detaljer som är avsedda för användaren visas.

Inkapsling –
Inkapsling är ett av de grundläggande begreppen inom objektorienterad programmering (OOP). Den beskriver idén med att radbryta data och metoderna som fungerar på data inom en enhet, t.ex. en klass i Java. Detta koncept används ofta för att dölja den interna tillståndsrepresentationen av ett objekt från utsidan.
Arv –
Arv är förmågan hos en klass att ärva förmågor eller egenskaper hos en annan klass, som kallas förälderklassen. När vi skriver en klass ärver vi egenskaper från andra klasser. Så när vi skapar en klass behöver vi inte skriva alla egenskaper och funktioner om och om igen, eftersom dessa kan ärvas från en annan klass som har den. Arv tillåter användaren att återanvända koden när det är möjligt och minska dess redundans.

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);> >}> }>

>

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

>

>

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

Polymorfism -
Polymorfism är förmågan hos data att bearbetas i mer än en form. Det gör det möjligt att utföra samma uppgift på olika sätt. Den består av metodöverbelastning och metodöverstyrning, d.v.s. att skriva metoden en gång och utföra ett antal uppgifter med samma metodnamn.

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

>

>

vad är objekt java

Några viktiga punkter att veta om OOP:

  1. OOP behandlar data som ett kritiskt element.
  2. Tonvikten ligger på data snarare än förfarande.
  3. Nedbrytning av problemet i enklare moduler.
  4. Tillåter inte data att flöda fritt i hela systemet, dvs lokaliserat kontrollflöde.
  5. Data skyddas från externa funktioner.

Fördelar med OOPs –

  • Den modellerar den verkliga världen väldigt bra.
  • Med OOP är program lätta att förstå och underhålla.
  • OOP erbjuder kodåteranvändning. Redan skapade klasser kan återanvändas utan att behöva skriva dem igen.
  • OOP underlättar snabb utveckling av program där parallell utveckling av klasser är möjlig.
  • Med OOP är program lättare att testa, hantera och felsöka.

Nackdelar med OOP -

  • Med OOP tenderar klasser ibland att bli övergeneraliserade.
  • Relationerna mellan klasserna blir ibland ytliga.
  • OOP-designen är knepig och kräver lämplig kunskap. Dessutom måste man göra ordentlig planering och design för OOP-programmering.
  • För att programmera med OOP behöver programmeraren lämpliga färdigheter som design, programmering och tänkande i termer av objekt och klasser, etc.