Lo de "describa dos clases y tres objetos por cada clase", sinceramente, no sé qué quieren indicar con eso.
Para el ejercicio que propone, lo de incrementar un tiempo, no se necesitan dos clases.
Sobre lo de incrementar el tiempo, el enunciado también resulta un poco ambiguo. Voy a interpretar que lo que se pide es leer por teclado un tiempo pidiendo las horas, luego los minutos y después los segundos.
Y mostrar ese tiempo incrementado en las cantidades indicadas.
Bueno, podemos escribir una clase que reciba por constructor las horas, minutos y segundos iniciales.
Y tenga un método que retorne el tiempo incrementado.
Incrementar el tiempo, no es simplemente sumar y ya está.
Hay que tener en cuenta que las horas no puede tener un valor igual1 o mayor de 24.
Y los minutos y segundos no pueden ser igual o mayor a 60.
Si los segundos superan el valor 60, su contador se reinicia a cero y solo suma la diferencia que hay entre ese valor y 60.
Es decir, si comenzamos con 50 segundos, y le incrementamos 20, su valor no puede ser 70.
Será 70 - 60 =
10Y esto además implicará que hay que añadir +1 minuto al incremento previsto.
Esta podría ser la clase:
public class Tiempo {
//Tiempo inicial, valores se inician por constructor
private int horas;
private int minutos;
private int segundos;
public Tiempo(int horas, int minutos, int segundos) {
this.horas = horas;
this.minutos = minutos;
this.segundos = segundos;
}
public String getTiempoInicial() {
return String.format("%02d:%02d:%02d", horas, minutos, segundos);
}
public String getTiempoIncrementado() {
//Incrementos a aplicar
int incHoras = 2, incMinutos = 10, incSegundos = 20;
//Tiempos que se van a incrementar respecto al tiempo inicial
int horasInc, minutosInc, segundosInc;
/*
* Para incrementar sumamos los incrementos al tiempo inicial
* teniendo en cuenta los limites de cada magnitud.
* Por ejemplo, si al sumar los segundos supera o iguala el valor 60,
* implica que los segundos han de adoptar ese valor - 60 y que hay
* que incrementar 1 minuto extra.
*/
//Incrementamos segundos
segundosInc = segundos + incSegundos;
//Comprobamos límite 60 segundos
if (segundosInc >= 60) {
segundosInc -= 60; //Restamos 60
incMinutos++;//Añadimos 1 minuto al incremento
}
//Mismo proceso con los minutos
minutosInc = minutos + incMinutos;
if (minutosInc >= 60) {
minutosInc -= 60;
incHoras++;
}
//Y con horas, límite es 24
horasInc = horas + incHoras;
if (horasInc >= 24)
horasInc -= 24;
//Retornamos tiempo incrementado
return String.format("%02d:%02d:%02d", horasInc, minutosInc, segundosInc);
}
}
Podemos ponerlo a prueba con este código:
public class TestTiempo {
public static void main(String[] args) {
Scanner teclado = new Scanner(System.in);
System.out.print("Indica tiempo en hh: ");
int hh = teclado.nextInt();
System.out.print("Indica tiempo en mm: ");
int mm = teclado.nextInt();
System.out.print("Indica tiempo en ss: ");
int ss = teclado.nextInt();
Tiempo tmp = new Tiempo(hh,mm,ss);
System.out.println("\nTiempo inicial: " + tmp.getTiempoInicial());
System.out.println("Tiempo incrementado: " + tmp.getTiempoIncrementado());
teclado.close();
}
}
Vemos en pantalla que parece cumplir con lo que se pide:
Indica tiempo en hh: 10
Indica tiempo en mm: 40
Indica tiempo en ss: 50
Tiempo inicial: 10:40:50
Tiempo incrementado: 12:51:10