hola amigos y amigas de the team yo soy álvaro felipe y hoy quiero hablarte acerca de la programación orientada a objetos he hecho mi mayor esfuerzo para explicarte de la mejor manera y de la forma más entendible este concepto que es confuso para los que comienzan así que al final del vídeo me dirás si lo logré o no lo logré pero te juro que he hecho mi mayor esfuerzo antes de comenzar quiero recordarte que si te interesa dominar la tecnología de ting es el lugar para ti deja de ser un simple usuario de la tecnología
y domina la y conquiste el mundo con el de ti puedes aprender a crear tus propias aplicaciones crear tus propios diseños o crear tu propia empresa entra a ed team para empezar a estudiar completamente gratis dicho eso vamos al tema de hoy programación orientada a objetos que tienen que ver estos dos conceptos la programación y los objetos los objetos son pues pues la computadora el teléfono este aparato yo mismo podría ser considerado un objeto no pero qué tiene que ver con la la nación lo que pasa es que la programación es muy amplia muy amplia
hay varias formas de programar es tan amplia que a mucha gente le le confunde y le estresa el proceso de aprendizaje a mí también me estreso tanto así que si un vídeo que se llama no sirve para programar donde cuento lo difícil que fue para mí en cierta etapa pasar de las bases de la programación hay a programar cosas reales aprender las bases es muy fácil y en un día puedes estar haciendo tu primer hola mundo y tu primer programa muy básico pero luego luego llevarlo al mundo real es algo que puede ser muy frustrante
si tú estás pasando por ese momento es temporal tranquilo a mí también me pasó me sentía inútil te invito a ver ese vídeo pero es temporal ahora a que quiero llegar a que la programación es amplia pues por eso uno a uno le enreda y en la programación existe algo llamado paradigmas los paradigmas de programación qué cosas son son estilos de programar formas de programar yo puedo programar de una forma u otra persona de otra forma de otra forma de otra forma ok cada programador tiene su propio estilo pero en términos más generales hablamos de
paradigmas entonces el paradigma con el que nosotros nos enseñan a programar es el paradigma secuencial o estructurado es decir las instrucciones van de arriba a abajo una después de otra es la manera más sencilla de aprender a programar no tenemos que abstraer cosas complejas sino simplemente damos una orden luego damos otra orden leemos un dato lo manipulamos con alguna operación ponemos una condicional para validar ese resultado y según el resultado mandamos una cosa u otra cierto sencillo no de arriba hacia abajo así aprendimos todos a programar pero cuando empiezas a ir a proyecto es un
poco más grandes te das cuenta que esto no te ayude mucho y ahí es donde se te complican las cosas te voy a poner un sencillo ejemplo un cliente pide una tienda en línea donde él va a vender zapatos entonces tienes que pensar de una manera muy diferente cómo vas a hacer de arriba hacia abajo ese programa una tienda en línea para vender zapatos tienes los zapatos que pueden tener un precio un color una talla una marca que pueden filtrarse que deben agregarse a un carrito tienes el carrito que debe conectarse con una pasarela de
pago para recibir las transacciones los pagos de dinero tienes a los usuarios que van a hacer las compras son muchas cosas que no pueden escribirse de arriba hacia abajo y aún así como es la única manera en la que sabemos hacer código sabemos programar aún así lo hacemos de arriba hacia abajo si o no lo has hecho yo también lo he hecho y mea culpa es que así nos enseñaron entonces cambiar el chip cambiar mentalmente ese modelo ese paradigma a otro paradigma es difícil es muy difícil y ahí es donde empezamos a complicarnos el paradigma
más usado en el mundo no el mejor porque eso es relativo pero si el más usado en el mundo es la programación orientada a objetos porque porque cada uno de estos elementos que necesita el sistema la aplicación el programa como el carrito el producto el usuario etcétera cada uno de esos elementos es un objeto en este paradigma y esos objetos tienen sus propios datos y tienen su propio comportamiento su propia funcionalidad por ejemplo los productos tienen precio tienen marca tienen nombre pero también tienen funcionalidad por ejemplo pueden ser comprados obvio pueden ser agregados al carrito
los usuarios también tienen datos tienen por ejemplo su nombre su número de tarjeta de crédito etcétera pero también tienen acciones que ellos pueden hacer ellos pueden comprar productos el carrito también sería un objeto porque este objeto tiene datos sus datos serían por ejemplo qué productos han sido agregados al carrito o tal vez ninguno entonces esté en cero que usuario está ahorita en ese carrito adicionalmente tiene funcionalidad por ejemplo mandar esa orden de compra a la pasarela de pago para que se procese y recibir el mensaje de si el proceso fue exitoso si el pago fue
exitoso o no cada uno de esos elementos en los que nosotros vamos dividiendo el sistema es un objeto y los objetos tienen datos y tienen funcionalidad entonces repasemos los objetos tienen datos y tienen funcionalidad eso lo voy a repetir muchísimo en el vídeo de hoy así que no lo vas a olvidar datos y funcionalidad está bien entonces con la programación orientada a objetos pasamos de tener un digo de arriba hacia abajo en el que las funcionalidades están todas metidas y que es muy difícil de separar y de escalar a un sistema en el que tenemos
los elementos o los objetos separados y que se comunican entre ellos como el usuario que se comunica con el producto para comprarlo el producto que se comunica con el carrito el carrito con la pasarela de pago y a la vez con el usuario etcétera los objetos se comunican entre ellos entonces de esta manera es más fácil manejar y mantener un sistema y hacerlo crecer si luego necesitamos otra funcionalidad podemos agregar otro objeto o incluso agregarle atributos o funcionalidad a los objetos que ya existen como ya dije los objetos tienen datos y tienen funcionalidad y lo
voy a repetir muchas veces para que no lo olvides jamás los datos en programación orientada a objetos se llaman atributos y la funcionalidad se llaman métodos es decir cada objeto tiene sus atributos y tiene sus métodos pongamos un caso del mundo real para que quede muchísimo más claro estamos programando la aplicación de cursos de edet y queremos crear usuarios entonces hacemos un proceso llamado abstracción abstracción es pensar que atributos y qué métodos debería tener este usuario para nuestra aplicación entonces luego de esa reflexión nosotros llegamos a la conclusión que nuestro usuario debe tener nombres apellidos
correo contraseña y premium premio sería un valor bul ya no es decir que puede ser verdadero o falso que nos va a decir si el usuario es premium o no es premium a través de este mismo proceso de abstracción definimos sus métodos cuáles van a ser sus métodos iniciar sesión cerrar sesión editar su perfil cambiar su contraseña pasar a premium o publicar un artículo en la comunidad esas son las funcionalidades obviamente en el proceso podemos darnos cuenta que necesitamos también el atributo país el atributo género o el atributo fecha de nacimiento los agregamos ya tenemos
la estructura y los agregamos este proceso es la abstracción este objeto se crea en código obviamente pero te imaginas que para cada vez que un usuario quiera registrarse que son miles llamemos al programador y lo pongamos escribir código para cada usuario no sería eficiente tendríamos una cola de cientos de usuarios esperando que el programador termine con el actual para pasar al siguiente como resolvemos ese problema de crear miles de usuarios sencillo usamos algo llamado clase la clase es una plantilla es un molde este molde tiene esa estructura básica del objeto sus atributos que son sus
datos y sus métodos que su funcionalidad entonces en el proceso de abstracción que vimos hace un momento no creamos realmente el objeto usuario creamos la plantilla la clase entonces cada vez que una persona llega a él y ting y se registra crea su cuenta realmente está usando la clase que ya hemos creado y que ya está en nuestro código para crear nuevos objetos usuario es el proceso de crear objetos a partir de una plantilla llamada clase se llama instancia graba test o instancia es crear un objeto a partir de una clase por eso es que
cada uno de esos objetos también se le llama instancia y de esa manera es como con una sola clase podemos crear decenas cientos o miles de usuarios sin tener que escribir código nuevamente solamente escribimos una vez la plantilla en este punto debe quedarte claro que un objeto tiene datos que son los atributos y tiene funcionalidad que son los métodos y que a través de una clase que es la plantilla podemos crear varios objetos ahora como es el proceso de usar estos objetos en una aplicación real te lo voy a mostrar con un ejemplo para que
te quede clarísimo y nunca más tengas dudas en este ejemplo tenemos ahí al tío alexis este es un universo paralelo en el creativo alexis no conoce hay de ti entonces un amigo suyo le dice al tío alexis hoy he descubierto una plataforma de cursos que se llama the team es excelente y puedes comenzar gratis entonces celtyv alexis dice a qué chévere voy a revisar esa página entra a la web de the team le parece muy interesante se da cuenta que puede comenzar gratis sin tarjeta de crédito sin nada y dice voy a registrarme y voy
a probar qué tal entonces en el proceso de registro él invoca a la clase usuario y la instancia y crea su usuario te das cuenta acaba de crear su usuario con su proceso de registro ese nuevo usuario es el usuario 528 que tiene como nombre alexis como apellido losada este usuario empieza a consumir los cursos gratuitos de the team y le gusta eso está muy chévere y veo que hay más de 150 cursos y yo paso a premium entonces voy a pasar a premium que hará el usuario él va a la página donde están los
planes escoge un plan mensual semestral o anual e introduce sus datos de compra ya sea paypal tarjeta de crédito en ese momento lo que está haciendo él es llamar a la clase orden de compra y esa clase orden de compra instancia a un objeto una orden de compra asociada a este usuario por eso le estamos poniendo ahí su mismo aire y orden de compra 528 que es el del usuario esta orden de compra se debe procesar si el proceso es correcto si se valida el pago está orden de compra llama a otra clase esta clase
es la clase premium y esta clase premium se instancia el jugo objeto premium también con el aire del mismo usuario que se asigna a este usuario que ahora ya es premium y ya puede ver todos los cursos de the team entonces recuerda que las clases ya están allí en el sistema mira todos esos cubos grises son las clases que en el proceso se van a instancia para crear objetos reales listo el usuario es un objeto real la orden de compra es un objeto real el premio es un objeto real que se han creado a partir
de instancias así es como funciona la programación orientada a objetos entonces no olvides que los objetos tienen atributos y tienen métodos pero una cosa más que los objetos se crean a partir de clases las clases son las plantillas y los objetos se crean a partir de esas plantillas por ejemplo el plano de una casa sería el equivalente a una clase porque a partir de ese plano puedes crear varios objetos y el proceso de crear un objeto a partir de la clase se llama instancia no lo olvides otro ejemplo para que no lo olvides nunca el
dibujo que hace un diseñador de un vestido sería el equivalente a una clase porque a partir de ese dibujo él puede fabricar varios vestidos el vestido real ya sería el objeto y el proceso de crear ese vestido a partir de ese dibujo sería instancia a este punto espero que haya cinco palabras en tu cabeza que no vuelvas olvidar objeto atributo método clase instancia cinco palabras objeto atributo método clase instancia ya está con eso entiendes la programación orientada a objetos ahora como paradigma la programación orientada a objetos se basa en cuatro pilares que son abstracción encapsulamiento
polimorfismo y herencia estos cuatro conceptos son la base de la programación orientada a objetos puede ser un poco confuso entenderlo al comienzo así que atento a lo siguiente en primer lugar la abstracción de la estación y hablamos hace un momento te acuerdas cuando queríamos crear un usuario el proceso de abstracción era pensar qué atributos y qué métodos va a tener eso es la extracción obviamente cuando creamos un sistema nosotros tenemos que hacer una abstracción para todas las clases el usuario por ejemplo en el de tim los cursos las clases las suscripciones las publicaciones en comunidad
cada uno de estos elementos sería una clase y nosotros tenemos que hacer ese proceso mental de abstracción de pensar qué atributos y qué métodos va a tener entonces eso es la abstracción esos conceptos llevarlos y convertirlos en clases que tengan sus atributos y tengan sus métodos el siguiente concepto es el encapsulamiento y es que como hemos visto los objetos se comunican entre ellos esto podría traer problemas de seguridad si un objeto pudiera modificar los datos de cualquier otro entonces se necesita proteger la información de manipulaciones no autorizadas de tal manera que cuando se comunican los
objetos hay caminos que se pueden seguir y caminos que no datos protegidos datos privados datos públicos métodos para acceder a cierta información objetos que no pueden acceder a cierta información o ciertos métodos de otros objetos de esa manera tenemos organizado el sistema porque imagínate que cualquier objeto puede acceder a cualquier información cualquier cambio no debido podría ser colapsar y que todo el sistema se caiga el siguiente concepto es el polimorfismo y para explicártelo recordemos este gráfico del tipo alexis convirtiéndose en premium cuando él se convierte a premium se notifica vía tres canales slack web y
correo la notificación es la que es privada para el equipo de the team que nos dice que en ti vale si se ha suscrito vía web para el mismo usuario le llega un mensaje vía web y por correo también para el usuario le llega ese mensaje confirmando le que ahora es crimen si se dan cuenta es la misma funcionalidad la notificación aunque internamente cada uno de esos métodos funciona diferente es decir la notificación slack tiene sus pros su propia y sus propios métodos su propia lógica igual para la web igual para el correo que es
una api de correo diferente pero en esencia es la misma función es la misma acción eso no simplifica mucho el trabajo porque podemos dar órdenes coherentes a varios objetos sin preocuparnos de como internamente ellos las ejecuten es como si le dijéramos baila al tío alexis baila a mano o baila a mí cada uno de nosotros bailará diferente yo seguramente será el peor de los tres pero cada uno bailará a su modo es decir nos dieron una orden y cada uno la cumple a su propia manera en particular eso es el polimorfismo poder darle la misma
orden a diferentes objetos y que cada uno de ellos responda de su propia manera y el último concepto es la herencia este quizás es el más fácil de entender porque tiene mucha relación con el mundo real por ejemplo mis hijos han heredado muchas cosas mías tanto atributos como funcionalidades por ejemplo en atributos el color de los ojos del cabello de la piel la funcionalidad por ejemplo el carácter o la personalidad sin embargo ninguno de mis hijos es una copia de mí no son iguales sobre esas cosas que ellos han heredado ellos tienen sus propios atributos
su propia personalidad su propia funcionalidad mi hijo es muy diferente a mí y me sorprendo a pesar de que reconozco también algunas cosas similares mías en él es lo mismo en la programación orientada a objetos tenemos una clase padre y las clases fijas heredan funcionalidades y atributos de esta clase padre pero no son idénticos no son idénticos solamente aprovechan eso que ya existe y luego se le añaden nuevas cosas por ejemplo miren tenemos una clase para crear usuarios se acuerdan un usuario genérico pero luego decimos necesitamos un usuario diferente que sea staff solamente para el
equipo de the team para los trabajadores de the team que tengan diferentes funcionalidades diferentes atributos al usuario común entonces qué hacemos heredamos creamos una nueva clase que heredé de la clase padre y esa clase va a ser staff y ahí podemos poner a los miembros del equipo luego decimos necesitamos otro tipo de usuario que sea profesor porque el profesor tiene otro tipo de funcionalidad otro tipo de atributos entonces también heredamos de la clase usuario y creamos la clase profesor y a partir de esa clase de profesor creamos todos los profesores del team y por último
decimos que tal que queremos meter invitados por ejemplo gente que sin pagar una suscripción pueda tener acceso por ejemplo para los sorteos o para las premiaciones o las campañas que hacemos entonces creamos un rol invitado para atraer gente externa y que pueda tener acceso a de tim y de esa manera podemos crear clases hijas te quedó claro en qué consiste la programación orientada a objetos espero que sí porque hice mi mayor esfuerzo para esta presentación si quieres saber más de la programación orientada a objetos que es el paradigma más usado en el mundo y aprenderlo
ya con código con proyectos no solamente con slides te invito a los cursos que tenemos en el de tim tenemos un curso de programación orientada a objetos en java dictada por el tío alexis tenemos un curso de programación orientada a objetos en general con la teoría aplicada a más de un lenguaje con el profesor josé luján y tenemos un curso de programación orientada a objetos con llave script que es el lenguaje más importante de la web y muchos cursos más porque la programación orientada a objetos existen muchísimos lenguajes así que te invito a entrar para
conocer todos los cursos que tenemos disponibles para ti recuerda no seas un simple usuario de la tecnología domina la y conquiste el mundo porque en el de tim puedes aprender a crear tus propias apps tus propios diseños o tu propia empresa y asegurar tu futuro porque tu futuro te está esperando yo soy álvaro felipe y nos vemos en el próximo vídeo hasta la próxima chao