Café y Código

POO Básico

Desafíos de POO — Básico

10 clases únicas sin herencia para dominar atributos, métodos y creación de objetos. Cada ejercicio trae su diagrama de clase interactivo (una sola caja). Ideal como primer paso antes de herencia e interfaces.

Ruta canónica: /challenges/poo · También disponible: /challenges/inheritance (herencia) y /challenges/interface (interfaces).

Modal con tarjetas — misma presentación que los ejercicios.

10 clases · clic para expandir diagrama y checklist

1. Lámpara de Mesa

Lampara · 3 attrs · 3 métodos

Una lámpara con brillo regulable. Debe recordar si está encendida y en qué nivel está.

Qué hacer: Implementa la clase Lampara. Crea una lámpara, enciéndela, cambia el brillo a 2 y luego apágala. Valida que el nivel sea 1-3.

UMLClase Lampara
Lampara
-color: StringString colorcolorcolor
-esta_encendida: booleanboolean esta_encendidaesta_encendidaesta_encendida
-nivel_brillo: intint nivel_brillonivel_brillonivel_brillo
+encender()encender()encender()encender()
+apagar()apagar()apagar()apagar()
+cambiar_brillo(nuevo_nivel: int)cambiar_brillo(nuevo_nivel: int)cambiar_brillo(nuevo_nivel)cambiar_brillo(nuevo_nivel)
🔍 Clic para ampliar y hacer zoom

2. Taza de Café

Taza · 3 attrs · 3 métodos

Una taza con capacidad fija que se llena, se bebe y se vacía.

Qué hacer: Implementa Taza. Llena con "café", bebe 80 ml, intenta beber más de lo disponible y vacíala.

UMLClase Taza
Taza
-capacidad_ml: doubledouble capacidad_mlcapacidad_mlcapacidad_ml
-cantidad_actual_ml: doubledouble cantidad_actual_mlcantidad_actual_mlcantidad_actual_ml
-tipo_bebida: StringString tipo_bebidatipo_bebidatipo_bebida
+llenar(tipo: String)llenar(tipo: String)llenar(tipo)llenar(tipo)
+beber(ml_a_tomar: double)beber(ml_a_tomar: double)beber(ml_a_tomar)beber(ml_a_tomar)
+vaciar()vaciar()vaciar()vaciar()
🔍 Clic para ampliar y hacer zoom

3. Semáforo

Semaforo · 3 attrs · 2 métodos

Un semáforo de calle que solo admite Rojo, Amarillo o Verde y puede quedar fuera de servicio.

Qué hacer: Implementa Semaforo. Cambia a Verde, luego a Amarillo y simula una falla con apagar_por_falla().

UMLClase Semaforo
Semaforo
-color_luz: StringString color_luzcolor_luzcolor_luz
-ubicacion_calle: StringString ubicacion_calleubicacion_calleubicacion_calle
-esta_operativo: booleanboolean esta_operativoesta_operativoesta_operativo
+cambiar_luz(nuevo_color: String)cambiar_luz(nuevo_color: String)cambiar_luz(nuevo_color)cambiar_luz(nuevo_color)
+apagar_por_falla()apagar_por_falla()apagar_por_falla()apagar_por_falla()
🔍 Clic para ampliar y hacer zoom

4. Termómetro Digital

Termometro · 2 attrs · 3 métodos

Un termómetro que mide, convierte unidad y muestra la lectura.

Qué hacer: Implementa Termometro. Toma 36.6°C, muestra la lectura, cambia a Fahrenheit y vuelve a mostrar.

UMLClase Termometro
Termometro
-temperatura_actual: doubledouble temperatura_actualtemperatura_actualtemperatura_actual
-unidad: StringString unidadunidadunidad
+tomar_temperatura(valor: double)tomar_temperatura(valor: double)tomar_temperatura(valor)tomar_temperatura(valor)
+cambiar_unidad()cambiar_unidad()cambiar_unidad()cambiar_unidad()
+mostrar_lectura()mostrar_lectura()mostrar_lectura()mostrar_lectura()
🔍 Clic para ampliar y hacer zoom

5. Reloj Despertador

RelojDespertador · 3 attrs · 3 métodos

Un despertador que guarda la hora actual, la alarma y si suena.

Qué hacer: Implementa RelojDespertador. Configura alarma a las 07:00, actívala y llama a sonar_alarma().

UMLClase RelojDespertador
RelojDespertador
-hora_actual: StringString hora_actualhora_actualhora_actual
-hora_alarma: StringString hora_alarmahora_alarmahora_alarma
-alarma_activada: booleanboolean alarma_activadaalarma_activadaalarma_activada
+configurar_alarma(hora: String)configurar_alarma(hora: String)configurar_alarma(hora)configurar_alarma(hora)
+activar_alarma()activar_alarma()activar_alarma()activar_alarma()
+sonar_alarma()sonar_alarma()sonar_alarma()sonar_alarma()
🔍 Clic para ampliar y hacer zoom

