Historia y Conceptos de la Programación Orientada a Objetos
La
Programación Orientada a Objetos (POO) es un paradigma de programación; es
decir, un modelo o estilo de programación que nos da guías sobre cómo
estructurar el código. En lugar de enfocar el desarrollo en funciones y lógica
secuencial (como la programación estructurada), la POO organiza el software
alrededor de datos u "objetos", replicando la forma en que
interactuamos con el mundo real.
1.
Evolución Histórica de la POO
La transición
hacia la POO no ocurrió de la noche a la mañana, sino que nació de la necesidad
de resolver la crisis del software de los años 60 y 70, donde los programas se
volvían tan grandes y complejos que eran imposibles de mantener.
·
El Origen - Simula 67 (1967): El concepto nació en Noruega, desarrollado por Ole-Johan Dahl y
Kristen Nygaard en el Centro de Cómputo Noruego. Estaban trabajando en
programas de simulación (como barcos navegando y colisionando) y se dieron
cuenta de que era más fácil programar si agrupaban las propiedades de cada
barco dentro de 'moldes'. Así introdujeron por primera vez los conceptos de
clases, objetos y herencia.
·
La Consolidación - Smalltalk (Años 70): Alan Kay, Dan Ingalls y Adele Goldberg en el centro de investigación
Xerox PARC crearon Smalltalk. Alan Kay acuñó formalmente el término
'Programación Orientada a Objetos'. Smalltalk fue el primer lenguaje puramente
orientado a objetos: en él, absolutamente todo (desde un número hasta una
ventana de la interfaz) es un objeto.
·
La Era Comercial - C++ (1983): Bjarne Stroustrup diseñó C++ agregando capacidades de orientación a
objetos al ya ultra popular lenguaje C. Esto permitió que las empresas
adoptaran la POO sin tener que abandonar la velocidad y eficiencia de la
infraestructura que ya tenían en C.
·
La Masificación - Java y C# (Años 90 y 2000): En 1995, Sun Microsystems lanzó Java bajo el lema 'Escríbelo una
vez, ejecútalo en cualquier lugar'. Java eliminó las partes más peligrosas y
complejas de C++ (como la gestión manual de memoria) y se convirtió en el
estándar de la industria y la educación. Más tarde, Microsoft lanzó C# con un
enfoque muy similar para su ecosistema .NET.
2.
Los Componentes Base: Clases y Objetos
|
💡 La Analogía de la
Arquitectura: |
|
Componente |
¿Qué es? |
Ejemplo Cotidiano (Automóvil) |
|
Clase |
Es una plantilla, molde o plano digital que define los
atributos y métodos comunes que tendrán todos los elementos de ese tipo. |
La definición de un 'Auto': tiene marca, color,
velocidad actual, y puede acelerar o frenar. |
|
Objeto |
Es la instancia real y física creada a partir de una clase. Tiene
datos específicos asignados. |
El auto de Juan: Marca: Toyota, Color: Rojo, Velocidad: 60 km/h. |
• Atributos: Son las
características o variables que describen al objeto (ej. nombre, color, edad).
• Métodos: Son las funciones o
acciones que el objeto puede realizar (ej. correr(), encender(),
guardarDatos()).
3.
Los 4 Pilares de la POO
Para que un
lenguaje sea considerado verdaderamente orientado a objetos, debe cumplir con
estos cuatro principios fundamentales:
A.
Abstracción
Consiste en
aislar los elementos esenciales de un objeto ocultando los detalles secundarios
o complejos que no aportan valor al contexto. Nos permite modelar problemas del
mundo real en el código de forma simplificada.
• Ejemplo real: Cuando
manejas un auto, solo interactúas con el volante, los pedales y la palanca. No
necesitas saber la presión exacta del sistema de inyección de gasolina ni cómo
la computadora del motor calcula la chispa. Abstrayes la complejidad del motor
a una simple interfaz de conducción.
B.
Encapsulamiento
Es la acción de
reunir datos y métodos en una sola unidad (la clase) y, al mismo tiempo,
restringir el acceso directo a los componentes internos del objeto. Se logra
usando modificadores de acceso como private, protected y public.
• ¿Para qué sirve? Para
proteger la integridad de los datos. Evita que programadores o funciones
externas modifiquen un atributo con valores inválidos (por ejemplo, ponerle una
edad de -5 años a una persona). El acceso se controla mediante métodos validadores
llamados Getters y Setters.
C.
Herencia
Es el mecanismo
por el cual una clase nueva (clase hija o subclase) adquiere los atributos y
métodos de una clase existente (clase padre o superclase). Permite la
reutilización de código y la creación de jerarquías.
• Ejemplo real: Si tienes la
clase padre Vehiculo (con atributos como motor y capacidad), puedes crear una
clase hija Moto y otra clase hija Camion. Ambas heredan automáticamente las
propiedades de Vehiculo sin tener que volver a escribirlas, pero cada una añade
sus particularidades (la moto añade tieneSidecar y el camión añade
capacidadCarga).
D.
Polimorfismo
La palabra
significa 'muchas formas'. Es la propiedad que permite que un mismo método o
comando se comporte de manera diferente dependiendo del objeto que lo esté
ejecutando.
• Ejemplo real: Imagina una
clase padre llamada Animal con un método llamado hacerSonido(). Si creas las
clases hijas Perro, Gato y Vaca, todas tienen el método hacerSonido(), pero
cuando lo ejecutas, el perro responderá 'Guau', el gato 'Miau' y la vaca 'Muuu'.
El mismo mensaje genera una respuesta distinta según el objeto.
4.
Ventajas de utilizar POO en el Software Moderno
·
Reutilización del código: Gracias a la
herencia, no tienes que reinventar la rueda ni duplicar líneas de código.
·
Mantenibilidad: Al estar el código
modularizado en objetos independientes, si algo falla en una sección (por
ejemplo, el módulo de cobros), es fácil ubicarlo y repararlo sin romper el
resto del sistema.
·
Escalabilidad: Diseñar pensando en
clases permite extender las aplicaciones de forma limpia a medida que los
proyectos crecen.
EXCELENTE, ESTA MUY BIEN REALIZADO
ResponderBorrar