Los lenguajes de programación orientada a objetos (POO), como JavaScript y Python, organizan el diseño de software en torno a datos que tienen formato de objetos, en lugar de funciones o lógica.
Primero, cubriré los conceptos básicos: objetos, clases, instancias y métodos. Luego, explicaré brevemente los cuatro pilares principales del diseño de programación orientada a objetos: encapsulación, abstracción, herencia y polimorfismo.
Un objeto son datos formateados para representar un objeto del mundo real que tiene un estado y un comportamiento.
El estado de Picard sería "quiere establecer un rumbo" y su comportamiento sería decirle a un alférez el rumbo deseado y "Hacerlo así".
Los diferentes lenguajes de programación abordan esto de diferentes maneras, pero esencialmente una clase es un modelo para crear un objeto.
Cada vez que se crea un objeto, se instancia.
Cada escritorioSponge que se muestra aquí sería una instancia de un objeto y, debido a que están hechos con la clase Spongebob
, una instancia de Spongebob
.
Los métodos son funciones dentro de un objeto.
En otras palabras, los comportamientos de nuestro objeto.
La máquina de café de arriba tendría un método para hacer café y el botón lo llamaría. El oficinista tendría un método para presionar el botón, beber el café y escribir con cafeína.
No necesitas saber cómo funciona la cafetera para apretar el botón y sacar café.
En otras palabras, el comportamiento y el estado del objeto en cuestión deben ser privados y solo deben verse afectados por métodos privados dentro del objeto.
(La persona que presionó el botón no ve el agua calentada y empujada a través del café molido). El objeto debe tener métodos públicos que otros objetos puedan usar para interactuar con él (como el botón).
La única información sobre un objeto que está disponible fuera del objeto es la información absolutamente necesaria para que otros objetos la utilicen.
Esto también se conoce como ocultación de información , y los métodos públicos disponibles para otros objetos son "captadores" y "establecedores".
Al igual que la genética, si una clase fuera un perro y cada objeto heredado de la clase de perro fuera un cachorro.
Los objetos hechos con una clase (JavaScript usa la palabra clave extends
) heredan la información y los métodos de la clase super (o padre) (llamando a super()
en el constructor
en un objeto JavaScript).
Fred
y ghostFred
tienen un método llamado getDressed()
. Cuando se llama a getDressed()
, Fred
se pondrá su pañuelo y ghostFred
se pondrá su disfraz de fantasma.
En este caso, Fred
es la clase y ghostFred
es un objeto que extiende a Fred
. ghostFred
hereda el método getDressed()
de Fred
, pero cuando se crea una instancia de ghostFred
, el programador pasa diferentes argumentos a getDressed()
y/o cambia el código del método.
El lenguaje OOP evalúa qué getDressed()
usar en función del objeto al que se hace referencia cuando se llama (el objeto al que se referiría this
palabra clave). Usado correctamente, esto puede reducir significativamente el código repetido.
Si eres un desarrollador experimentado, con suerte te divertirás con esto. Si eres un principiante, ¡espero que te ayude a usar un lenguaje OOP con más confianza!
Si disfrutaste esta descripción general de alto nivel de OOP en memes o te dejó con más preguntas, ¡deja un comentario!
También publicado aquí.