6. Puerta de Acceso

Puerta · 3 attrs · 4 métodos

Una puerta que se abre/cierra y se bloquea con llave. No se puede abrir si está con llave.

Qué hacer: Implementa Puerta. Intenta abrir con llave puesta (debe fallar), quita la llave y abre.

UMLClase Puerta
Puerta
-material: StringString materialmaterialmaterial
-esta_abierta: booleanboolean esta_abiertaesta_abiertaesta_abierta
-esta_con_llave: booleanboolean esta_con_llaveesta_con_llaveesta_con_llave
+abrir()abrir()abrir()abrir()
+cerrar()cerrar()cerrar()cerrar()
+poner_llave()poner_llave()poner_llave()poner_llave()
+quitar_llave()quitar_llave()quitar_llave()quitar_llave()
🔍 Clic para ampliar y hacer zoom

7. Marcador de Puntos (Score)

MarcadorJuego · 3 attrs · 3 métodos

Marcador de dos jugadores con tiempo restante.

Qué hacer: Implementa MarcadorJuego. Suma 2 puntos a J1, 1 a J2, muestra el marcador y reinícialo.

UMLClase MarcadorJuego
MarcadorJuego
-puntos_jugador_1: intint puntos_jugador_1puntos_jugador_1puntos_jugador_1
-puntos_jugador_2: intint puntos_jugador_2puntos_jugador_2puntos_jugador_2
-tiempo_restante_segundos: intint tiempo_restante_segundostiempo_restante_segundostiempo_restante_segundos
+sumar_punto_j1()sumar_punto_j1()sumar_punto_j1()sumar_punto_j1()
+sumar_punto_j2()sumar_punto_j2()sumar_punto_j2()sumar_punto_j2()
+reiniciar_marcador()reiniciar_marcador()reiniciar_marcador()reiniciar_marcador()
🔍 Clic para ampliar y hacer zoom

8. Alcancía de Ahorro

Alcancia · 3 attrs · 3 métodos

Alcancía que guarda dinero hasta su capacidad y se rompe para retirarlo.

Qué hacer: Implementa Alcancia. Guarda $5000, intenta exceder la capacidad (debe rechazar) y rompe la alcancía.

UMLClase Alcancia
Alcancia
-dueno: StringString duenoduenodueno
-total_ahorrado: doubledouble total_ahorradototal_ahorradototal_ahorrado
-capacidad_maxima: doubledouble capacidad_maximacapacidad_maximacapacidad_maxima
+guardar_dinero(monto: double)guardar_dinero(monto: double)guardar_dinero(monto)guardar_dinero(monto)
+romper_alcancia()romper_alcancia()romper_alcancia()romper_alcancia()
+ver_total()ver_total()ver_total()ver_total()
🔍 Clic para ampliar y hacer zoom

9. Billetera Simple

Billetera · 2 attrs · 3 métodos

Billetera con saldo que se carga y se gasta. No permite gastar más de lo disponible.

Qué hacer: Implementa Billetera. Agrega $10000, gasta $3500, intenta gastar $10000 de nuevo (debe fallar) y consulta el saldo.

UMLClase Billetera
Billetera
-titular: StringString titulartitulartitular
-dinero_disponible: doubledouble dinero_disponibledinero_disponibledinero_disponible
+agregar_dinero(monto: double)agregar_dinero(monto: double)agregar_dinero(monto)agregar_dinero(monto)
+gastar_dinero(monto: double)gastar_dinero(monto: double)gastar_dinero(monto)gastar_dinero(monto)
+consultar_plata()consultar_plata()consultar_plata()consultar_plata()
🔍 Clic para ampliar y hacer zoom

10. Ventilador

Ventilador · 3 attrs · 4 métodos

Ventilador con 4 velocidades (0 apagado .. 3 máxima) que puede girar oscilando.

Qué hacer: Implementa Ventilador. Sube a velocidad 2, activa el giro, baja a 1 y apaga.

UMLClase Ventilador
Ventilador
-marca: StringString marcamarcamarca
-velocidad: intint velocidadvelocidadvelocidad
-esta_girando: booleanboolean esta_girandoesta_girandoesta_girando
+subir_velocidad()subir_velocidad()subir_velocidad()subir_velocidad()
+bajar_velocidad()bajar_velocidad()bajar_velocidad()bajar_velocidad()
+alternar_giro()alternar_giro()alternar_giro()alternar_giro()
+apagar()apagar()apagar()apagar()
🔍 Clic para ampliar y hacer zoom
Ko-fi
Donaciones
Apoyá cafeycodigo con un café en Ko-fi. Colaboradores: insignia, muro y zona exclusiva.