1. POO
1.1. Paradigma de programación basado en "Objetos", que son entidades que contienen datos y acciones para manipular esos datos.
2. Historia de POO
2.1. Surge a finales de los años 60 con "Simula", el primer lenguaje que introduce clases y objetos. Posteriormente, "Smalltalk" se convierte en el primer lenguaje orientado a objetos, influyendo en los lenguajes actuales.
3. Conceptos y principios fundamentales
3.1. Conceptos
3.1.1. Clases: Plantillas que definen características y comportamientos de objetos Objetos:Instancias de una clase que agrupan datos y métodos y que actúan como entidades autónomas. Encapsulamiento: Agrupa datos y métodos en un objeto. Herencia: Permite que una clase "hija" herede propiedades y métodos de una clase "padre".
3.2. Principios
3.2.1. Polimorfismo: Permite que un método o clase adopte diferentes formas para resolver problemas. Abstracción: Oculta detalles internos, mostrando solo lo esencial para que el usuario se enfoque en el "qué" en lugar del "cómo".
4. Lenguajes de POO y patrones de diseño
4.1. Lenguajes
4.1.1. JavaScript: Usado en desarrollo web y móvil, organiza información en clases y objetos. Python: Versátil y soporta múltiples paradigmas, ideal para pruebas rápidas e interactivas. C++: Lenguaje eficiente utilizado en sistemas embebidos y aplicaciones gráficas. Java: Popular en aplicaciones empresariales y bancarias, conocido por su seguridad y escalabilidad.
4.2. Patrones de diseño: Son soluciones reutilizables para problemas comunes en la arquietectura de software
4.2.1. Singleton: Asegura una única instancia global de una clase. Factory: Crea objetos sin definir la clase exacta. Adapter: Ajusta la interfaz de una clase para que sea compatible con otra.
5. Ventajas y desventajas
5.1. Ventajas
5.1.1. Reutilización de código Modularidad. Facilidad de mantenimiento Encapsulamiento. Modelado del mundo real.
5.2. Desventajas
5.2.1. Curva de aprendizaje lenta. Sobrecarga en proyectos pequeños. Dependencia de un buen diseño incial.