Cover photo

Actividad práctica Abstracción de Objetos

Objetivo: Que el estudiante pueda identificar objetos reales, extraer sus atributos y comportamientos, organizar esas ideas en clases y relaciones (UML) y llevarlas a una implementación básica en POO (ej. Java).

Materiales y recursos

  • Papel y lápiz (o pizarra/whiteboard) para bocetos.

  • Editor de código (VS Code, IntelliJ, NetBeans) o un IDE online.

  • JDK instalado si van a ejecutar Java (opcional si solo se diseña).

  • Plantilla de diagrama de clases (puede ser dibujada a mano).

Paso 1 — Observación y elección del dominio

Elige un contexto sencillo y familiar. Ejemplos: bicicleta, biblioteca escolar, cuenta bancaria, café (pedidos y mesas).Objetivo: limitar el alcance para que la abstracción sea manejable.

Tarea: Escribe en una línea el dominio elegido (p. ej. “Bicicleta urbana para préstamos”).

Paso 2 — Lista inicial de “cosas” (objetos candidatos) (5–10 min)

Anota todo lo que consideres relevante en ese dominio: personas, cosas, eventos. No pienses en código, piensa en objetos reales.

Ejemplo (Bicicleta): Bicicleta, Rueda, Freno, Usuario, Casco, Candado.

Paso 3 — Atributos y comportamientos por objeto (10–15 min)

Para cada objeto escogido, define:

  • Atributos (estado): datos que lo describen (ej. color, número de velocidades).

  • Métodos / comportamientos: acciones que realiza (ej. pedalear(), frenar()).

Ejemplo (Bicicleta):

  • Atributos: color:String, modelo:String, gearCount:int, velocidadActual:double.

  • Métodos: pedalear(int fuerza), frenar(), cambiarVelocidad(int nuevaVelocidad).

Tarea: Completa una tabla breve (Objeto | Atributos | Métodos).

Paso 4 — Agrupamiento en clases y relaciones (10 min)

Decide cuáles objetos serán clases y cuáles serán parte (composición/atributos) de otras clases.

Relaciones comunes:

  • Asociación (usa a): A ↔ B.

  • Composición (parte/enteramente dependiente): Bicicleta — contiene → Rueda.

  • Herencia (es-un): BicicletaDeMontaña extiende Bicicleta.

Tarea: Dibuja flechas y etiquetas entre tus objetos (p. ej. Bicicleta compuesta de Rueda).

Paso 5 — Definir visibilidades y tipos (5–10 min)

Decide qué atributos deben ser private, qué métodos public, qué datos suponen static, y qué tipos de datos utilizar.

Buenas prácticas:

  • Atributos: private + getters/setters.

  • Comportamientos públicos para la API de la clase.

  • Evita exponer estado interno directamente.

Paso 6 — Diagrama de clases (UML)

Dibuja las clases con tres secciones: nombre / atributos / métodos. Añade relaciones (líneas) y multiplicidad si aplica.

Ejemplo simplificado (texto):

+------------------+
| Bicicleta        |
+------------------+
| - color: String  |
| - gearCount:int  |
| - ruedas: Rueda[]|
+------------------+
| + pedalear()     |
| + frenar()       |
+------------------+

+------------------+
| Rueda            |
+------------------+
| - diametro:int   |
| - tipo:String    |
+------------------+
| + inflar()       |
+------------------+