1. Concepto de POO
1.1. Definición: Paradigma de programación que organiza el software en torno a "objetos"
1.1.1. Paradigma: Metodología para resolver problemas de software de manera unificada y simplificada.
1.1.2. Objetos: Entidades que combinan datos (atributos) y comportamientos (métodos).
1.2. Objetivo: Simplificar el desarrollo de sistemas complejos mediante un modelado análogo a la realidad.
1.3. Enfoque: Centrado en la abstracción, encapsulación, herencia y polimorfismo.
1.4. Su utilidad depende del tipo de sistema a desarrollar.
2. Ventajas del Paradigma POO
2.1. Reutilización de Código
2.1.1. Las clases permiten definir comportamientos comunes que pueden ser reutilizados en diferentes contextos.
2.2. Modelado Análogo a la Realidad
2.2.1. Facilita la representación de sistemas complejos de manera intuitiva.
2.3. Mantenimiento Facilitado
2.3.1. El código está mejor organizado y encapsulado, lo que reduce errores y facilita su modificación.
2.4. Escalabilidad
2.4.1. Ideal para el desarrollo de sistemas grandes y complejos, permitiendo el trabajo en equipo.
2.5. Abstracción
2.5.1. Permite ocultar detalles internos y exponer solo lo necesario mediante interfaces.
3. Elementos Básicos del Paradigma POO
3.1. Objetos
3.1.1. Entidades virtuales con estado (atributos) y comportamiento (métodos)
3.1.2. Ejemplo: El objeto CuentaBancaria tiene atributos como saldo y métodos como retirar().
3.2. Clases
3.2.1. Plantillas o moldes para crear objetos.
3.2.2. Definen atributos y métodos comunes a un conjunto de objetos.
3.2.3. Ejemplo: La clase Reloj define atributos (hora, minuto, segundo) y métodos (set(), incrementar())
4. Propiedades de Objetos y Clases
4.1. Atributos: Datos que representan el estado de un objeto (ejemplo: saldo, color, encendido/apagado)
4.2. Métodos: Funciones que definen el comportamiento de un objeto (ejemplo: obtenerSaldo(), calcularPromedio())
5. VS
5.1. Programación Estructurada
5.1.1. Adecuada para problemas algorítmicos y de flujo de control.
5.2. POO
5.2.1. Adecuada para sistemas complejos que requieren modelado de objetos y organización
6. Ejemplos de Objetos y Clases
6.1. Objeto: Lámpara:
6.1.1. Atributos: intensidad, estado (encendido/apagado). Métodos: encender(), apagar(), estaPrendida().
6.2. Objeto: Contador:
6.2.1. Atributos: valorActual. Métodos: incrementar(), setValor(), getValor().
6.3. Clase: Reloj:
6.3.1. Atributos: hora, minuto, segundo. Métodos: set(), incrementar(), getHora().
6.4. Clase: TarjetaDeCredito:
6.4.1. Atributos: limiteCredito, saldoDeudor. Métodos: efectuarCargo(), calcularIntereses(), generarEstadoDeCuenta().