Resumen de POO

Clases y Objetos

Clases: Plantillas o modelos que definen atributos (propiedades) y métodos (comportamientos).

Pilares de la POO

Abstracción: Ocultar la complejidad y mostrar solo lo esencial.

Herencia: Permitir que una clase derive de otra para reutilizar código.

Encapsulamiento: Proteger los datos mediante el control del acceso a ellos.

Polimorfismo: Permitir que un objeto tome múltiples formas según el contexto.

Objetos: Instancias de clases, con atributos y comportamientos específicos.

Modificadores de Acceso

Público (public): Accesible desde cualquier parte del código.

Privado (private): Accesible solo dentro de la clase.

Protegido (protected): Accesible dentro de la clase y sus subclases.

Atributos: Variables que contienen datos del objeto.
Métodos: Funciones que definen comportamientos del objeto.

Relaciones Entre Clases

Asociación: Relación entre objetos sin dependencia jerárquica.

Agregación: Una forma más débil de relación, donde el objeto agregado puede existir independientemente.

Composición: Relación fuerte, donde los objetos componentes dependen de la existencia del objeto contenedor.

Principios SOLID

L: Sustitución de Liskov (Liskov Substitution Principle): Los objetos de una clase derivada deben poder reemplazar a los de su clase base sin alterar el comportamiento del programa.

I: Segregación de interfaces (Interface Segregation Principle): Las interfaces deben ser específicas para cada cliente, evitando la implementación de métodos no utilizados.

O: Abierto/Cerrado (Open/Closed Principle): Las clases deben estar abiertas para extensión, pero cerradas para modificación.

D: Inversión de dependencias (Dependency Inversion Principle): Las dependencias deben ser de abstracciones, no de concretos.

S: Responsabilidad única (Single Responsibility Principle): Una clase debe tener una única razón para cambiar.

Excepciones

Mecanismo para manejar errores y situaciones excepcionales que ocurren durante la ejecución del programa.

Las excepciones se pueden capturar usando bloques try, catch, y finally, lo que permite al programa continuar su ejecución o terminar de manera controlada.

Tipos: Excepciones predefinidas (como NullPointerException, ArrayIndexOutOfBoundsException) y excepciones personalizadas definidas por el usuario.

Colecciones

Estructuras de datos que permiten almacenar, gestionar y manipular grupos de objetos.

Conjuntos (Sets): No mantienen un orden específico y no permiten duplicados.

Mapas (Maps): Asocian claves con valores, facilitando el acceso a los datos mediante la clave.

Listas: Mantienen los elementos en orden y permiten duplicados.

Pruebas (Tests)

Permiten asegurar que el código funciona correctamente y cumple con los requisitos esperados.

Herramientas: Frameworks como JUnit (Java) y NUnit (.NET) se utilizan para automatizar y ejecutar pruebas.

Pruebas Unitarias: Evalúan el comportamiento de funciones o métodos individuales.

Pruebas de Integración: Aseguran que diferentes componentes del sistema interactúan de manera correcta.

Pruebas de Sistema: Evalúan el funcionamiento del sistema completo.

Archivos

Los archivos permiten almacenar y recuperar datos de forma permanente en el sistema de archivos

Escritura: Guardar datos en un archivo.

Apertura y Cierre: Iniciar y finalizar el acceso a un archivo.

Lectura: Extraer información almacenada en un archivo.