🚀 POLIMORFISMO en JAVA | 🤔| Programación Orientada a Objetos 🖥️ | Explicación FÁCIL 2023 | #7

TodoCode
5 Dec 202112:06

Summary

TLDREste nuevo video se adentra en el concepto de polimorfismo, una característica fundamental de la programación orientada a objetos. A través de un ejemplo práctico, el presentador ilustra cómo diferentes clases hijas, como 'auto', 'moto' y 'bus', pueden ser tratadas como objetos de una clase padre 'vehículo', aprovechando la herencia y el polimorfismo para manejar objetos de diferentes tipos en una estructura de datos común como un vector. La explicación teórica se complementa con un ejemplo de código en NetBeans, mostrando cómo se puede guardar objetos de clases hijas en un vector de tipo 'persona', aprovechando la relación de herencia y el polimorfismo.

Takeaways

  • 📝 El polimorfismo es una característica fundamental de la programación orientada a objetos.
  • 🔍 El término 'polimorfismo' proviene de 'poly' (muchos) y 'morph' (formas), sugiriendo que un objeto puede tener múltiples formas.
  • 👨‍🏫 La herencia es un concepto clave relacionado con el polimorfismo, donde una clase 'hija' hereda atributos y métodos de una clase 'madre'.
  • 🚗 Se utiliza un ejemplo de 'vehículo' como clase padre, del cual derivan clases hijas como 'coche', 'moto' y 'autobús'.
  • 🛠 El polimorfismo permite que objetos de diferentes clases hijas sean tratados como objetos de la clase padre en el contexto de un programa.
  • 🧩 Se menciona la posibilidad de utilizar un vector para almacenar distintos tipos de objetos que comparten una clase padre común.
  • 🛑 Se destaca la advertencia del compilador al intentar mezclar tipos de datos incompatibles en un vector, como guardar un número en un vector de Strings.
  • 🔄 El polimorfismo permite la asignación de objetos de clases hijas a variables de su clase padre sin errores ni advertencias.
  • 🔧 Se ilustra cómo una variable de tipo 'persona' puede almacenar objetos de tipo 'empleado', 'consultor' o 'jefe', gracias al polimorfismo.
  • 👷‍♂️ Se menciona que para asignar un objeto de una clase hija a una variable de su clase padre, es necesario realizar una conversión explícita o 'casting'.
  • 🎉 El script termina con una mención a la celebración de los 20,000 suscriptores y un recordatorio para seguir las redes sociales y participar en los cursos gratuitos.

