Disseny orientat a objectes va començar des del moment en què es van inventar els ordinadors. La programació hi era, i els enfocaments de programació van entrar en escena. Programar és bàsicament donar certes instruccions a l'ordinador.
Al començament de l'era de la informàtica, la programació es limitava generalment a la programació en llenguatge màquina. Llenguatge màquina significa aquells conjunts d'instruccions específiques d'una màquina o processador en particular, que tenen forma de 0 i 1. Aquestes són seqüències de bits (0100110...). Però és bastant difícil escriure un programa o desenvolupar programari en llenguatge màquina.
De fet, és impossible desenvolupar programari utilitzat en els escenaris actuals amb seqüències de bits. Aquesta va ser la principal raó per la qual els programadors van passar a la següent generació de llenguatges de programació, desenvolupant llenguatges assemblador, que estaven prou a prop de l'idioma anglès per entendre fàcilment. Aquests llenguatges assembladors s'utilitzaven en microprocessadors. Amb la invenció del microprocessador, els llenguatges assembladors van florir i van dominar la indústria, però no n'hi havia prou. De nou, els programadors van plantejar alguna cosa nova, és a dir, programació estructurada i procedimental.

Programació estructurada -
El principi bàsic de l'enfocament de programació estructurada és dividir un programa en funcions i mòduls. L'ús de mòduls i funcions fa que el programa sigui més entenedor i llegible. Ajuda a escriure codi més net i a mantenir el control sobre les funcions i mòduls. Aquest enfocament dóna importància a les funcions més que a les dades. Se centra en el desenvolupament de grans aplicacions de programari, per exemple, C es va utilitzar per al desenvolupament de sistemes operatius moderns. Els llenguatges de programació: PASCAL (introduït per Niklaus Wirth) i C (introduït per Dennis Ritchie) segueixen aquest enfocament.
Enfocament de programació procedimental -
Aquest enfocament també es coneix com a enfocament de dalt a baix. En aquest enfocament, un programa es divideix en funcions que realitzen tasques específiques. Aquest enfocament s'utilitza principalment per a aplicacions de mida mitjana. Les dades són globals i totes les funcions poden accedir a dades globals. L'inconvenient bàsic de l'enfocament de programació procedimental és que les dades no estan protegides perquè les dades són globals i es pot accedir des de qualsevol funció. El flux de control del programa s'aconsegueix mitjançant trucades de funcions i sentències goto. Els llenguatges de programació: FORTRAN (desenvolupat per IBM) i COBOL (desenvolupat per la Dra. Grace Murray Hopper) segueixen aquest enfocament.
Aquestes construccions de programació es van desenvolupar a finals dels anys setanta i vuitanta. Encara hi havia alguns problemes amb aquests llenguatges, tot i que complien els criteris de programes ben estructurats, programari, etc. No estaven tan estructurats com els requeriments en aquell moment. Sembla que estan massa generalitzats i no es correlacionen amb les aplicacions en temps real.
Per resoldre aquest tipus de problemes, es va desenvolupar OOP, un enfocament orientat a objectes com a solució.

L'enfocament de la programació orientada a objectes (POO) -
El concepte OOP es va dissenyar bàsicament per superar l'inconvenient de les metodologies de programació anteriors, que no estaven tan a prop de les aplicacions del món real. La demanda va augmentar, però encara es van utilitzar mètodes convencionals. Aquest nou enfocament va suposar una revolució en el camp de la metodologia de programació.
La programació orientada a objectes (POO) no és sinó aquella que permet escriure programes amb l'ajuda de determinades classes i objectes en temps real. Podem dir que aquest enfocament és molt proper al món real i les seves aplicacions perquè l'estat i el comportament d'aquestes classes i objectes són gairebé els mateixos que els objectes del món real.
Aprofundim en els conceptes generals de POO, que es donen a continuació:
Què són la classe i l'objecte?
És el concepte bàsic de POO; un concepte estès de l'estructura utilitzada en C. És un tipus de dades abstracte i definit per l'usuari. Consta de diverses variables i funcions. L'objectiu principal de la classe és emmagatzemar dades i informació. Els membres d'una classe defineixen el comportament de la classe. Una classe és el pla de l'objecte, però també podem dir que la implementació de la classe és l'objecte. La classe no és visible per al món, però l'objecte sí.
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();> }> |
conversió de data a cadena
>
prova d'agafar java
>
Aquí, el cotxe de classe té propietats car_id, color, engine_no i distance. S'assembla al cotxe del món real que té les mateixes especificacions, que es pot declarar públic (visible per a tothom fora de la classe), protegit i privat (visible per a ningú). A més, hi ha alguns mètodes com distance_travelled(), petrol_used(), music_player() i display(). Al codi que es mostra a continuació, el cotxe és una classe i c1 és un objecte del cotxe.
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;> }> |
>
>
Abstracció de dades -
L'abstracció es refereix a l'acte de representar característiques importants i especials sense incloure els detalls de fons o l'explicació sobre aquesta característica. L'abstracció de dades simplifica el disseny de bases de dades.

