Saltar al contenido principal

Resumen Java (Unidad 4)

Programación Orientada a Objetos (POO)

  • Clases: modelo que define las características y comportamientos comunes de un tipo de objeto.
  • Objetos: instancia de una clase que representa una entidad concreta combinando datos y el comportamiento asociado a ellos.
  • Encapsulación: principio que agrupa datos y métodos dentro de una clase, ocultando los detalles internos y exponiendo solo lo necesario mediante una interfaz pública.
  • Herencia: mecanismo por el que una clase (subclase) puede extender otra (superclase), heredando sus atributos y métodos y pudiendo añadir o sobreescribir comportamiento.
  • Polimorfismo: capacidad de que un mismo método o referencia se comporte de formas distintas según el tipo real del objeto sobre el que actúa.
  • Mensajes: forma en que los objetos se comunican entre sí. Enviar un mensaje equivale a invocar un método sobre un objeto.

Clases

Elementos de una clase

  • Atributos: variables que pertenecen a una clase y almacenan el estado de cada objeto.
    • Atributos estáticos: atributos que pertenecen a la clase en sí, no a cada instancia. su valor es compartido por todos los objetos de esa clase (static en Java).
  • Métodos: funciones definidas dentro de una clase que describen el comportamiento de sus objetos.
    • Getters y setters: métodos de acceso (getX()) y modificación (setX()) de atributos privados, que permiten controlar cómo se leen y escriben los datos.
    • Sobrecarga de métodos (overloading): definición de varios métodos con el mismo nombre pero distinta lista de parámetros (tipo o número), dentro de la misma clase.
    • Métodos estáticos: métodos que pertenecen a la clase y no a las instancias. Se pueden invocar sin crear un objeto (NombreClase.metodo()).
  • Constructores: métodos especiales que se ejecutan al crear un objeto. Inicializan sus atributos y tienen el mismo nombre que la clase. Una clase puede tener varios constructores sobrecargados.

Elementos relacionados con una clase

  • Creación de objetos: proceso de instanciar una clase mediante el operador new, que reserva memoria y llama al constructor (Persona p = new Persona()).
  • Ámbito de las variables: región del código en la que una variable es accesible. Puede ser local (dentro de un método), de instancia (en toda la clase) o de clase (estática).
  • Encapsulamiento — modificadores de acceso: palabras clave (private, protected, public, package-private) que controlan desde dónde se puede acceder a atributos y métodos.
  • Constantes: valores fijos que no cambian durante la ejecución, declarados con static final en Java (p. ej. static final double PI = 3.14159).
  • Paquetes: mecanismo de organización que agrupa clases relacionadas bajo un espacio de nombres común, evitando conflictos y facilitando la modularidad (package com.empresa.proyecto).

Otros elementos

  • Enumerados (Enums): tipo especial de clase que define un conjunto fijo de constantes con nombre (p. ej. LUNES, MARTES, …). Pueden tener atributos y métodos propios.
  • Método main: punto de entrada de una aplicación Java: public static void main(String[] args). Es estático porque la JVM lo invoca sin necesidad de crear ningún objeto.
  • Documentación (Javadoc): comentarios especiales (/** ... */) que preceden a clases y métodos y que la herramienta javadoc convierte en HTML. Se complementa con etiquetas como @param, @return o @throws.

API de Java

  • Wrappers: clases que envuelven los tipos primitivos (intInteger, doubleDouble, etc.) para poder usarlos como objetos, acceder a métodos de conversión y trabajar con colecciones genéricas.
  • String: clase inmutable que representa cadenas de texto. Ofrece métodos como length(), substring(), contains(), toUpperCase(), etc. Al ser inmutable, cada modificación genera un nuevo objeto.
  • StringBuilder: clase mutable para construir y manipular cadenas de forma eficiente, evitando la creación de objetos intermedios. Indicada cuando se realizan muchas concatenaciones.
  • Math: clase utilitaria con métodos matemáticos estáticos: Math.abs(), Math.pow(), Math.sqrt(), Math.random(), Math.max(), etc.

Gestión del tiempo (java.time)

  • Fechas:
    • LocalDate representa una fecha (año, mes, día) sin hora.
  • Horas:
    • LocalTime representa una hora del día (hora, minuto, segundo, nanosegundo) sin fecha.
  • Fechas y horas:
    • LocalDateTime combinan fecha y hora.
  • Intervalos de tiempo:
    • Period mide intervalos en días, meses y años entre dos fechas.
    • Duration mide intervalos basados en horas/minutos/segundos.
  • Formato de fechas y horas:
    • DateTimeFormatter permite convertir objetos LocalDate/LocalDateTime a String y viceversa usando patrones personalizados ("dd/MM/yyyy").

Estructuras de datos

  • ArrayList: implementación de lista dinámica basada en un array redimensionable. Permite acceso por índice en O(1) y es la estructura de lista más habitual cuando el tamaño varía en tiempo de ejecución (List<String> lista = new ArrayList<>()).
  • HashMap: estructura que almacena pares clave-valor con acceso en O(1) promedio mediante una función hash. Las claves son únicas; los valores pueden repetirse (Map<String, Integer> mapa = new HashMap<>()).