Q & A

  • ¿Qué es el polimorfismo en la programación orientada a objetos?

    -El polimorfismo es una característica de la programación orientada a objetos que permite que un objeto se comporte de diferentes maneras dependiendo de la clase a la que pertenece. Esto se logra mediante la herencia, donde una clase hija puede ser tratada como si fuera una instancia de su clase madre.

  • ¿Cómo se explica el polimorfismo mediante el ejemplo de vehículos?

    -En el ejemplo, 'Vehículo' es la clase madre, y 'Auto', 'Moto', y 'Colectivo' son clases hijas. A pesar de tener formas diferentes, todas comparten la misma clase madre, por lo que un objeto de cualquiera de estas clases puede ser tratado como un 'Vehículo'. Esto es polimorfismo: una misma interfaz para múltiples formas de comportamiento.

  • ¿Por qué el polimorfismo puede parecer complicado al principio?

    -El polimorfismo puede parecer complicado porque implica entender cómo diferentes clases pueden compartir atributos y métodos a través de la herencia, permitiendo que un mismo método funcione de manera diferente dependiendo del objeto que lo llame.

  • ¿Qué sucede cuando se intenta guardar objetos de diferentes clases en un vector?

    -Si las clases comparten una clase madre, como 'Persona', es posible guardar objetos de esas clases en un mismo vector sin errores. Sin embargo, no se pueden mezclar objetos de clases no relacionadas, como guardar un string en un vector de personas.

  • ¿Por qué es necesario realizar un 'casting' al asignar un objeto de una clase hija a una clase madre?

    -El casting es necesario porque, al asignar un objeto de una clase hija a una variable de tipo clase madre, se pierde la información específica de la clase hija. El casting permite transformar un objeto de la clase madre de vuelta a su clase hija específica.

  • ¿Qué pasa cuando se asigna un objeto de una clase hija a una variable de la clase madre?

    -Cuando se asigna un objeto de una clase hija a una variable de la clase madre, se permite la operación porque la clase hija hereda de la clase madre. Sin embargo, al revés, es necesario un 'casting' para convertir el objeto de la clase madre a la clase hija.

  • ¿Cómo facilita el polimorfismo la creación de funciones como 'estacionar'?

    -El polimorfismo permite crear funciones como 'estacionar', que pueden recibir un objeto de la clase madre ('Vehículo') y trabajar con cualquier objeto de las clases hijas ('Auto', 'Moto', 'Colectivo'). Esto simplifica el código y lo hace más flexible.

  • ¿Qué se requiere para mezclar diferentes tipos de datos en un mismo vector?

    -Para mezclar diferentes tipos de datos en un mismo vector, estos deben ser instancias de clases que compartan una clase madre. Esto se debe a que el polimorfismo permite que diferentes formas (clases hijas) sean tratadas como una sola forma (clase madre).

  • ¿Qué error ocurre al intentar guardar un string en un vector de tipo 'Persona'?

    -El error ocurre porque un string no es un objeto de la clase 'Persona' ni de ninguna de sus clases hijas. Por lo tanto, no es compatible con el vector de tipo 'Persona', y el intento de guardarlo genera un error de tipo.

  • ¿Cómo se aplica el polimorfismo en la vida real, según el ejemplo dado en el video?

    -En la vida real, el polimorfismo puede entenderse como la capacidad de un rol o función de adaptarse a diferentes situaciones. Por ejemplo, un vehículo puede tomar la forma de un auto, moto o colectivo, similar a cómo un objeto en programación puede tomar múltiples formas dependiendo de su clase.

Outlines

00:00

🚀 Introducción al Polimorfismo en Programación Orientada a Objetos

El video comienza con una introducción al concepto de polimorfismo en la programación orientada a objetos. Se explica que el polimorfismo es una propiedad fundamental que permite a los objetos adoptar múltiples formas, dependiendo de la clase madre a la que pertenecen. Se utiliza un ejemplo práctico de la clase 'vehículo' con sus clases hijas 'coche', 'moto' y 'colectivo' para ilustrar cómo un objeto puede comportarse como varios tipos diferentes. A pesar de la aparente complejidad del concepto, se enfatiza que, una vez entendido, es fácil de aplicar.

05:00

🧩 Aplicación del Polimorfismo en Vectores

En este párrafo, se aborda la aplicación práctica del polimorfismo al trabajar con vectores en Java. Se explica cómo un vector de tipo 'persona' puede almacenar objetos de clases hijas como 'empleado', 'consultor' o 'jefe' debido a la relación de herencia. A pesar de la restricción básica de Java que impide mezclar tipos de datos diferentes en un vector, el polimorfismo permite que diferentes subtipos se almacenen juntos siempre que hereden de la misma clase madre. Se muestran ejemplos de código para demostrar cómo se pueden guardar y manejar diferentes tipos de objetos en un mismo vector, evitando errores de tipo.

10:19

🔄 Conversión de Tipos y Herencia en Java

El párrafo final discute la conversión de tipos en Java y cómo se relaciona con el polimorfismo y la herencia. Se explica que, aunque es posible asignar un objeto de una clase hija a una variable de la clase madre, el proceso inverso requiere una conversión explícita o 'casting'. Este concepto se compara con la vida real, donde un hijo puede tomar el rol de un padre, pero no al revés sin una transformación. Además, el video finaliza con agradecimientos a los suscriptores, invitaciones a seguir el canal, y un recordatorio sobre los recursos adicionales disponibles, como webinars y listas de reproducción.

Mindmap

Keywords

