Aplicacions Web

Concepte de POO per a principiants: què és l'abstracció?

30 d'octubre de 2021

Un concepte clau en Programació Orientada a Objectes (OOP) és abstracció. I també és una de les més confuses.

L'abstracció en la programació orientada a objectes fa referència a mostrar només els atributs essencials d'alguna cosa i amagar qualsevol informació d'implementació que no sigui necessària per a l'usuari.

Permet als usuaris no deixar-se aclaparar per la lògica oculta que fa que la lògica dels usuaris sigui complexa. Així, els POO abstrauen la lògica oculta perquè l'usuari no hagi d'entendre-la ni tan sols pensar-hi.

Però primer, us donem una visió general dels POO.

Taula de continguts

Què és la POO?

La POO o Programació Orientada a Objectes és un tipus de programació que és fonamental per al paradigma de programació.

És la metodologia de programació més popular que és adaptada per molts programadors durant la seva carrera educativa.

A diferència de la programació procedimental, la programació orientada a objectes té diversos avantatges:

  • Els OOP mantenen el Java codi DRY, és a dir, No et repeteixis, facilitant el manteniment, la modificació i la depuració del codi. Això vol dir que un programador pot reduir la repetició del codi extreint el codi comú i col·locant-lo en un sol lloc.
  • És més ràpid i té una execució més fàcil que la programació procedimental.
  • Podeu desenvolupar aplicacions reutilitzables en un temps de desenvolupament més curt i que continguin menys codi amb l'ajuda de POO.
  • Ofereix una estructura clara del programa.

Hi ha dos conceptes bàsics per a la programació orientada a objectes: classe i objectes.

    Classe -És una plantilla per a objectes o un plànol per crear objectes específics. Per exemple, una categoria àmplia com un gos és una classe que defineix l'atribut com el color, la raça, el nom, etc., que els objectes o instàncies de la classe.Objecte -Els objectes són instàncies de classe que hereten totes les variables i mètodes d'una classe. Per exemple, una classe: el gos té objectes com el Dàlmata, el pastor alemany, Sant Bernat, Golden Retriever, etc.

Els POO tenen quatre pilars: herència, abstracció, encapsulació i polimorfisme.

    Herència– Quan un objecte fill hereta totes les propietats i comportaments d'un objecte pare, s'anomena herència. Per exemple, un cadell dalmata també tindrà les mateixes característiques que els seus pares.Abstracció– Amagar detalls i funcionalitats innecessàries i mostrar només allò que és important per treballar és una abstracció. Per exemple, els ossos, els músculs i altres coses s'amaguen dins de la nostra pell, cosa que proporciona una abstracció als gossos i els permet fer altres accions i activitats.Encapsulació– L'encapsulació significa lligar el codi amb dades en una sola unitat o unir-les. Les classes i els objectes estan encapsulats en Java i altres llenguatges OOP. Per exemple, el gos és una classe que encapsula tots els tipus i races de gossos.Polimorfisme– Executar una única tasca de diverses maneres s'anomena polimorfisme. Per exemple, parlar és un mètode però s'executa de manera diferent: un gos borda, un humà parla, un gat miaula, un ocell xiuleix, etc.

Aquest article se centra només en un concepte de POO: l'abstracció.

Què és una abstracció en POO?

En els POO, l'abstracció és un dels conceptes més importants que permet als programadors centrar-se només en els aspectes importants per al sistema considerat.

L'abstracció permet al programador canviar el seu enfocament des dels detalls d'implementació de les accions cap a les classes, els mètodes disponibles, etc., per simplificar la programació.

Vegeu també 2 millors maneres de desfer-se dels virus informàtics

Podem entendre l'abstracció utilitzant exemples d'herència i encapsulació:

En una jerarquia d'herència, les classes pares o les classes superiors contenen una implementació simple i general, però la classe fill o classe inferior contenen una implementació més detallada de les classes superiors. Això és una abstracció.

Quan un programador amaga els detalls d'implementació d'una classe d'altres classes encapsulades, la classe és més senzilla.

Exemple

Res no es pot entendre millor sense exemples. Els exemples proporcionen un enfocament pràctic que permet a qualsevol entendre millor de què parla algú.

