PROG U4. Practica002 Guia45
Guía de ayuda para realizar los apartados 5 al 13 del ejercicio 4.5 - Tiempo¶
5. Método incrementar(t:Tiempo):Boolean
¶
-
Propósito:
- Incrementar el tiempo del objeto actual con el tiempo que almacena
t
. - Si el resultado excede
23:59:59
, no modifica el tiempo y devuelvefalse
. - Si todo ok, devuelve
true
.
- Incrementar el tiempo del objeto actual con el tiempo que almacena
-
Pistas:
- Convertir el tiempo actual y
t
a segundos facilita la suma. - Validar si la suma excede los segundos equivalentes a
23:59:59
(86399 segundos). - Podéis crear la constante
MAX_SEGUNDOS
= 86399 en el companion object. - Si no excede, actualizar el tiempo usando una función que convierta los segundos totales de vuelta a horas, minutos y segundos.
- Convertir el tiempo actual y
-
Lógica:
- Crea un nuevo método
obtenerSegundos
para calcular y retornar los segundos totales del objeto actual. - El método
obtenerSegundos
también podrás utilizarlo para el objetot
que se pasa como argumento. - Si la suma no excede el límite, actualiza el tiempo del objeto actual.
- También podéis crear otro método,
actualizarTiempoConSegundos
para convertir los segundos en hora, min y seg y actualizar las propiedades del objeto.
- Crea un nuevo método
/** * Convierte las horas, minutos y segundos del objeto actual en un total de segundos y lo retorna. * * @return El tiempo total en segundos. */ private fun obtenerSegundos(): Int { //TODO: retornar el tiempo en segundos utilizando las propiedades hora, min y seg. }
/** * Actualiza los valores de hora, minuto y segundo del objeto actual * con base en un total de segundos. * * @param totalSegundos El tiempo total en segundos. */ private fun actualizarTiempoConSegundos(totalSegundos: Int) { //TODO: convertir segundos a hora, min y seg para actualizar las propiedades }
6. Método decrementar(t:Tiempo):Boolean
¶
-
Propósito:
- Decrementar el tiempo del objeto actual con el tiempo que almacena
t
. - Si el resultado es menor que
00:00:00
, no modifica el tiempo y devuelvefalse
.
- Decrementar el tiempo del objeto actual con el tiempo que almacena
-
Pistas:
- Similar al método
incrementar
, pero en lugar de sumar los segundos, los resta. - Validar si el resultado es negativo antes de actualizar el tiempo.
- Reutiliza la función auxiliar para actualizar el tiempo con los segundos restantes.
- Similar al método
-
Lógica:
- Calcula los segundos totales del objeto actual y de
t
. - Si la resta da un resultado negativo, devuelve
false
. - Si no es negativo, actualiza el tiempo.
- Calcula los segundos totales del objeto actual y de
7. Método comparar(t:Tiempo):Int
¶
-
Propósito:
- Comparar el tiempo del objeto actual con el tiempo de
t
, devolviendo:-1
si el tiempo actual es menor.0
si son iguales.1
si el tiempo actual es mayor.
- Comparar el tiempo del objeto actual con el tiempo de
-
Pistas:
- Usa los segundos totales para realizar la comparación.
- Reutiliza el método
obtenerSegundos
para obtener los valores en segundos. - Usa un bloque
when
oif
para devolver el resultado de la comparación.
-
Lógica:
- Obtén los segundos totales de ambos objetos.
- Compara los valores y devuelve el resultado.
8. Método copiar():Tiempo
¶
-
Propósito:
- Crear y devolver un nuevo objeto
Tiempo
con los mismos valores que el objeto actual.
- Crear y devolver un nuevo objeto
-
Pistas:
- Reutiliza el constructor de la clase para crear un nuevo objeto.
- Pasa las propiedades
hora
,min
yseg
del objeto actual al constructor.
-
Lógica:
- Retorna un nuevo objeto
Tiempo
inicializado con los valores actuales.
- Retorna un nuevo objeto
9. Método copiar(t:Tiempo):Tiempo
¶
-
Propósito:
- Copiar el tiempo del objeto
t
en el objeto actual.
- Copiar el tiempo del objeto
-
Pistas:
- Modifica directamente las propiedades
hora
,min
yseg
del objeto actual con los valores det
. - Este método devuelve el mismo objeto que recibe como argumento de entrada.
- Modifica directamente las propiedades
-
Lógica:
- Asigna los valores de
t.hora
,t.min
yt.seg
al objeto actual. - Retorna el objeto que se le ha pasado como único parámetro del método.
- Asigna los valores de
10. Método sumar(t:Tiempo):Tiempo?
¶
-
Propósito:
- Sumar el tiempo del objeto actual con el tiempo de
t
. - Devuelve un nuevo objeto
Tiempo
con el resultado, onull
si el resultado excede23:59:59
.
- Sumar el tiempo del objeto actual con el tiempo de
-
Pistas:
- Usa el método
incrementar
para evitar duplicar la lógica. - Crea una copia del objeto actual antes de intentar la suma.
- Si
incrementar
devuelvetrue
, retorna la copia actualizada. De lo contrario, retornanull
.
- Usa el método
-
Lógica:
- Usa
copiar
para crear una copia del objeto actual. - Aplica
incrementar
en la copia. - Retorna la copia si la operación es válida o
null
si no lo es.
- Usa
11. Método restar(t:Tiempo):Tiempo?
¶
-
Propósito:
- Restar el tiempo del objeto actual con el tiempo de
t
. - Devuelve un nuevo objeto
Tiempo
con el resultado, onull
si el resultado es menor que00:00:00
.
- Restar el tiempo del objeto actual con el tiempo de
-
Pistas:
- Similar al método
sumar
, pero usadecrementar
. - Crea una copia del objeto actual antes de intentar la resta.
- Si
decrementar
devuelvetrue
, retorna la copia actualizada. De lo contrario, retornanull
.
- Similar al método
-
Lógica:
- Usa
copiar
para crear una copia del objeto actual. - Aplica
decrementar
en la copia. - Retorna la copia si la operación es válida o
null
si no lo es.
- Usa
12. Método esMayorQue(t:Tiempo):Boolean
¶
-
Propósito:
- Determinar si el tiempo del objeto actual es mayor que el tiempo de
t
.
- Determinar si el tiempo del objeto actual es mayor que el tiempo de
-
Pistas:
- Compara los segundos totales del objeto actual y de
t
. - Reutiliza el método
obtenerSegundos
.
- Compara los segundos totales del objeto actual y de
-
Lógica:
- Retorna
true
si los segundos del objeto actual son mayores que los det
.
- Retorna
13. Método esMenorQue(t:Tiempo):Boolean
¶
-
Propósito:
- Determinar si el tiempo del objeto actual es menor que el tiempo de
t
.
- Determinar si el tiempo del objeto actual es menor que el tiempo de
-
Pistas:
- Similar a
esMayorQue
, pero verifica si los segundos totales son menores.
- Similar a
-
Lógica:
- Retorna
true
si los segundos del objeto actual son menores que los det
.
- Retorna
Consejos Generales para Resolver el Ejercicio¶
-
Reutilización de Métodos:
- Piensa en cómo los métodos existentes pueden ayudarte a implementar nuevos métodos sin duplicar lógica. Por ejemplo,
sumar
yrestar
reutilizanincrementar
ydecrementar
.
- Piensa en cómo los métodos existentes pueden ayudarte a implementar nuevos métodos sin duplicar lógica. Por ejemplo,
-
Creación de los métodos
obtenerSegundos
yactualizarTiempoConSegundos
:- Estos métodos son clave para simplificar las operaciones de comparación, suma y resta de tiempos.
-
Pruebas Graduales:
- Implementa un método a la vez y verifica su funcionamiento con casos simples en el programa principal antes de pasar al siguiente.
-
Validaciones:
- Asegúrate de manejar los casos límite, como tiempos negativos o mayores que
23:59:59
.
- Asegúrate de manejar los casos límite, como tiempos negativos o mayores que