💡Programación orientada a objetos

La programación orientada a objetos (POO) es un paradigma de programación que se basa en el uso de objetos y clases. En el video, se menciona como el marco principal dentro del cual se abordan conceptos como la herencia y el polimorfismo, que son fundamentales para entender cómo los objetos pueden interactuar entre sí en un programa.

💡Herencia

La herencia es un principio de la programación orientada a objetos donde una clase hija hereda atributos y métodos de una clase madre. En el video, se explica que este concepto es esencial para entender cómo las clases derivadas pueden compartir o extender las características de una clase base, permitiendo una reutilización eficiente del código.

💡Polimorfismo

El polimorfismo es la capacidad de un objeto para tomar múltiples formas, es decir, que una referencia de la clase madre pueda representar objetos de distintas clases hijas. El video lo ejemplifica mediante una función que puede recibir un objeto de la clase 'Vehículo', donde este objeto puede ser un 'Coche', 'Moto' o 'Autobús', mostrando cómo el polimorfismo facilita la flexibilidad en el manejo de objetos.

💡Clase madre

Una clase madre, o clase base, es aquella de la cual derivan otras clases, conocidas como clases hijas. En el video, 'Vehículo' se menciona como una clase madre que proporciona atributos y métodos comunes a sus clases hijas como 'Coche', 'Moto' y 'Autobús'. Este concepto es clave para entender la herencia y el polimorfismo.

💡Clases hijas

Las clases hijas son aquellas que heredan atributos y métodos de una clase madre. En el video, 'Coche', 'Moto' y 'Autobús' son ejemplos de clases hijas que heredan de 'Vehículo'. Se explica cómo estas clases pueden compartir comportamientos comunes a través de la herencia y pueden ser tratadas polimórficamente.

💡Método

Un método es una función definida dentro de una clase que describe el comportamiento que un objeto de esa clase puede realizar. El video menciona un método llamado 'estacionar', que es utilizado para demostrar cómo un mismo método puede operar sobre diferentes tipos de objetos ('Coche', 'Moto', 'Autobús') gracias al polimorfismo.

💡Objeto

Un objeto es una instancia de una clase que puede contener datos (atributos) y métodos. En el video, se utilizan objetos como 'Coche', 'Moto' y 'Autobús' para explicar cómo el polimorfismo permite que diferentes objetos sean tratados de manera uniforme a través de una referencia común de la clase madre.

💡Atributo

Un atributo es una variable que pertenece a un objeto o clase y almacena información relevante para el mismo. En el video, se menciona que las clases hijas ('Coche', 'Moto', 'Autobús') comparten atributos comunes definidos en la clase madre 'Vehículo', como puede ser el número de ruedas o el tipo de motor.

💡Vector

Un vector es una estructura de datos que almacena elementos del mismo tipo en una secuencia ordenada. En el video, se utiliza un vector de tipo 'Persona' para demostrar cómo, mediante el polimorfismo, se pueden almacenar diferentes tipos de objetos que comparten una clase madre común ('Empleado', 'Jefe', 'Consultor').

💡Casting

El casting es la conversión explícita de un objeto de un tipo de dato a otro. En el video, se menciona cómo es necesario realizar un casting cuando se intenta asignar un objeto de una clase hija a una variable de la clase madre, mostrando un ejemplo práctico de cómo el polimorfismo permite manejar objetos de diferentes tipos.

Highlights

Introducción a la programación orientada a objetos con énfasis en la herencia.

Explicación teórica sobre el polimorfismo como una de las propiedades fundamentales de la programación orientada a objetos.

Definición de polimorfismo: 'Muchas formas' y cómo se relaciona con clases padre e hijas.

Ejemplo gráfico utilizando clases de vehículos como auto, moto y colectivo para explicar el polimorfismo.

Explicación sobre cómo un objeto de tipo vehículo puede comportarse como cualquiera de sus formas derivadas.

Demostración práctica en NetBeans para visualizar el concepto de polimorfismo en código.

