La programación orientada a objetos es una forma de programar, un paradigma o una técnica. Los conceptos que aquí aprendiste te servirán en PHP y en otros lenguajes de programación. Recordemos que para programar de esta forma en realidad debemos crear objetos, y un objeto es una instancia de una clase y una clase es el molde. Ejemplo:
Programación orientada a objetos: es la técnica.
PHP: es el lenguaje de programación (donde implementamos la técnica).
Podemos resumir los diferentes conceptos de la siguiente manera:
Herencia: compartir métodos entre clases padres y clases hijas.
Abstracción: significa aislar, separar y sacar.
Polimorfismo: capacidad o virtud que tienen los métodos donde, por ejemplo, un mismo método puede tener diferentes comportamientos y dar diferentes resultados.
Modularidad: este principio básicamente nos ayuda a tener cada vez piezas de código más pequeñas y entendibles, donde cada pieza es un módulo y muchos módulos forman el sistema entero.
Encapsulamiento: un objeto debe estar aislado y ser un módulo natural. Esto se cumple aplicando la protección a las propiedades impidiendo su modificación y básicamente se refiere a controlar el acceso.
Al entender este estilo conseguimos organizar mucho mejor nuestro código agrupando tareas comunes para crear una sola solución y usarla las veces que sean necesarias en nuestro proyecto. Evitamos con esto repetir código y ganamos mucho al dar mantenimiento en el futuro.
Comienza con la palabra reservada class.
El código va entre llaves { }.
La información se guarda en propiedades que pueden ser públicas, privadas o protegidas.
Cada acción la colocamos en métodos que básicamente son funciones o bloques de código dentro de una clase.
$this es una variable reservada por el lenguaje que podemos usar para acceder a elementos propios, siempre y cuando estemos en la instancia de la clase.
new es la palabra clave usada para crear un objeto a partir de una clase.
En el mundo de la programación tenemos muchas técnicas y formas, podemos instanciar una clase dentro de otra y navegar por sus métodos sin restricción.
Son conceptos, métodos o formas que usamos a veces sin saber que estos conceptos existen. Revisa en detalle cada cosa y trata de hacer un ejercicio por concepto para que estos formen parte de ti.
Me encantó dar un repaso por los conceptos de Programación Orientada a Objetos, sueles llevar mucho tiempo haciendo código que se te olvida que la teoría también es importante, me está gustando mucho este curso, aún así sigo pensando que el concepto de Herencia debió de haber sido el primer concepto de todos a enseñar jaja, pero fuera de eso está genial.
Si estás en este punto y aún tienes dudas, te recomiendo mirar los capítulos de nuevo, son muy claros, solo debes analizarlos, no te preocupes si no los entiendes, cuesta un poco al inicio pero con perseverancia lo logras, a mi me tomó tiempo entenderlos, asimilarlos y aplicarlos, ¡No te desanimes! Haciendo mi aporte, trataré de explicar todo con palabras muy simples:
Programación Orientada a Ojetos: Es una forma de programación que representa objetos del mundo real en código, haciendo uso de clases, que pueden ser vistas como plantillas.
Clase: Una clase es una plantilla del objeto, esta define qué propiedades contiene y qué acciones puede realizar, siempre actuando como una plantilla.
Instancia: Una instancia es básicamente usar la clase que tenemos como plantilla y asignar propiedades a dicha instancia, una instancia es básicamente ese "$var = new Clase();" eso es todo, eso es una instancia.
Por ejemplo, puedo tener la clase Coche, que tiene como atributo el color, y puedo tener dos instancias de esa clase, una instancia me puede decir que el coche es color azul y la otra instancia me puede decir que el coche es rojo, tengo dos objetos diferentes que hacen referencia a una misma clase.
Método: No nos compliquemos, es una manera "fancy" de llamarle a una función dentro de una clase, un método es una función, listo, la única diferencia es que el método esta dentro de una clase, that's all.
Propiedad/Atributo: Exactamente lo mismo, una propiedad o un atributo es una manera "fancy" de llamarle a una variable que está dentro de una clase, pero es eso, es una variable, la única diferencia es que está dentro de una clase.
Herencia:* Es, como su nombre lo dice, heredar los métodos y propiedades de una clase en otra clase, siempre y cuando puedan ser heredados, y el si pueden o no pueden ser heredados lo define el encapsulamiento.
Encapsulamiento: Es el "alcance" de las variables, es decir, definen quién pueden ser heredada, quién no, quién puede ser manipulada desde fuera de la clase, etc. Usando las palabras "private, protected y public", les recomiendo leer mi aporte en la clase de encapsulamiento pues lo explico con mucho más detalles y ejemplos :D
Polimorfismo: Uy, esta palabra da escalofríos de solo leerla, ¿Verdad? ¿Y si te digo que detrás de este monstruo se esconde un lindo y tierno gatito? Polimorfismo no es más que hacer que una clase se comporte de maneras distintas sobreescribiendo algunos de sus méotodos, y la manera de sobreescribirlos es heredando esa clase. Básicamente es "hacer que una clase pueda tener varias formas" ¡Como Dito!, ¿Conocen ese Pakiman? ¡Es una criatura polimórifica!
Modularidad: Dividir tu código o proyecto en varias partes o archivos, así es más fácil de leer y mantener
Espero poder aclarar algunas dudas, este tema puede parecer complicado al inicio pero la verdad es muy fácil, ¡No se rindan! :D
Perfecto :)
Abstracción: Este concepto lo aprendí como el proceso de crear una clase a partir de objetos, esto significa obtener los datos simulares entre objetos para poder crear la clase.
Les comparto un resumen del resumen XD
Copy/Paste
Yo siempre tuve falencias como programador en entender y aplicar los conceptos teóricos y fundamentales de POO, pero creo que tú lo explicaste de manera concisa y sencilla. Esto me ayuda a entender mucho más y mejorar.
🧠 Entender los conceptos de la Programación Orientada a Objetos, permiten aplicarlo de forma adecuada.
este es mejor que el curso de POO que da ancode
No creo que se deban comparar los cursos.
Yo acabé con el de Anncode y me pareció excelente incluso mejor que antes de iniciar con éste curso. El problema está cuando alguien quiere aplicar solo a un lenguaje y se encuentra con 4, como en el curso de POO. La ruta de Backend con PHP me está gustando pero me ayudó mucho realizar primero el otro curso antes que este.
Sí, y dejé como sugerencia el tema de los cuatro lenguajes, sin embargo Ann ya no trabaja en Platzi así que ya no puede sacar una nueva versión :(, aunque siendo sinceros, capaz si lo hacía con JS, la gente iba a decir que por qué no con Java, PHP, C#, Pyhon y un largo etc.
este codigo que pone el maestro de ejemplo puede ser usado muy perfectamente si la clase es privada, seria un caso ideal
Me gusto mucho como compartiste estos conocimientos que son de gran importancia para cualquier lenguaje y en este caso para PHP.
Esta muy bueno el curso, recomiendo que hagan ejercicios para que no se olvide lo aprendido.
He visto en las clases usar las palabras claves "extends" e "implements", y me confundí un poco por como dicen: implementa esta clase. Alguien que tenga la misma observación. Cuándo se usa extends y cuándo se usa implements? y se pueden usar ambos?
Cuál es la diferencia entre un objeto y una instancia?
Un objeto es una instancia de una clase. No son diferentes, son lo mismo. Objeto = instancia de clase
Qué quiere decir esto?:
La clase es como un molde para galletas
El objeto (instancia de clase) es la galleta.
Saludos
Genial la explicacion del profesor, lo unico que falto para completar son las namespace, laravel los utiliza mucho.
Pero nos tocara investigar por otro lado.
Siempre viene bien repasar los conceptos y bases de la POO en PHP, ya que es fácil con el tiempo (o la falta de tiempo a la hora de entregar un proyecto) el caer en prácticas no tan "sanas" que a futuro terminan pasando factura, cuando se revisa lo escrito y te preguntas "¿Y porqué hice esto así?".
En lo que llevo programando en diferentes lenguajes, especializándome en este momento en JavaScript y PHP, es difícil encajar estos paradigmas de la programación en un proyecto real en mi percepción. Pero eso era antes de tomar este curso ya que me abrió las puertas a una manera diferente y recursiva de programar. Hace unos años programaba aplicaciones básicas en Java, ese lenguaje y la POO son mejores amigos y la manera en la que funcionan se me hacía fácil de entender ese paradigma.
En resumen, este curso me ha dado una mejor perspectiva del POO en PHP.
🍃 Este documento resume los conceptos clave de la programación orientada a objetos, incluyendo herencia, abstracción, polimorfismo, modularidad y encapsulamiento. También se proporcionan ejemplos de cómo implementar estos conceptos en PHP y se destaca la importancia de la programación orientada a objetos para organizar el código y evitar la repetición de código.
Ha sido un buen repaso de estos temas que había visto en la universidad ya hace algunos años.
Toca ponerlo todo en práctica :)
excelente repaso es bueno todo apuntado !
Está bien explicado para un principiante de la programación orientada a objetos. Aunque recomendaría yo seguir haciendo ejercicios más completos para lograr entender todos estos conceptos repasados, porque con la experiencia se hace el programador.
Muy bueno esto y la mejor técnica para el desarrollo de sistemas escalables y duraderos en el tiempo!!