Considerem alguns exemples del món real per entendre l'abstracció.

1. Màquina de cafè

A tot el món s'aboquen més d'1.400 milions de tasses de cafè en un dia, i al voltant del 45% prové dels EUA. Així doncs, podem dir que el cafè és una de les begudes més estimades d'aquest món.

Les cafeteries preparen cafè amb l'ajuda d'una màquina de cafè introduint-hi aigua i grans de cafè. Encenen la màquina i després seleccionen el tipus de cafè necessari, després la màquina et prepara el cafè més deliciós.

Però us heu parat mai i heu descobert com la màquina prepara el cafè? Quina és la temperatura ideal que utilitza? Quina és la quantitat de cafè que hi posa?

No. No?

Així, la cafetera abstraeix el seu funcionament intern i et permet preparar la teva tassa de cafè i gaudir-ne.

El mateix és el concepte utilitzat en llenguatges de programació orientats a objectes com java. El funcionament intern del sistema s'abstraeix del programador perquè pugui gaudir de la programació.

2. Cotxe

Un cotxe és un altre exemple real d'abstracció.

El cotxe és un sistema complex format per diversos elements com ara el motor, la bateria, el radiador, l'eix davanter i posterior, el sistema de transmissió, el sistema de direcció, el sistema de suspensió, el sistema elèctric i molts altres.

Tanmateix, no cal saber-ho tot sobre aquestes peces per fer funcionar el cotxe.

Fer servir un cotxe és tan senzill com girar la clau en el contacte o prémer el botó d'arrencada i després conduir.

No cal entendre com s'engega el motor del cotxe, el sistema de combustible, el sistema elèctric, etc. Podeu engegar el cotxe i marxar.

3. Microones

Un microones és una màquina complexa per dins, però té una interfície bastant senzilla i fàcil d'utilitzar.

El panell tàctil o els botons són tot el que interactuem per cuinar, reescalfar, coure, escalfar i a la brasa.

En l'actualitat, els microones es poden iniciar amb telèfons mòbils i tenen moltes funcions de menú de pre-cuina, com ara pastís al forn, llet calenta, espaguetis, fer pizza, etc., que tenen configuracions de temperatura i temps preestablerts. Només hem de seleccionar l'opció i prémer el botó d'inici.

No cal entendre com es cuina el menjar, com funcionen els microones, com funcionen els paràmetres de temperatura, etc.

Utilitzem el microones i ens centrem en altres aspectes importants com el sabor que tindria el pastís, els ingredients per al te/cafè, el temps de reescalfament i altres menús de cuina.

Aquest és un altre gran exemple d'abstracció, que ens ajuda a entendre la programació orientada a objectes.

Ara entenem la POO amb l'ajuda d'un exemple tècnic.

4. Sol·licitud de passaport

Mentre creeu una aplicació de passaport, heu d'accedir a les dades d'un client de la base de dades, que conté diversos tipus de detalls relacionats amb diversos clients.

Vegeu també Els 26 millors programes de gravació d'àudio gratuïts

Els registres de la taula de clients contenen informació relacionada amb els clients a les columnes següents:

  • Nom
  • Cognom
  • adreça
  • Nombre de contacte
  • Menjars Favorits
  • Hobbies
  • Pel·lícules preferides
  • Cançons preferides
  • Prova de ciutadania dels Estats Units
  • Document d'identitat amb foto emès pel govern

Tanmateix, no tota la informació continguda en aquestes columnes és rellevant per obtenir un passaport.

Els registres relacionats amb els aliments preferits, els passatemps, les cançons preferides i les pel·lícules preferides no són necessaris per sol·licitar un passaport.

Així, quan només es seleccionen els camps obligatoris del conjunt de dades, l'abstracció es pot veure a mesura que obtenim, seleccionem i/o eliminem informació relacionada amb el client.

Aquesta informació es pot utilitzar per a diversos altres usos, com ara aplicacions bancàries, aplicacions hospitalàries, bases de dades governamentals, informació del portal, etc., sense gaire modificació.

Aquest és un avantatge de l'abstracció en la programació orientada a objectes (OOP).

Amb aquests quatre exemples, esperem que pugueu entendre una mica millor els POO. Entenem ara com es fa l'abstracció a Java.