Ejemplo de uso de un vector para mezclar distintos tipos de objetos y aplicar el polimorfismo.

Explicación sobre cómo funciona el almacenamiento de diferentes tipos de objetos en un vector de tipo persona.

Demostración de cómo se pueden almacenar objetos de clases hijas en un vector de la clase madre sin problemas.

Discusión sobre la necesidad de hacer 'casting' al asignar un objeto padre a una clase hija.

Analogía con la vida real para entender mejor el concepto de herencia y polimorfismo.

Recomendación de suscribirse al canal y activar la campanita para recibir todas las notificaciones.

Agradecimiento a los 20000 suscriptores y mención de los webinars disponibles en el canal.

Invitación a seguir las redes sociales del canal y dejar comentarios en los videos.

Cierre del video con mención de futuros contenidos y agradecimientos finales.

Transcripts

play00:00

soluciona y bienvenidos a un nuevo vídeo

play00:03

en dónde en

play00:04

[Música]

play00:15

continuar con la serie de programación

play00:17

orientada a objetos con

play00:19

un poquito lo que es la herencia que es

play00:23

una de las propiedades fundamentales de

play00:24

la programación en todos quietos como

play00:26

podemos ver en vídeos anteriores que si

play00:28

no nos dieron solo dejar aquí arriba y

play00:30

también en la descripción para que pueda

play00:31

ver la lista de reproducción completa

play00:33

antes de llegar a este vídeo es un

play00:36

concepto de las características

play00:39

fundamentales de la programación

play00:39

orientada a objetos que es el

play00:41

polimorfismo

play00:45

orfismo un nombre horrible o que me da

play00:48

muchísimo miedo no es para tenerle miedo

play00:51

es un concepto que suele ser un poco

play00:54

complicado al principio de entender que

play00:56

una vez que captamos la idea principal

play00:58

para ver qué es muy sencillo mente va de

play01:02

la mano con la herencia que es el

play01:04

concepto que vimos la clase pasada sí

play01:06

que vamos directamente una explicación

play01:08

teórica cortita y ya vamos derecho a

play01:10

NetBeans a meter código y a Móstoles

play01:12

ejemplos de polimorfismo vamos a eso

play01:15

bien gente

play01:16

el significado de polimorfismo

play01:22

geología de las palabras es decir

play01:25

separar las palabras en partes y en base

play01:27

a eso sacar las definiciones o los

play01:29

significados en este caso

play01:31

polimorfismo vamos a separar en dos

play01:34

partes poli qué significa muchas

play01:40

qué significa forma el profe que

play01:46

te estás imaginando

play01:48

polimorfismo muchas formas qué significa

play01:52

esto

play01:55

a partir de un objeto que pertenece a

play02:00

una clase madre si

play02:05

con clases hijas concepto de clase madre

play02:08

padre y clases hijas o hermanas que

play02:11

vimos en la clase anterior en herencia

play02:13

bueno a partir de esta existencia yo

play02:16

puedo hacer que estos al compartir

play02:20

atributos y padre en común pueden ser

play02:25

considerados como que tuviesen la forma

play02:27

de un solo objeto por más que en

play02:30

realidad tienen muchas Messi profes

play02:33

ReComp lejo lo que me estás diciendo no

play02:35

estoy entendiendo nada vamos a un

play02:37

ejemplo bastante gráfico supongamos que

play02:40

la clase padre que tenemos una clase

play02:43

padre o madre cómo le quieras llamar se

play02:45

llama vehículo bien a partir de vehículo

play02:49

que es mi clase padre yo te voy a tener

play02:51

por ejemplo tres clases hijas que

play02:53

comparten atributos en común con

play02:55

vehículo por ejemplo coche o auto moto o

play03:00

colectivo bus bien son clases hijas de

play03:03

vehículo de vehículo obviamente van a

play03:07

compartir atributos y métodos en común

play03:10

entre sí lo que le va a decir que

play03:13

compartiendo esta misma clase padre

play03:16

cualquiera de estos que tenemos acá se

play03:19

pueda comportar como que tuvieran la

