logo

OOPs | Objektinis dizainas

Objektinis dizainas prasidėjo nuo pat kompiuterių išradimo. Programavimas buvo ten, o programavimo metodai atėjo į paveikslą. Programavimas iš esmės yra tam tikrų nurodymų davimas kompiuteriui.
Skaičiavimo eros pradžioje programavimas dažniausiai apsiribojo mašinų kalbos programavimu. Mašinos kalba reiškia konkrečiam įrenginiui ar procesoriui būdingus instrukcijų rinkinius, kurie yra 0 ir 1 pavidalu. Tai yra bitų sekos (0100110…). Tačiau gana sunku rašyti programą ar kurti programinę įrangą mašinų kalba.
Iš tikrųjų neįmanoma sukurti programinės įrangos, naudojamos šiandieniniuose scenarijuose su bitų sekomis. Tai buvo pagrindinė priežastis, kodėl programuotojai perėjo prie naujos kartos programavimo kalbų, kurdami surinkimo kalbas, kurios buvo pakankamai artimos anglų kalbai, kad būtų lengvai suprantamos. Šios surinkimo kalbos buvo naudojamos mikroprocesoriuose. Išradus mikroprocesorių, surinkimo kalbos klestėjo ir valdė pramonę, tačiau to nepakako. Vėlgi, programuotojai sugalvojo kažką naujo, ty struktūrinį ir procedūrinį programavimą.



Struktūrinis programavimas –
Pagrindinis struktūrinio programavimo požiūrio principas yra padalinti programą į funkcijas ir modulius. Naudojant modulius ir funkcijas programa tampa suprantamesnė ir skaitomesnė. Tai padeda rašyti švaresnį kodą ir išlaikyti funkcijų bei modulių kontrolę. Šis metodas teikia svarbą funkcijoms, o ne duomenims. Jame pagrindinis dėmesys skiriamas didelių programinės įrangos programų kūrimui, pavyzdžiui, C buvo naudojama šiuolaikinei operacinei sistemai kurti. Programavimo kalbos: PASCAL (įvedė Niklaus Wirth) ir C (įvedė Dennis Ritchie) laikosi šio požiūrio.
Procedūrinio programavimo metodas –
Šis metodas taip pat žinomas kaip „iš viršaus į apačią“ metodas. Taikant šį metodą, programa yra suskirstyta į funkcijas, kurios atlieka konkrečias užduotis. Šis metodas daugiausia naudojamas vidutinio dydžio programoms. Duomenys yra globalūs, o visos funkcijos gali pasiekti pasaulinius duomenis. Pagrindinis procedūrinio programavimo metodo trūkumas yra tas, kad duomenys nėra apsaugoti, nes duomenys yra globalūs ir juos gali pasiekti bet kokia funkcija. Programos valdymo srautas pasiekiamas funkcijų iškvietimais ir goto sakiniais. Programavimo kalbos: FORTRAN (sukūrė IBM) ir COBOL (sukūrė dr. Grace Murray Hopper) laikosi šio požiūrio.
Šios programavimo konstrukcijos buvo sukurtos 1970-ųjų pabaigoje ir 1980-aisiais. Vis dar buvo tam tikrų problemų su šiomis kalbomis, nors jos atitiko geros struktūros programų, programinės įrangos ir tt kriterijus. Jos nebuvo tokios struktūrinės, kaip tuo metu buvo keliami reikalavimai. Atrodo, kad jie yra pernelyg apibendrinti ir nesusiję su realaus laiko programomis.
Norint išspręsti tokias problemas, OOP buvo sukurtas į objektą orientuotas metodas.

Objektinio programavimo (OOP) metodas –
OOP koncepcija iš esmės buvo sukurta siekiant pašalinti aukščiau išvardintų programavimo metodikų, kurie nebuvo tokie artimi realaus pasaulio programoms, trūkumą. Paklausa išaugo, bet vis tiek buvo naudojami įprasti metodai. Šis naujas požiūris sukėlė revoliuciją programavimo metodologijos srityje.
Objektinis programavimas (OOP) yra ne kas kita, kaip tai, kas leidžia rašyti programas naudojant tam tikras klases ir realaus laiko objektus. Galime sakyti, kad šis metodas yra labai artimas realiam pasauliui ir jo pritaikymui, nes šių klasių ir objektų būsena ir elgsena yra beveik tokia pati kaip realaus pasaulio objektų.
Pažvelkime į bendrąsias OOP sąvokas, kurios pateikiamos toliau:
Kas yra klasė ir objektas?
Tai pagrindinė OOP koncepcija; išplėstinė C naudojamos struktūros samprata. Tai abstraktus ir vartotojo apibrėžtas duomenų tipas. Jį sudaro keli kintamieji ir funkcijos. Pagrindinis klasės tikslas yra saugoti duomenis ir informaciją. Klasės nariai apibrėžia klasės elgesį. Klasė yra objekto planas, bet taip pat galime sakyti, kad klasės įgyvendinimas yra objektas. Klasė pasauliui nematoma, bet objektas matomas.