Abstracció a Java

A Java, l'abstracció es pot aconseguir amb l'ajuda d'interfícies i classes abstractes.

1. Interfície

La interfície és com un pla de classe que té mètodes i variables. Tanmateix, els mètodes declarats en una interfície no contenen ningú. Els mètodes i variables declarats a la interfície han de ser implementats per la classe que implementa la interfície.

Per exemple, una interfície Fun conté el següent:

|_+_|

La interfície d'implementació Fun de la classe Fun ha d'implementar play().

A Java, la interfície es declara amb l'ajuda de la paraula clau Interface i s'utilitza per proporcionar una abstracció total.

Així, tots els mètodes d'interfície són públics i tenen un cos buit amb tots els camps públics, estàtics i finals per defecte.

Sintaxi de la interfície:

|_+_|

Una classe pot implementar una interfície i es pot implementar mitjançant la paraula clau implements. Aquesta classe ha d'implementar tots els mètodes i contenir totes les variables declarades a les interfícies que està implementant.

Importància

  • L'acoblament fluix i l'abstracció total es poden aconseguir mitjançant interfícies.
  • Les interfícies contenen variables finals, estàtiques i públiques, donant una abstracció total, mentre que les classes abstractes donen una abstracció parcial.
  • A java, és impossible realitzar múltiples herències, però es poden aconseguir múltiples herències amb l'ajuda d'interfícies.

Com a actualització de Java 8, es van afegir mètodes per defecte i estàtics a les interfícies i, com a part de Java 9, es van afegir mètodes privats a les interfícies.

2. Classe abstracta

Abstract és una paraula clau en Java que s'utilitza per proporcionar abstracció com a part de la programació orientada a objectes. És un modificador sense accés.

Classe abstracta - és una classe que implementa parcialment l'abstracció a Java. Aquí, l'abstracció parcial significa que, a diferència de les interfícies, no tots els mètodes tenen una definició de mètode en una classe abstracta.

Els objectes de classe abstracta no es poden instància i, per tant, qualsevol subclasse que implementi una classe abstracta ha d'implementar tots els seus mètodes, o la subclasse s'ha de declarar una classe abstracta.

La sintaxi de la classe abstracta és:

|_+_|

Mètodes abstractes - són mètodes que només tenen definició però sense implementació. Es declaren en una classe abstracta mitjançant un modificador de tipus abstracte.

Els mètodes abstractes també s'anomenen responsabilitat de subclasses perquè també depenen de la classe que els implementa, ja que formen part d'una classe abstracta.

La sintaxi d'un mètode abstracte és:

Tipus_retorn abstracte (llista_paràmetres);

Hi ha algunes regles sobre mètodes abstractes:

Un mètode abstracte només es pot declarar dins d'una classe abstracta. Per tant, qualsevol classe que contingui un o més mètodes abstractes s'ha de declarar abstracta.

Vegeu també 5 correccions per evitar que el navegador Avast s'obri a l'inici

Hi ha algunes combinacions il·legals entre altres modificadors i modificadors abstractes que s'han de reconèixer:

  • Nadiu abstracte
  • Abstract strictfp
  • Estàtica abstracta
  • Abstracte sincronitzat
  • Final
  • Privat abstracte

Ara, sorgeix la pregunta, si tenim interfícies, quan fem servir mètodes i classes abstractes?

Quan dues o més subclasses tenen una peça de codi similar que fa el mateix però l'estan implementant de manera diferent, es declaren mètodes abstractes.

Amb les interfícies, només podeu definir la funcionalitat però no podeu implementar-la, mentre que, amb una classe abstracta, les subclasses poden implementar o anul·lar els mètodes.

Diferència

Ara estem familiaritzats amb l'abstracció a Java i com podem aconseguir-ho. Considerem ara algunes diferències per aclarir la nostra confusió sobre com l'abstracció és diferent de l'encapsulació i per què necessitem classes i interfícies abstractes.

1. Abstracció i encapsulació

L'abstracció i l'encapsulació formen part dels quatre pilars dels POO: herència, encapsulació, polimorfisme i abstracció.