play03:21

misma forma que un vehículo por eso

play03:24

polimorfismo muchas formas un mismo

play03:27

vehículo puede estar en tres formas

play03:29

diferentes en forma de auto en forma de

play03:31

moto en forma de colectivo autobús por

play03:34

ejemplo supongamos que tendría

play03:35

tuviésemos una función de esto está

play03:38

medio de forma alola

play03:40

que se llama estacionar

play03:43

o estacionar que tengo esta función por

play03:46

hacer solo una manera tuya poner que va

play03:48

a tener un parámetro para recibir un

play03:51

vehículo como parámetro al colocar queso

play03:54

por recibir un vehículo acá que estoy

play03:57

diciendo que por recibir un vehículo en

play03:59

cualquiera de sus formas qué quiere

play04:01

decir yo puedo recibir un auto o un

play04:06

colectivo y puedo estacionar cualquiera

play04:08

de las tres porque porque acá pues su

play04:11

vehículo parece como un poquito confuso

play04:13

como que tú eres vamos despejando pero

play04:14

igual sigue siendo confuso nivel teórico

play04:16

así que vamos a ver quién es le voy a

play04:19

mostrar con un ejemplo en un vector cómo

play04:21

podemos mezclar distintos tipos de

play04:23

objetos dentro de un mismo vector y cómo

play04:25

se cumple el polimorfismo así que vamos

play04:28

esos hola hola ahora esperando que

play04:31

pasamos a la práctica no te olvides de

play04:33

poner me gusta y suscribirte si todavía

play04:35

no estás suscrito que nos hay un montón

play04:37

y dejar un comentario de que te están

play04:39

pared la clase de Javi entonces o si

play04:41

quieres algún otro tema que estemos

play04:42

tocando en el canal así que no te

play04:45

olvides de seguirnos en las redes

play04:46

sociales y no te pierdas los cursos

play04:47

gratuitos y con certificado de la toco

play04:49

ahora seguimos conocernos me quede como

play04:52

estoy

play05:00

clásicas que eran consultor y empleado

play05:03

medio mundo de crear una clase y jamás

play05:06

llamada jefe que se las voy a mostrar a

play05:07

car rapidito que tiene dos atributos

play05:10

propios que son aire y jefe y

play05:12

departamento jefe nada más que eso

play05:16

tipos

play05:22

polimorfismo

play05:24

suponer sí que solo necesito un vector

play05:27

in un besito necesito guardar diferentes

play05:30

tipos de personas si quiero borrar

play05:32

personas en general pero qué pasa que se

play05:35

ve todo eso necesito guardar tanto

play05:37

empleados como jefes como consultores

play05:42

lo que dice la teoría general dejaba que

play05:45

nos dice que en un objeto de un tipo yo

play05:48

no puedo guardar objetos de otro lo

play05:51

mismo si yo creo algo de estructura por

play05:53

ejemplo un vector de un tipo de dato yo

play05:56

dentro solo puedo guardar qué cosa

play05:58

variables o valores que pertenezcan a

play06:01

ese tipo de dato si por ejemplo si yo

play06:04

creo un vector que sea de tipo String a

play06:07

suponer así

play06:09

así como lo pueden ver acá

play06:16

si un vector que solo puede guardar

play06:19

Springs más volumen quiero tres

play06:21

posiciones sí sí su este vector en

play06:24

alguna posición por ejemplo el acero yo

play06:26

le quiero guardar un número que me va a

play06:29

saltar a cada advertencia fíjense que me

play06:32

está avisando como error

play06:35

son compatibles entero con Spring y esto

play06:39

es algo básico de Java que salimos que

play06:42

no podemos mezclar tipos de datos ahora

play06:46

te alguna manera hacer este mix de datos

play06:49

fíjense qué pasa si eso creo un vector

play06:52

ahora pero de tipo persona vamos a poner

play06:56

zona

play07:00

[Música]

play07:09

cinco posiciones por ejemplo que vamos a

play07:13

hacer ahora

play07:15

Tor de tipo persona

