Transcript for:
Pilares de la programación orientada a objetos

Hola Geeks, soy Manuel Zapata. Por más que tengamos experiencia desarrollando, a veces se nos suelen olvidar conceptos muy importantes que nos pueden sacar de problemas cuando tengamos dilemas existenciales. Si trabajas con objetos, justamente uno de esos conceptos es los pilares de la programación orientada a objetos, es decir, abstracción, polimorfismo, herencia y encapsulamiento. Lo que vamos a hacer en este video es hacer un repaso muy rápido de esos conceptos para que los tengas presentes, pero más importante aún, lo que quiero hacer es invitarte a mi mini curso de programación profesional con objetos. Aquí te dejo el enlace, pero al final te voy a contar un poquito más acerca de este mini curso de qué trata. Sin más frambulo, entonces, vamos con el video. Un buen tip que me enseñó mi primer profesor de algoritmos hace ya unos cuantos añitos, es que para uno acordarse de los pilares de la programación orientada a objetos, uno puede utilizar la sigla... Apay, ojo, no a pie, sino apay, dicho como en inglés, un pay es como una tarta. Entonces, esto sirve muchísimo para acordarse, la A significa abstracción, la P polimorfismo, la I es de inheritance, por herencia en inglés, y la E es de encapsulamiento. ¿Listo? Ahí como un pequeño dato curioso. Ahorita sí, hablemos de abstracción. Abstracción en programación orientada a objetos es la capacidad de representar la información que es importante para el contexto del problema. ¿Esto qué quiere decir? Esto quiere decir que según el problema que estemos enfrentando, la programación de estado objeto nos permite tomar los elementos que son relevantes. Un ejemplo de esto es una motocicleta. Dice una motocicleta que puede ser una clase en nuestro programa. Si estás trabajando para una aplicación de domicilios, ¿cierto? Y estás modelando justamente la parte de los vehículos o de las motocicletas en las cuales se entregan los pedidos, pues información relevante ahí posiblemente sea el modelo de la moto, a lo mejor la placa, de pronto hasta el color y ya. Pero si nos vamos a otro contexto, por ejemplo, estás haciendo un software para un taller de reparación de motocicletas, pues ahí el contexto cambia totalmente porque ya esa moto... Nos interesa muchísimo más detalles, nos interesa saber información del chasis, información de los frenos, nos interesa conocer todo el historial de los mantenimientos que se le han hecho, etc. Entonces mira que dependiendo del contexto, la información que yo voy a representar para resolverla es diferente y justamente de eso trata la abstracción. Ahora hablemos de herencia, que es la que corresponde a la letra I en la sigla de API, eSport Inheritance. o herencia en inglés. Entonces, básicamente, ¿qué es la herencia? Es la capacidad de construir nuevas clases a partir de clases existentes. ¿Esto qué quiere decir? Que si yo tengo una clase A y una clase B, donde B va a heredar de A, eso significa que B va a tomar absolutamente todo lo de A, es decir, va a tomar todo lo que tiene y a partir de eso voy a construir cosas nuevas. Específicamente, ¿qué va a tomar? Va a tomar dos cosas. La primera es el estado. El estado está representado por los atributos o las variables de la clase. Si volvemos al ejemplo de la motocicleta del que hablábamos en abstracción, pues, por ejemplo, atributos pueden ser el color, puede ser el modelo, puede ser la placa. Eso es lo que vamos a llamar el estado. Y por otro lado, va a tomar también el comportamiento. Y el comportamiento hace referencia a los métodos que están definidos en la clase. Entonces, B por heredar de A va a tomar todos sus métodos. Y además de eso, va a poder definir métodos nuevos. Ahora vamos con la letra P de polimorfismo, que es la capacidad de un método de devolver cosas diferentes dadas ciertas condiciones. La primera condición es los parámetros. La segunda condición es la herencia. Cuando lo que cambian los parámetros, estamos hablando de algo que se llama polimorfismo por sobrecarga. ¿Esto qué significa? Tienes una clase con dos métodos que tienen el mismo nombre. Si estos métodos tienen distintos parámetros, es decir, tienen distintos números de parámetros y tienen también distintos tipos o una mezcla de esas dos, entonces el entorno de ejecución que esté llamando la clase va a poder distinguir cuál de los dos métodos tiene que llamar dependiendo justamente de los parámetros que yo le proporciono. Ese es el polimorfismo por sobrecarga. ¿Listo? Por otro lado, cuando la condición es la herencia, tenemos polimorfismo por sobrescritura. En este caso, lo que estamos haciendo es que en la clase de padre tenemos un método y en la clase de hija lo podemos sobreescribir. ¿Listo? Y de nuevo, si yo tengo una variable que es de ese tipo de la jerarquía, puede ser de la clase padre o puede ser de la clase hija, cuando yo invoque un método sobre esa variable, el entorno de ejecución va a poder distinguir a qué método estoy haciendo referencia, si es del padre o el del hijo, dependiendo del tipo de la variable. Y eso es muy poderoso porque yo puedo empezar... a extender el comportamiento de las clases. Es padre solamente utilizando este concepto de polimorfismo. Vamos con la última letra, la E de encapsulamiento. Y el encapsulamiento lo que quiere decir es que yo puedo decidir como clase qué partes internas puedo exponer hacia otros objetos. Esa es la idea básica. ¿Cómo decido qué exponer y qué no exponer? Esto se hace a través de los modificadores de acceso. Es decir, esas palabritas que uno pone por ahí en el código como public, como private, como protected. justamente nos ayudan a definir en la clase que quiero mostrar y eso lo puedo hacer tanto en el estado es decir en los atributos en las variables de clase pero lo puedo hacer también a nivel de métodos listo en lenguajes como javascript yo también puedo hacer encapsulamiento otras formas por ejemplo con el alcance de las variables si yo puedo tener variables definidas por ejemplo a nivel de ciertos módulos esas variables puede que no estén disponibles desde otros módulos entonces no solamente con modificadores de acceso se puede hacer el encapsulamiento como pudimos ver Vimos un vistazo general a los pilares de la programación orientada a objetos. Sin embargo, fue eso, justamente un vistazo. La invitación es a que te inscribas a mi mini curso de programación profesional con objetos, donde ahí vamos a full detalle con cada uno de los pilares. De cada pilar hay un video donde vemos la explicación, pero también vemos código en Java y en C Sharp para ver las diferencias entre los lenguajes y vemos exactamente cómo se implementa. Además de eso, vas a tener acceso al repositorio de código. donde vas a ver los ejemplos que desarrollaremos en los videos. En este enlace encuentras toda la información. En la descripción del video también estará el enlace para que puedas inscribirte al curso. Es 100% gratuito. Recibes una lección cada día en tu correo electrónico. Muy fácil, muy sencillo de consumir. Y bueno, eso era todo lo que tenía para compartirte el día de hoy. Recuerda, dale like a este video, suscríbete al canal y dale click a la campanita para que te avisemos cuando publiquemos nuevo material. Eso era todo lo que tenía para compartirte. Hasta pronto. Música