Explicando los objetos. El concepto principal de los enfoques modernos de programación.
Aquí estamos desglosando gradualmente la programación orientada a objetos. En la primera parte, hablamos sobre el código espagueti y el propósito de la programación orientada a objetos (POO). Luego, analizamos las clases, que es de donde se crean los objetos. Finalmente, por fin: los objetos.
Un Ejemplo: el iPhone
Esto es un laboratorio, una oficina de diseño. Aquí tenemos diseñadores, ingenieros y programadores. Hicieron planos e instrucciones sobre cómo ensamblar los nuevos iPhones. Si se juntan todas estas instrucciones, su conjunto podría llamarse una clase. Es una especie de «idea del iPhone».
Sabemos por el artículo anterior que en una clase podemos registrar propiedades y métodos.
- Las propiedades son, en términos generales, datos. Un iPhone puede tener una «propiedad» en forma de un sistema operativo instalado en él.
- Los métodos son, en términos generales, «lo que este dispositivo puede hacer». Un iPhone puede tener «métodos» como llamar, enviar mensajes de texto, iniciar la cámara, tomar una foto.
Todos estos conjuntos de propiedades y métodos constituyen una clase general, que luego utilizamos para crear nuestros iPhones imaginarios.
Cuando se registra una clase, la fábrica puede tomarla (es decir, todos esos planos y especificaciones) y hacer muchas copias de los iPhones. Cada teléfono que sale de la fábrica tiene características claramente definidas: tamaño de memoria, diagonal de pantalla, color de carcasa, etcétera. Todo esto fue pensado y registrado de antemano en las instrucciones de fabricación. Aun así, todos los teléfonos resultan ser simultáneamente iguales y diferentes.
- Iguales: todos los teléfonos de un mismo modelo no se diferencian casi en nada. Tienen el mismo hardware, características y capacidades. Si se toman dos teléfonos aleatorios de la línea de montaje, no habrá ninguna diferencia entre ellos. Todos funcionan igual, tal como lo pensaron los diseñadores.
- Diferentes: aun así, cada iPhone tiene un número de serie único y otros identificadores únicos. Algunos modelos pueden diferir en el color de la carcasa o tener una ranura para 2 tarjetas SIM, como las versiones para el mercado chino.
Después de que los iPhones salen de la fábrica y llegan a las manos de las personas, cada teléfono comienza a llenarse con diferentes datos: fotos, videos, música, libros y programas. En un uso normal en el mundo, no hay dos teléfonos con datos completamente idénticos en su interior. Pero en todos se inicia la cámara de manera idéntica, se cambian los fondos de pantalla de la misma manera y se envían mensajes de texto. Esto significa que todas las propiedades y métodos de trabajo con este modelo son los mismos para todos los teléfonos de este modelo. Basta entender cómo trabajar con uno, y se entiende cómo trabajar con todos exactamente igual.
Toda esta analogía con los iPhones es necesaria para entender el sentido de los objetos:
- Hay una clase: un plano de un objeto futuro.
- Sobre la base de esta clase, se puede hacer un objeto.
- El objeto creado tiene todo lo que se le incorporó desde la clase.
- Después de la creación, con el objeto se puede hacer todo lo que se le incorporó desde la clase.
- Además, con el objeto se puede hacer todo lo demás que permite el lenguaje de programación.
Cómo se Crean los Objetos
En términos generales, en JavaScript un objeto se establece con esta construcción. Por ahora es abstracta, solo un ejemplo:
class MyClass {
// propiedades de la clase
prop1 = valor1;
prop2 = valor2;
// constructor, se utiliza para crear nuevos objetos
constructor(...) {
// contenido del constructor
}
// métodos de la clase, lo que la clase puede hacer y cómo interactuar con ella
method1(...) {}
method2(...) {}
// ...
}
Ahora hacemos una clase específica, que responde por teléfono:
class iPhone {
constructor(memoria, color) { // al crear especificamos
// tamaño de la memoria interna y color
this.memoria = memoria; // creamos el teléfono con la memoria especificada...
this.color = color; // ... y con el color especificado
}
quienEs() { // método que muestra información sobre el teléfono
console.log('Memoria: ' + this.memoria + ' GB. Color: ' + this.color);
}
}
Nos apareció el comando «this
«, que responde por las propiedades de una clase específica. Con su ayuda, la clase se dirige a sí misma hacia los valores necesarios. También hicimos el método «quienEs
«, que muestra el valor de la memoria y el color. Cada objeto que creamos en base a esta clase podrá hacer esto; para esto solo se debe escribir el nombre del objeto, poner un punto, y luego escribir el nombre del método.
Serie de Guías Relacionadas a POO:
- Explicación Programación Orientada a Objetos
- ¿Qué son las Clases en Programación Orientada a Objetos?
- ¿Qué son los Objetos en Programación Orientada a Objetos?
- Clases y Funciones en Programación Orientada a Objetos
- Atributos y Métodos en Programación Orientada a Objetos
- Abstracciones e Interfaces: ¿Por qué son Necesarias?
- ¿Qué son los Getters y Setters en Programación?