6.9. Ejercicios y actividades - RFGProfesor/Programacion GitHub Wiki
Tiempo de desarrollo: 4 horas.
Última revisión: 06/2025.
6.9.1. Ejercicios String
Ejercicio 11
Desarrolla un programa que solicite al usuario dos frases e identifique cuál es la que más caracteres contiene.
Ejercicio 12
Desarrolla un programa que solicite al usuario una frase e indique cuántos espacios en blanco tiene.
Ejercicio 13
Desarrolla un programa que solicite al usuario una frase y la devuelva invertida.
Ejercicio 14
Desarrolla un programa que solicite al usuario una frase y una palabra e indique cuántas veces aparece la palabra en la frase.
Ejercicio 15
Desarrolla un programa que solicite al usuario una frase y la devuelva sin vocales (estén o no acentuadas).
Ejercicio 16
Desarrolla un programa que solicite al usuario dos palabras e indique si son anagramas una de la otra.
Ejercicio 17
Desarrolla un programa que solicite una frase al usuario e indique para cada letra que aparece en la frase, cuántas veces se repite.
6.9.2. Ejercicios Pilares de la POO y objetos
Ejercicio 18
Diseña la clase CuentaCorriente. Esta clase debe almacenar los datos:
- Nombre completo del titular (supón que está compuesto por tres palabras)
- DNI
- Saldo
Todos los atributos deberán disponer de sus métodos getter y setter.
Ejercicio 19
Sobrescribe el método toString para convertir un objeto de tipo CuentaCorriente es una cadena de caracteres con la siguiente estructura:
*****
Nombre:
Primer apellido:
Segundo apellido:
DNI:
*****
Ejercicio 20
Añade un nuevo constructor (sin perder el constructor por defecto) a la clase CuentaCorriente que, recibiendo los campos: nombre, primer apellido, segundo apellido, número dni, letra dni y saldo; informe los atributos de la clase.
¿Qué estás haciendo con los constructores: sobrescribir o sobrecargar?
6.9.3. Ejercicios Clase abstracta e interfaz
Ejercicio 21
Diseña un sistema de pagos usando una clase abstracta MetodoPago. Esta debe incluir:
- Un atributo monto (double).
- Un constructor para inicializar el monto.
- Un método abstracto procesarPago().
- Un método no abstracto validarMonto() que retorne true si el monto es mayor que 0.
Crea dos subclases concretas:
- PagoConTarjeta: requiere número de tarjeta y código de seguridad. procesarPago() debe validar que el número de tarjeta tenga 16 dígitos y el código 3.
- PagoConPaypal: requiere email y contraseña. procesarPago() debe validar que el email contenga un @.
Agrega lógica condicional que solo procese el pago si validarMonto() es true.
Ejercicio 22
Crea una interfaz DispositivoInteligente con:
- encender()
- apagar()
- mostrarEstado()
Luego crea una interfaz adicional Programable con:
- programarEncendido(hora: String)
- programarApagado(hora: String)
Implementa ambas en las siguientes clases:
- BombillaInteligente
- TermostatoInteligente
Cada clase debe tener un atributo estado y almacenar las horas programadas. mostrarEstado() debe imprimir si está encendido o apagado y a qué hora está programado el siguiente cambio.
Implementa un método ejecutarProgramacion(horaActual: String) que compare la hora actual con las programadas y cambie el estado del dispositivo.
6.9.4. Actividades
Actividad 1
Una pequeña estación de alquiler de bicicletas desea una aplicación sencilla para registrar sus ingresos y gastos diarios. La aplicación debe ayudar al encargado a gestionar las finanzas de cada día, sin necesidad de almacenar múltiples registros, solo el balance diario acumulado.
El sistema debe permitir tres acciones principales: registrar alquiler, registrar mantenimiento y mostrar balance. Cada día, el balance comienza en cero, y al finalizar la jornada, el encargado puede ver el balance total y cerrar la aplicación.
Funcionalidades detalladas
- Registrar alquiler
El programa solicitará el monto recibido por un nuevo alquiler y lo sumará al balance diario. Mostrará un mensaje confirmando que el alquiler fue registrado exitosamente.
- Registrar mantenimiento
El programa solicitará el costo de una reparación o mantenimiento y lo restará del balance.
Si el balance alcanza exactamente cero después de registrar el gasto, el sistema debe mostrar un mensaje indicando que el balance está en equilibrio.
Si el balance se vuelve negativo después de la operación, debe mostrar un mensaje indicando que la estación está en déficit.
- Mostrar balance
Esta opción debe mostrar el balance acumulado hasta el momento. Si el balance es cero, el sistema debe mostrar el mensaje “Balance en equilibrio”. Si el balance es negativo, el sistema debe mostrar el mensaje “Estamos en déficit”. En caso contrario, simplemente mostrará el monto positivo actual como balance.
- Salir
Esta opción permitirá al encargado cerrar la aplicación al finalizar el día, mostrando un mensaje de despedida.
Actividad 2
Te han contratado para desarrollar una pequeña aplicación de escritorio para un estudio de diseño gráfico que necesita una manera sencilla de gestionar sus tareas diarias. Cada tarea tiene un nombre, un tiempo estimado para su realización y un estado (pendiente, en progreso o completada). El sistema debe ser capaz de llevar un registro del tiempo invertido en cada tarea de manera secuencial.
El sistema debe permitir al usuario realizar las siguientes acciones para una tarea a la vez:
- Agregar una nueva tarea
El usuario debe poder ingresar el nombre de la tarea (una cadena de texto).
El sistema debe permitir al usuario ingresar el tiempo estimado para la tarea en horas (un número entero positivo).
El estado inicial de la tarea debe ser "pendiente".
- Iniciar el trabajo en una tarea
Una vez que se haya ingresado una tarea, el sistema debe permitir al usuario marcarla como "en progreso" y empezar a contabilizar el tiempo invertido en ella.
- Añadir tiempo
Cada vez que el usuario trabaje en la tarea, ingresará el tiempo que haya dedicado a esta.
- Finalizar una tarea
El sistema debe permitir al usuario marcar la tarea como "completada".
Si el tiempo total dedicado es superior al estimado, avisará de ello.
- Cancelar una tarea
El sistema debe permitir al usuario cancelar la tarea en cualquier momento. Al cancelarla, la tarea debe quedar en un estado "cancelada" y su tiempo el acumulado hasta ese instante.
- Ver el estado de la tarea
El sistema debe permitir al usuario ver el estado actual de la tarea (pendiente, en progreso, completada, o cancelada) y el tiempo trabajado hasta el momento.
- Salir de la aplicación
Al finalizar el trabajo, el usuario debe poder salir del sistema y despedirse. Durante todo el proceso en que esté activa una tarea, el usuario podrá ir añadiendo tiempos dedicados a esta que serán almacenados en una variable global total de tiempo trabajado