play07:17

cómo asignarle

play07:22

la posición

play07:24

una nueva

play07:26

persona que sé que no hay ningún

play07:30

problema una persona vacía está perfecto

play07:32

el vector ese tipo persona pues guarda

play07:34

una persona no hay drama

play07:36

si eso quiero guardar por ejemplo un

play07:39

empleado acaso quiero poner ni y quiero

play07:43

guardar un empleado que pasa me tira el

play07:47

mismo error que pasa con el stranger

play07:48

link no me tira nada me dice como que

play07:51

está todo

play07:53

en la posición

play07:54

[Música]

play08:00

consultora

play08:02

Messi diciendo que está bien no me tiré

play08:05

ningún error que tela pasando

play08:08

en otra posición más en A3 voy a guardar

play08:12

mío y ahora voy a bordar un jefe que no

play08:16

hay ningún problema ahora pensé que pasa

play08:18

eso quiero guardar otro tipo

play08:23

la posición 4

play08:25

yo quiero guardar la Palabra

play08:28

[Música]

play08:29

qué te pasa maca si me salta que no

play08:33

puedo guardar un string en un vector de

play08:36

tipo persona pero cómo guardar un

play08:39

empleado en consultoría un jefe que son

play08:41

de tipos distintos pero no puedo guardar

play08:43

un string por qué pasa eso no pasa

play08:46

porque para estos casos se aplica el

play08:48

polimorfismo como persona es la clase

play08:51

madre y empleado consultor y jefe son

play08:55

clases hijas y son formas muchas formas

play08:59

son formas diferentes de representar una

play09:02

misma persona es que me permite que en

play09:04

un vector que pertenezca la clase padre

play09:07

no puede guardar distintos tipos que

play09:10

pertenezcan a clases hijas eso es lo que

play09:13

me permite el polimorfismo digo hermanos

play09:17

y yo tengo una variable común y

play09:18

corriente por ejemplo tengo una variable

play09:20

persona

play09:22

si vamos a suponer que creo un objeto de

play09:25

tipo persona y yo quiero crear también

play09:29

un consultor

play09:32

por supuesto

play09:34

pongamos acá que está pasando

play09:39

consultor puedo hacer mi objeto persona

play09:45

sin problema

play09:49

pero cómo puede ser que cayó a un objeto

play09:54

persona

play10:18

no me permite hacer lo mismo fíjense que

play10:22

me tira como advertencia de que haga un

play10:25

castillo de que ya tengo que transformar

play10:28

la persona para enseñarle a un consultor

play10:30

fíjense que me funciones y su hago la

play10:33

asignación de un hijo a su papá o a su

play10:36

mamá pero no de un papá a su hijo bien

play10:40

voy haciendo analogía con la vida real a

play10:43

partir lo que vimos en la clase de

play10:45

herencia anteriormente

play11:15

suscribite dale click a la campanita y

play11:18

pone que te aparezcan todas las

play11:20

notificaciones así también no te olvides

play11:22

que seguimos con los festejos de los

play11:24

20000 suscriptores muchísimas gracias a

play11:26

todos los que estudian los últimos

play11:27

juegos y si no pudieron ver los Webinars

play11:29

anteriores hoodie el apartado de listas

play11:32

de reproducción webinar y tienen toda la

play11:34

lista de buenas que están hasta el

play11:36

momento seguramente hasta fin de año

play11:38

alguno que otro más vamos a poner para

play11:40

poder completar con este festejo así que

play11:43

los espero en nuestras redes sociales

play11:45

que le den me gusta este vídeo dejen sus

play11:48

comentarios que nos dan un montonazo y

play11:50

nos vemos en un próximo vídeo en dónde

play11:54

[Música]

play12:00

[Aplausos]

play12:01

[Música]

Rate This

5.0 / 5 (0 votes)

Связанные теги
programaciónpolimorfismoJavaorientada a objetosherenciaconceptos básicosejemplos prácticosdesarrollo de softwarecódigotutorial
Вам нужно краткое изложение на английском?