Publicado en Tema 4 • Clases y Objetos

Resumen del Tema 4: Clases y Objetos

En esta unidad nos adentramos en la programación Orientada a Objetos (POO), un paradigma qué trata de modelar el mundo real mediante código, agrupando datos y comportamiento en entidades llamadas objetos.

1. Conceptos básicos: Clase vs Objeto

La diferencia fundamental qué debemos entender es:

  • Clase (Class): Es la plantilla, el molde o el plano. Define qué propiedades y comportamientos tendrán los objetos. Por ejemplo, la clase Vaca.
  • Objeto (Object): Es la instancia concreta creada a partir de esa clase. Es la entidad "viva" en la memoria del programa. Por ejemplo, una vaca específica llamada "Lola" con manchas negras.
La clase es el tipo de dato abstracto, y el objeto es la variable qué almacena un valor de ese tipo.

2. Definición de una Clase

Una clase se compone de dos tipos de miembros principales:

  • Atributos (Datos): Variables qué almacenan el estado del objeto. Suelen ser sustantivos (ej: nombre, edad).
  • métodos (Comportamiento): Funciones qué definen lo qué el objeto puede hacer. Suelen contener verbos (ej: saludar(), comer()).

Sintaxis básica

[visibilidad] class NombreClase {
    // Atributos
    tipo nombreAtributo;

    // Constructores
    NombreClase() { ... }

    // métodos
    tipoDevuelto nombreMetodo() { ... }
}

Atributos

Se declaran al principio de la clase. Es recomendable usar la convención lowerCamelCase. Pueden tener modificadores como:

  • static: Atributos de clase, compartidos por todos los objetos.
  • final: Constantes, su valor no puede cambiar una vez asignado.
  • private: Visibilidad recomendada para encapsular los datos.

métodos

Implementan la lógica. Pueden acceder a los atributos de la clase directamente.

3. creación y Uso de Objetos

Para crear un objeto (instanciar) utilizamos el operador new.

// Declaración de la referencia
Persona p; 

// Instanciación (reserva de memoria e inicialización)
p = new Persona(); 

// Acceso a miembros con el operador punto (.)
p.nombre = "Pepa";
p.edad = 18;

Referencias y null

Las variables de tipo objeto son referencias a una dirección de memoria. Si no apuntan a ningún objeto, su valor es null. Intentar acceder a un miembro de una variable null provoca una excepción NullPointerException.

Si asignamos un objeto a otra variable (p2 = p1), ambas variables apuntarán al mismo objeto en memoria.

4. Constructores

Son métodos especiales qué se ejecutan automáticamente al crear un objeto con new. Su objetivo es inicializar los atributos.

  • Tienen el mismo nombre qué la clase.
  • No tienen tipo de retorno (ni siqué void).
  • Si no definimos ninguno, Java crea un constructor por defecto (sin parámetros) invisible.
  • Si definimos alguno con parámetros, el constructor por defecto desaparece (a menos qué lo escribamos explícitamente).
public class Persona {
    String nombre;

    // Constructor con parámetros
    public Persona(String nombre) {
        this.nombre = nombre;
    }
}

// Uso
Persona p = new Persona("Claudia");

La palabra clave 'this'

this hace referencia al objeto actual. Se usa para:

  1. Diferenciar atributos de variables locales (parámetros) cuando tienen el mismo nombre (ej: this.nombre = nombre).
  2. Llamar a otro constructor de la misma clase usando this(...). Nota: Esta llamada debe ser la primera línea del constructor.

5. Enumerados (Enums)

Son tipos de datos especiales qué restringen una variable a tener uno de los valores de una lista predefinida.

enum DiaDeLaSemana {
    LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO
}

// Uso
DiaDeLaSemana hoy = DiaDeLaSemana.MIERCOLES;