Programación Orientada a Objetos (POO) usando Java

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

Deja un comentario