Introducción a los conceptos de POO
¿Qué es POO? Principios básicos: Clases, Objetos, Atributos y Métodos.
Clase
Es una entidad abstracta. Una clase es un modelo con el que se construyen los objetos.
Es una plantilla, que describe las caracteristicas y el comportamiento de un conjunto de objetos similares.
Conjuntos de objetos con estado y comportamientos similares.
Objeto (Instancia)
Son representaciones de cosas. Un objeto es una entidad concreta. Un objeto es una instancia de una clase.
Atributos
Modelar las caracteristicas de un objeto por medio de sus atributos.
Estado
Métodos
Crear y usar clases y objetos en Java.
Ejemplo práctico: Crear una clase Persona con atributos (nombre, edad) y métodos.
Encapsulamiento y Métodos
Objetivo: Aprender sobre encapsulamiento y cómo proteger los datos de una clase.
Concepto de Encapsulamiento
Encapsular consiste en ocultar los detalles de implementación y proporcionar una interfaz más simple.
Esta estrategia es una herramienta universal para reducir la complejidad. Tu coche por ejemplo, te abstrae los detalles mecánicos bajo su capó, y ofrece una interfaz más simple en forma de pedales y volante.
Modificadores de acceso
private, public, protected.
Métodos getters y setters
Son utilizados para acceder y modificar los atributos (campos) privados de una clase. Estos métodos son parte de una buena práctica conocida como encapsulamiento, donde los datos de una clase se protegen del acceso directo desde fuera de la misma, permitiendo control sobre cómo se accede y se modifica su estado.
¿Qué es un Getter?
Un getter es un método que devuelve (recupera) el valor de un atributo privado. Se utiliza para acceder a los valores de los campos de una clase de manera controlada.
Nomenclatura especial: get + NombreAtributo
// Método getter para el nombre
public String getNombre() {
return nombre;
}
¿Qué es un Setter?
Un setter es un método que asigna (o establece) un valor a un atributo privado. Se utiliza para modificar el valor de un campo de manera controlada.
Nomenclatura especial: set + NombreAtributo
// Método setter para el nombre
public void setNombre(String nombre) {
this.nombre = nombre;
}
Ejercicio: Implementar una clase CuentaBancaria con encapsulamiento.
Herencia
✅ Objetivo: Entender el concepto de herencia y cómo se utiliza en Java.
Concepto de Herencia:
Herencia es una caracteristica que permite a las clases definirse a partir de otras, y asi reutilizar su funcionalidad.
En Java, sólo se permite la herencia simple, o dicho de otra manera, la jerarquía de clases tiene estructura de árbol.
FINAL
Si lo aplicamos a una clase, no se permite que existan subclases.
Si lo aplicamos a un método, no se permite que subclases redefinan el método.
herencia de la interfaz
herencia de la implementación
Sintaxis de herencia en Java: extends.
Clases superclase y subclase
La herencia relaciona las clases de manera jerárquica; una clase padre, superclase o clase base sobre otras clases hijas, subclases o clase derivada. Los descendientes de una clase heredan todos los atributos y métodos que sus ascendientes hayan especificado como heredables, además de crear los suyos propios.
Ejemplo: Crear una clase Animal y derivar subclases como Perro y Gato.
Polimorfismo
✅ Objetivo: Comprender el polimorfismo en POO.
Polimorfismo: Diferentes formas de ejecutar el mismo método.
Métodos sobreescritos (@Override).
Uso de referencias de tipo de superclase para objetos de subclase.
Constructores
✅ Objetivo: Aprender sobre constructores y su uso.
¿Qué es un constructor?
Un constructor es un método que se utiliza para construir o iniciar un objeto cuando se crea. (se encarga de dar un estado inicial a los objetos).
Tiene el mismo nombre que su clase y es sintácticamente similar a un método.
Sin embargo, los constructores no tienen un tipo de devolución explícito.
Normalmente, usará un constructor para dar valores iniciales (dar un estado inicial) a las variables de instancia definidas por la clase, o para realizar cualquier otro procedimiento de inicio requerido para crear un objeto completamente formado.
Son llamados posteriormente cuando se utiliza la palabra reservada new
Constructor por defecto y constructor con parámetros.
Uso de la palabra clave this.
Ejercicio: Crear clases con diferentes tipos de constructores.
Destructores: se utilizan para destruir la instancia de una clase y liberar memoria.
En Java no hay destructores, ya que la liberación de memoria es llevada a cabo por el Garbage Collector de forma automática.
Método Dispose
Declarar una clase
Una clase se compone de (2)
Atributos (caracteristicas)
Métodos (accioens o funciones que cumplen los objetos)
Asociaciones
relación entre las clases.
Modelo conceptual
Sobrecarga (Overloading)
Super
Se llama «Superclase» a aquella clase de la cual desciende una clase
Clases abstractas
aquellas que tienen al menos un método abstracto (sin implementar, sin código
Subclase
Una clase cualquiera tiene típicamente dos tipos de «clientes»
Instancias
Subclases
Métodos
Comportamiento de un objeto por medio de sus métodos.
Define una operación sobre un objeto
En general realizan (dos) posibles acciones
Consultar el estado del objeto
Modificar
Mensajes
los objetos interaccionan entre sí enviandose mensajes
Instanciar una clase
Es el proceso de crear un objeto (ejemplarizar).
miembros publicos
miembros privados
Bases de la programación
Abstracción
Encapsulamiento
Modularidad
jerarquización
Elementos fundamentales (4) en el modelo de objetos
Abstracción
Encapsulamiento
Polimorfismos
herencia (extends)
Abstracción
Abstracción funcional
Abstracción de datos
Interfaz / vista pública
vista privada
Polimorfismo
Es la capacidad de que un mismo mensaje funcione con diferentes objetos.
herencia de la interfaz
herencia de la implementación
Reescritura
shadowing
Overriding
Casting (conversión)
tipos (2)
Widening o upcasting
Narrowing o downcasting (compatibilidad hacia abajo)
Elementos secundarios del modelo de objetos (3)
Tipos (tipifiación)
Concurrencia
Persistencia
Tipos
Concurrencia
Abstracción de procesos
Sincronización