Com el seu nom indica, la programació orientada a objectes o POO es refereix a llenguatges que utilitzen objectes a la programació. La programació orientada a objectes té com a objectiu implementar entitats del món real com l'herència, l'amagat, el polimorfisme, etc. L'objectiu principal de la POO és unir les dades i les funcions que hi operen perquè cap altra part del codi pugui accedir a aquestes dades excepte aquesta funció.
Conceptes de POO:
- Classe
- Objectes
- Abstracció de dades
- Encapsulació
- Herència
- Polimorfisme
- Enquadernació dinàmica
- Missatge passant
1. Classe:
Una classe és un tipus de dades definit per l'usuari. Consisteix en membres de dades i funcions de membre, als quals es pot accedir i utilitzar-los creant una instància d'aquesta classe. Representa el conjunt de propietats o mètodes que són comuns a tots els objectes d'un mateix tipus. Una classe és com un plànol per a un objecte.
Per exemple: Considereu la classe de cotxes. Pot ser que hi hagi molts cotxes amb diferents noms i marques, però tots compartiran algunes propietats comunes, com que tots tindran 4 rodes, límit de velocitat, autonomia, etc. Així que aquí, el cotxe és la classe, i rodes, límits de velocitat, el quilometratge són les seves propietats.
2. Objecte:
És una unitat bàsica de la Programació Orientada a Objectes i representa les entitats de la vida real. Un Object és una instància d'una Classe. Quan es defineix una classe, no s'assigna memòria, però quan s'instancia (és a dir, es crea un objecte) s'assigna memòria. Un objecte té una identitat, un estat i un comportament. Cada objecte conté dades i codi per manipular les dades. Els objectes poden interactuar sense haver de conèixer detalls de les dades o codi dels altres, n'hi ha prou amb conèixer el tipus de missatge acceptat i el tipus de resposta que retornen els objectes.
Per exemple, el gos és un objecte de la vida real, que té algunes característiques com el color, la raça, l'escorça, el somni i l'alimentació.

Objecte
3. Abstracció de dades:
L'abstracció de dades és una de les característiques més essencials i importants de la programació orientada a objectes. L'abstracció de dades es refereix a proporcionar només informació essencial sobre les dades al món exterior, amagant els detalls de fons o la implementació. Considereu un exemple de la vida real d'un home que condueix un cotxe. L'home només sap que prémer els acceleradors augmentarà la velocitat del cotxe o aplicar els frens aturarà el cotxe, però no sap com augmenta la velocitat en prémer l'accelerador, no sap el mecanisme interior del cotxe. o la implantació de l'accelerador, frens, etc al cotxe. Això és el que és l'abstracció.
4. Encapsulació:
L'encapsulació es defineix com l'embolcall de dades en una sola unitat. És el mecanisme que uneix el codi i les dades que manipula. A l'encapsulació, les variables o dades d'una classe s'oculten de qualsevol altra classe i només es pot accedir a través de qualsevol funció membre de la seva classe en què es declarin. Igual que en l'encapsulació, les dades d'una classe s'oculten d'altres classes, per la qual cosa també es coneix com ocultació de dades .
Considereu un exemple real d'encapsulació, en una empresa, hi ha diferents seccions com la secció de comptes, la secció de finances, la secció de vendes, etc. La secció de finances gestiona totes les transaccions financeres i manté un registre de totes les dades relacionades amb les finances. De la mateixa manera, la secció de vendes gestiona totes les activitats relacionades amb les vendes i manté un registre de totes les vendes. Ara pot sorgir una situació en què per algun motiu un funcionari de la secció de finances necessiti totes les dades sobre vendes en un mes concret. En aquest cas, no se li permet accedir directament a les dades de la secció de vendes. Primer haurà de posar-se en contacte amb algun altre oficial de la secció de vendes i després demanar-li que proporcioni les dades concretes. Això és el que és l'encapsulació. Aquí les dades de la secció de vendes i els empleats que poden manipular-les s'emmagatzemen sota un sol nom de secció de vendes.
5. Herència:
L'herència és un pilar important de la POO (programació orientada a objectes). La capacitat d'una classe per derivar propietats i característiques d'una altra classe s'anomena herència. 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.
6. Polimorfisme:
La paraula polimorfisme significa tenir moltes formes. En paraules simples, podem definir el polimorfisme com la capacitat que té un missatge de mostrar-se en més d'una forma. Per exemple, una persona al mateix temps pot tenir diferents característiques. Com un home al mateix temps és un pare, un marit, un empleat. Per tant, una mateixa persona té un comportament diferent en diferents situacions. Això s'anomena polimorfisme.
exemples d'autòmats dfa
7. Enquadernació dinàmica:
En l'enllaç dinàmic, el codi que s'ha d'executar en resposta a la crida de funció es decideix en temps d'execució. L'enllaç dinàmic significa que el codi associat a una trucada de procediment determinada no es coneix fins al moment de la trucada en temps d'execució. Unió de mètodes dinàmics Un dels principals avantatges de l'herència és que alguna classe derivada D té tots els membres de la seva classe base B. Una vegada que D no amaga cap dels membres públics de B, un objecte de D pot representar B en qualsevol context. on es podria utilitzar una B. Aquesta característica es coneix com a polimorfisme de subtipus.
8. Transmissió de missatges:
És una forma de comunicació que s'utilitza en la programació orientada a objectes, així com en la programació paral·lela. Els objectes es comuniquen entre ells enviant-se i rebent informació entre ells. Un missatge per a un objecte és una sol·licitud d'execució d'un procediment i, per tant, invocarà una funció a l'objecte receptor que genera els resultats desitjats. La transmissió de missatges implica especificar el nom de l'objecte, el nom de la funció i la informació a enviar.
Per què necessitem programació orientada a objectes
- Per facilitar el desenvolupament i el manteniment dels projectes.
- Proporcionar la funció d'amagat de dades que és bona per a problemes de seguretat.
- Podem resoldre problemes del món real si utilitzem programació orientada a objectes.
- Assegura la reutilització del codi.
- Ens permet escriure codi genèric: que funcionarà amb una sèrie de dades, de manera que no hem d'escriure coses bàsiques una i altra vegada.