CPP




romėniški skaitmenys 1100



Class car> {> >int> car_id;> >char> colour[4];> >float> engine_no;> >double> distance;> > >void> distance_travelled();> >float> petrol_used();> >char> music_player();> >void> display();> }>

>

>

Čia klasės automobilis turi savybes car_id, color, engine_no ir distance. Jis panašus į realų automobilį, kurio specifikacijos yra tokios pat, kurios gali būti paskelbtos viešomis (matomos visiems, nepriklausančioms klasėje), saugomos ir privačios (nematomos). Be to, yra keletas metodų, tokių kaip distance_travelled(), benzino_naudotas(), music_player() ir display(). Žemiau pateiktame kode automobilis yra klasė, o c1 yra automobilio objektas.

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

tring to int

>

>

Duomenų abstrakcija –
Abstrakcija reiškia svarbių ir ypatingų ypatybių atvaizdavimą, neįtraukiant fono detalių ar paaiškinimo apie šią funkciją. Duomenų abstrakcija supaprastina duomenų bazės dizainą.

    Fizinis lygis:
    Jame aprašoma, kaip saugomi įrašai, kurie dažnai yra paslėpti nuo vartotojo. Jį galima apibūdinti fraze saugyklos blokas.
    Loginis lygis:
    Jis aprašo duomenų bazėje saugomus duomenis ir ryšius tarp duomenų. Programuotojai paprastai dirba šiame lygyje, nes žino, kokių funkcijų reikia palaikyti ryšį tarp duomenų.
    Rodinio lygis:
    Saugumo sumetimais taikomosios programos slepia išsamią duomenų tipų ir informacijos informaciją. Šis lygis paprastai įgyvendinamas GUI pagalba ir rodoma vartotojui skirta informacija.

Inkapsuliavimas -
Inkapsuliavimas yra viena iš pagrindinių objektinio programavimo (OOP) koncepcijų. Jame aprašoma duomenų apvyniojimo idėja ir metodai, kurie veikia su duomenimis viename vienete, pvz., „Java“ klasėje. Ši sąvoka dažnai naudojama norint paslėpti vidinę objekto būseną iš išorės.
Paveldėjimas –
Paveldėjimas yra vienos klasės gebėjimas paveldėti kitos klasės, vadinamos pagrindine klase, galimybes ar savybes. Kai rašome klasę, paveldime savybes iš kitų klasių. Taigi, kai sukuriame klasę, mums nereikia vėl ir vėl rašyti visų savybių ir funkcijų, nes jas galima paveldėti iš kitos klasės, kuri ją turi. Paveldėjimas leidžia vartotojui pakartotinai naudoti kodą, kai tik įmanoma, ir sumažinti jo pertekliškumą.

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

>

java generiniai vaistai
>

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

>

>

Išvestis

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

polimorfizmas -
Polimorfizmas – tai galimybė duomenis apdoroti daugiau nei viena forma. Tai leidžia atlikti tą pačią užduotį įvairiais būdais. Jį sudaro metodo perkrovimas ir metodo nepaisymas, t. y. metodo parašymas vieną kartą ir keleto užduočių atlikimas naudojant tą patį metodo pavadinimą.

CPP




java metodas

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

>

>

Keletas svarbių dalykų, kuriuos reikia žinoti apie OOP:

  1. OOP duomenis laiko svarbiu elementu.
  2. Daugiausia dėmesio skiriama duomenims, o ne procedūrai.
  3. Problemos išskaidymas į paprastesnius modulius.
  4. Neleidžia duomenims laisvai tekėti visoje sistemoje, ty lokalizuotam valdymo srautui.
  5. Duomenys apsaugoti nuo išorinių funkcijų.

OOP privalumai -

  • Tai labai gerai modeliuoja realų pasaulį.
  • Naudojant OOP, programas lengva suprasti ir prižiūrėti.
  • OOP siūlo kodo pakartotinį naudojimą. Jau sukurtas klases galima panaudoti pakartotinai, jų neberašant.
  • OOP palengvina greitą programų kūrimą, kur galima lygiagrečiai plėtoti klases.
  • Naudojant OOP, programas lengviau išbandyti, valdyti ir derinti.

OOP trūkumai -

  • Naudojant OOP, klasės kartais būna pernelyg apibendrintos.
  • Santykiai tarp klasių kartais tampa paviršutiniški.
  • OOP dizainas yra sudėtingas ir reikalauja atitinkamų žinių. Be to, reikia tinkamai planuoti ir projektuoti OOP programavimą.
  • Norint programuoti naudojant OOP, programuotojui reikia tinkamų įgūdžių, tokių kaip projektavimas, programavimas, mąstymas apie objektus ir klases ir kt.