SLIDE 1 / 4

1. El Plano y las Edificaciones: Clase vs Objetos

Una Clase es únicamente la plantilla o molde conceptual escrito en el código fuente. Los Objetos son las instancias reales que cobran vida en el Heap durante la ejecución. Un solo molde puede dar origen a miles de casas independientes.

Plano: CuentaBancaria String numero String titular double saldo depositar(monto) retirar(monto) c1 (@0x1001) Lucía $5.000 c2 (@0x1002) Marcos $120 c3 (@0x1003) Elena $94.000
Aislamiento de Estado c2.depositar($500);
Cuenta c1 (Lucía): $5.000 (Sin cambios)
Cuenta c2 (Marcos): $120
Cuenta c3 (Elena): $94.000 (Sin cambios)

Cada instancia encapsula su propio estado. Modificar c2 no altera ni en un solo centavo las celdas de memoria de c1 o c3.

2. El Ciclo en 4 Tiempos del Operador new

La sentencia Persona p = new Persona("Ana", 28); no es un paso mágico indivisible. Ocurre en 4 tiempos estrictos de arquitectura: Reserva, Puesta a cero, Constructor y Asignación de puntero.

Stack (main) Persona p null Heap @0x5A10: Persona nombre: null edad: 0 Memoria no reservada
FASE 1 / 4: RESERVA
Fase Activa: 1. Reserva de Memoria
Variable local p: null (sin apuntar)
Estado en Heap: Bloque reservado en 0x5A10

El operador new solicita a la JVM espacio contiguo suficiente para almacenar los campos de Persona en el Heap.

3. El Puntero this y el Sombreamiento de Variables

Si el parámetro de un método o constructor se llama igual que un atributo ("nombre = nombre"), el parámetro oculta (sombrea) al atributo. La palabra clave this es la referencia explícita al objeto receptor actual.

setNombre(String nombre) param nombre = "Pedro" nombre = nombre; ¡Se asigna a sí mismo! Objeto @0x5A10 (this) this.nombre "Sin Nombre"
Selector de Sintaxis
Sentencia ejecutada: nombre = nombre
Atributo this.nombre: "Sin Nombre" (Intacto)

Sin this, la variable local sombrea al atributo. El parámetro se copia sobre sí mismo y el atributo del objeto jamás se actualiza.

4. Referencias vs Copias: El peligro del Aliasing

En Java, las variables de tipo objeto NO guardan el objeto: guardan la dirección de memoria. Asignar Persona b = a; no clona a la persona: crea un segundo control remoto hacia la mismísima dirección en el Heap.

Stack p1 = 0x5A10 p2 = 0x5A10 Objeto Único en Heap @0x5A10 nombre: "Juan"
Simulador de Mutación por Aliasing
p1.getNombre(): "Juan"
p2.getNombre(): "Juan"
Objetos en Heap: 1 (¡No se duplicó!)

Al modificar el objeto a través del control remoto p2, la lectura desde p1 refleja el cambio inmediatamente porque apuntan al mismo bloque de memoria.