Café y Código

9. La Magia de los Objetos (POO Básica)

El Molde y las Galletas (Clase vs Objeto)

Hasta este momento veníamos escribiendo todas nuestras instrucciones como guiones largos. Con la Programación Orientada a Objetos (POO) subimos a la élite, estructurando el código mentalmente en entidades de la vida real (Coches, Usuarios, Conexiones...).

  • La Clase: Solo es la plantilla base de cómo fabricar un tipo de cosa (qué propiedades tiene, qué métodos ejecuta).
  • El Objeto (Instancia): La materialización exacta de la Clase en la memoria de la PC de tu cliente, construida con la palabra reservada new.
Creación de Instancias Básica
JAVA
1 public class Mascota {
2 // 1. Atributos (lo que tiene)
3 public String nombre;
4 public int edad;
5
6 // 2. Comportamiento (lo que hace)
7 public void ladrar() {
8 System.out.println(this.nombre + " dice: ¡Guao!");
9 }
10 }
11
12 public class Main {
13 public static void main(String[] args) {
14 // Al crearla en 'new', "perro" se convierte en una instancia viva.
15 Mascota perro = new Mascota();
16 perro.nombre = "Firulais";
17 perro.edad = 4;
18
19 perro.ladrar(); // "Firulais dice: ¡Guao!"
20 }
21 }

👨‍💻 Ejercicio Práctico 1

Misión: Constructores en Acción

No es buena práctica dejar atributos vacíos. Añade a tu clase Mascota un Constructor (un bloque parecido a un método que se nombra igual que la Clase), recibe datos (String nom, int e) y pásalos usando this.propiedad = nom; adentro.

👁️ Ver solución propuesta
JAVA
1 class Mascota {
2 public String nombre;
3 public int edad;
4
5 // Nuestro Contrato inicial (Constructor)
6 public Mascota(String nom, int e) {
7 this.nombre = nom;
8 this.edad = e;
9 }
10 }
11
12 // Ahora nos exigirá los datos en la misma línea del new:
13 Mascota perro = new Mascota("Rex", 2);

👨‍💻 Ejercicio Práctico 2

Misión: Encapsulamiento Absoluto

Declara una clase Libro. Marca su atributo titulo como private y crea un método público getTitulo() para que solo los que lo manden llamar por ahí puedan obtenerlo, bloqueando al resto del sistema de alterarlo localmente.

👁️ Ver solución propuesta
JAVA
1 class Libro {
2 private String titulo;
3
4 public Libro(String miTitulo) {
5 this.titulo = miTitulo;
6 }
7
8 public String getTitulo() {
9 return this.titulo;
10 }
11 }
12
13 // Main...
14 Libro x = new Libro("Un Mundo Fatal");
15 System.out.println( x.getTitulo() );

👨‍💻 Ejercicio Práctico 3

Misión: La Bóveda del Banco

Crea la clase CuentaBancaria. Su atributo saldo como privado. Y un método público depositar(int cantidad) que intercepte y le sume al propio 'this.saldo'.

👁️ Ver solución propuesta
JAVA
1 class CuentaBancaria {
2 private int saldo = 0;
3
4 public void depositar(int cantidad) {
5 this.saldo += cantidad;
6 System.out.println("Saldo actualizado.");
7 }
8 }

👨‍💻 Ejercicio Práctico 4

Misión: Gemelos independientes

Genera dos objetos (a y b) desde el main de una pequeña clase ColorBox con public String hex;. Demuestra que inyectarle datos al objeto A jamás tocará al B simultáneamente.

👁️ Ver solución propuesta
JAVA
1 class ColorBox { public String hex; }
2
3 // En Main
4 ColorBox a = new ColorBox();
5 a.hex = "#FFF";
6
7 ColorBox b = new ColorBox();
8 b.hex = "#000";
9
10 // A y B tienen asignaciones físicas separadas en RAM

Ponte a prueba

Entendamos para qué sirven los Gets y los Sets que conforman un auténtico proyecto moderno de Java.

Dato curioso: JDK 1.0 en 1996; James Gosling y Sun Microsystems. Wikipedia

Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.