c++ int a cadena
- Nivell físic:
Descriu com s'emmagatzemen els registres, que sovint s'oculten a l'usuari. Es pot descriure amb la frase, bloc d'emmagatzematge.
Nivell lògic:
Descriu les dades emmagatzemades a la base de dades i les relacions entre les dades. Els programadors generalment treballen en aquest nivell, ja que són conscients de les funcions necessàries per mantenir les relacions entre les dades.
Nivell de visualització:
Els programes d'aplicació amaguen detalls dels tipus de dades i informació amb finalitats de seguretat. Aquest nivell s'implementa generalment amb l'ajuda de la GUI i es mostren els detalls destinats a l'usuari.
Encapsulació -
L'encapsulació és un dels conceptes fonamentals de la programació orientada a objectes (OOP). Descriu la idea d'embolcall de dades i els mètodes que funcionen amb dades dins d'una unitat, per exemple, una classe a Java. Aquest concepte s'utilitza sovint per ocultar la representació de l'estat intern d'un objecte des de l'exterior.
Herència -
L'herència és la capacitat d'una classe per heretar capacitats o propietats d'una altra classe, anomenada classe pare. Quan escrivim una classe, heretem propietats d'altres classes. Així, quan creem una classe, no necessitem escriure totes les propietats i funcions una vegada i una altra, ja que aquestes es poden heretar d'una altra classe que la posseeix. L'herència permet a l'usuari reutilitzar el codi sempre que sigui possible i reduir-ne la redundància.

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. }> |
ciutat a uas
>
>Sortida
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!>
Polimorfisme -
El polimorfisme és la capacitat de les dades per processar-se en més d'una forma. Permet realitzar una mateixa tasca de diferents maneres. Consisteix en la sobrecàrrega de mètodes i la substitució de mètodes, és a dir, escriure el mètode una vegada i realitzar una sèrie de tasques utilitzant el mateix nom de mètode.
usuaris de la llista mysql

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;> }> |
>
>
Alguns punts importants que cal saber sobre la POO:
- La POO tracta les dades com un element crític.
- L'èmfasi es posa en les dades més que en el procediment.
- Descomposició del problema en mòduls més senzills.
- No permet que les dades flueixin lliurement a tot el sistema, és a dir, un flux de control localitzat.
- Les dades estan protegides de funcions externes.
Avantatges dels POO:
- Modela molt bé el món real.
- Amb la POO, els programes són fàcils d'entendre i mantenir.
- OOP ofereix la reutilització del codi. Les classes ja creades es poden reutilitzar sense haver de tornar-les a escriure.
- L'OOP facilita el desenvolupament ràpid de programes on el desenvolupament paral·lel de les classes és possible.
- Amb OOP, els programes són més fàcils de provar, gestionar i depurar.
Desavantatges de la POO -
- Amb la POO, de vegades les classes tendeixen a estar massa generalitzades.
- Les relacions entre classes esdevenen de vegades superficials.
- El disseny de POO és complicat i requereix un coneixement adequat. A més, cal fer una planificació i un disseny adequats per a la programació OOP.
- Per programar amb POO, el programador necessita habilitats adequades com ara disseny, programació i pensament en termes d'objectes i classes, etc.