Tanmateix, a diferència dels altres dos, la majoria de la gent sempre es confon entre encapsulació i abstracció perquè tenen un significat similar.

Anem a comprovar la diferència per entendre millor.

Abstracció Encapsulació
Amagar detalls no desitjats mentre es mostren detalls essencials s'anomena abstracció a la programació.En programació, l'encapsulació significa unir el codi i les dades en una sola unitat.
Amb l'abstracció, un programador pot centrar-se en quina informació ha de contenir un objecte.L'encapsulació permet amagar els detalls interns i la mecànica darrere del funcionament d'un objecte per garantir la seguretat.
Podem resoldre problemes de nivell de disseny amb l'ajuda de l'abstracció en la programació orientada a objectes.Podem resoldre problemes d'implementació amb l'ajuda de l'encapsulació en programació orientada a objectes.

2. Classe abstracta i interfícies

A Java, l'abstracció es pot aconseguir tant per classe abstracta com per interfície.

Les interfícies permeten una abstracció del 100%, i la classe abstracta només permet l'abstracció parcial, però aquests tipus tenen els seus pros i contres.

Els necessitem tots dos en Java per realitzar l'abstracció. Entenem com són diferents els uns dels altres.

Classe abstracta Interfície
Una classe abstracta és una classe java amb una paraula clau abstracta que conté variables finals, estàtiques i finals estàtiques amb qualsevol dels especificadors d'accés.L'única variable final estàtica pública està permesa per a les interfícies.
Les herències múltiples no s'admeten a la classe abstracta.La interfície admet múltiples herències.
Hi pot haver mètodes abstractes i no abstractes dins d'una classe abstracta.En una interfície, només es permeten mètodes abstractes.
Els mètodes públics protegits i abstractes són possibles en una classe abstracta.Només es permeten mètodes públics abstractes en una interfície.
Una classe abstracta pot implementar una interfície.Una interfície no pot implementar una classe abstracta.

Avantatges de l'abstracció

En la programació orientada a objectes, l'abstracció permet al programador reduir la complexitat de la implementació del procés de disseny i programari.

Diverses relacionades les classes es poden agrupar com a germans mitjançant l'abstracció a Java programació.

L'abstracció permet a un programador evitar la duplicació de codi en un programa i augmentar la reutilització.

Amb l'abstracció, la seguretat d'una aplicació o programa augmenta, ja que els programadors només tenen accés a detalls importants per a ells.

Resum

L'abstracció és un dels conceptes més útils presents en tots els llenguatges de programació orientats a objectes com ara C++ , Java, C#, etc.

És fonamental que com a programador entengui l'abstracció i com aconseguir-la, i esperem que aquest article us hagi estat útil.

Preguntes freqüents (FAQ)

Què són l'abstracció i l'encapsulació?

Abstracció – És un concepte bàsic de POO que implica que només se li mostren a l'usuari els detalls que són importants per a ell i que tots els altres detalls innecessaris s'amaguen de manera segura.
Encapsulació – També és un concepte bàsic de POO. L'encapsulació significa unir dades i codi en una sola entitat perquè els detalls es puguin protegir del món exterior.

Què és l'abstracció?

Basat en el diccionari de Cambridge, abstracció significa una situació vaga que no es basa en fets reals.
No obstant això, en programació, l'abstracció significa ocultar detalls innecessaris de l'usuari i mostrar-los prou per facilitar-li el focus en altres problemes complexos.

Doneu alguns exemples d'abstracció de la vida real?

Alguns exemples d'abstracció de la vida real són ATM (tot el que fem és fer clic en alguns botons i fluxos d'efectiu), microones, cotxe, etc.

Quin és un exemple d'abstracció en programació?

En el món de la programació, podem veure l'abstracció si observem els llenguatges de programació. Vam passar dels llenguatges de màquina i a poc a poc vam afegir capes d'abstracció per amagar les funcions internes de la màquina a mesura que arribàvem a llenguatges d'alt nivell. Això ens va permetre passar del simple càlcul matemàtic a problemes més complexos.

Quins són els 4 conceptes bàsics de la POO?

Els quatre conceptes bàsics dels POO són ​​l'herència, l'encapsulació, el polimorfisme i l'abstracció.