Estructuras de datos · Sección 1

Java, TAD y contratos

El modelo de Java necesario para distinguir interfaz, implementación y representación; referencias, genéricos, composición e invariantes de un tipo abstracto de datos.

3
lecciones
3
ejercicios resueltos
CONTENIDO ORIGINAL

Avanza en orden. Cada lección está redactada para Palta es Cool, utiliza ejemplos propios y termina con una actividad cuya respuesta puedes desplegar.

ANTES DE EMPEZAR

Ubícate antes de avanzar

01 / PUNTO DE PARTIDA

Conviene conocer variables, métodos, clases, condicionales y ciclos. La lección repasa las referencias de Java que utilizarás en toda la ruta.

02 / META OBSERVABLE

Al terminar deberías poder relacionar Java y referencias con TAD, interfaz e invariante y resolver un caso nuevo.

03 / TIEMPO SUGERIDO

Reserva entre 35 y 55 minutos para lectura, ejemplos, tres comprobaciones y cierre.

04 / PREPARA EL LABORATORIO

Instala un JDK actual y utiliza un editor o IDE con soporte para Java. Trabaja en un proyecto de laboratorio separado.

Abrir la guía de herramientas →
Diagnóstico rápido: ¿cómo se relacionan Java y referencias y TAD, interfaz e invariante? +

No necesitas acertar todavía. Escribe una hipótesis de dos líneas y compárala con tu respuesta al finalizar; si puedes corregirla y justificar el cambio, hubo aprendizaje.

Ruta guiada · 3 lecciones

Aprende el tema paso a paso

Construirás el vocabulario común de la ruta: qué promete una estructura, qué detalles puede ocultar y qué condiciones deben conservar sus operaciones.

Al terminar podrás
  • Una variable de referencia no contiene el objeto
  • Un TAD define comportamiento, no almacenamiento
  • Genéricos, composición e iteración separan responsabilidades
01
Modelo de Java

Una variable de referencia no contiene el objeto

En Java, una variable de un tipo de clase conserva una referencia. Dos variables pueden señalar el mismo objeto, y cambiarlo mediante una puede verse desde la otra. Los tipos primitivos, en cambio, guardan directamente su valor. Esta diferencia explica muchos efectos al conectar nodos.

01

new crea un objeto y entrega una referencia.

02

null significa que no existe un objeto asociado.

03

Asignar una referencia no realiza una copia profunda.

Comprueba lo aprendido · 01

¿Qué crea Nodo b = a: otro nodo o una segunda referencia?

Mostrar respuesta +

Crea una segunda referencia al mismo objeto. Para obtener otro nodo debes construirlo y decidir qué información copiar.

02
Abstracción

Un TAD define comportamiento, no almacenamiento

Un tipo abstracto de datos especifica valores válidos, operaciones y resultados observables. La interfaz puede prometer agregar, obtener y eliminar sin revelar si usa un arreglo o nodos. Un invariante expresa lo que debe seguir siendo cierto después de cada operación.

01

Contrato: qué recibe, produce y puede fallar.

02

Representación: cómo se guarda internamente.

03

Invariante: condición que toda instancia válida conserva.

Comprueba lo aprendido · 02

¿Cambiar de arreglo a lista enlazada obliga a cambiar a quienes usan el TAD?

Mostrar respuesta +

No, siempre que el contrato observable permanezca igual. Esa independencia es una de las razones para ocultar la representación.

03
Reutilización segura

Genéricos, composición e iteración separan responsabilidades

Un parámetro T permite reutilizar una estructura conservando seguridad de tipos. La composición es apropiada cuando una estructura usa otra sin ofrecer todas sus operaciones. Implementar Iterable permite recorrer sin exponer nodos o el arreglo interno; el iterador debe detenerse en los elementos reales, no en toda la capacidad.

01

Coleccion<T> evita conversiones manuales.

02

Composición restringe una API más amplia.

03

Iterator recorre el contenido lógico y lanza una excepción al agotarse.

Comprueba lo aprendido · 03

¿Por qué heredar de una lista puede romper el contrato de una pila?

Mostrar respuesta +

Porque expondría operaciones como insertar o eliminar en cualquier posición, acciones que no respetan el acceso exclusivo por el tope.

Resumen de la sección

Tu recorrido en tres ideas

  1. Una variable de referencia no contiene el objeto
  2. Un TAD define comportamiento, no almacenamiento
  3. Genéricos, composición e iteración separan responsabilidades
CIERRE DE LA SECCIÓN

Comprueba que puedes usarlo

Antes de continuar, revisa estos tropiezos frecuentes y resuelve un caso sin copiar los ejemplos.

ERROR 01

Confundir una referencia compartida con una copia independiente.

ERROR 02

Exponer la representación interna y permitir operaciones que rompen el contrato.

DESAFÍO INTEGRADOR

Ahora hazlo sin guía

Diseña el contrato de una colección genérica con agregar, retirar, consultar tamaño y comprobar vacío; propón una representación con arreglo y otra con nodos sin cambiar el código cliente.

Mostrar pauta de corrección +
Una respuesta sólida:
  • Declara precondiciones, resultados y errores.
  • Escribe al menos dos invariantes.
  • Separa claramente interfaz, implementación y prueba.