Salve ragazzi avrei bisogno di un piccolo aiuto su un problema d'esame in java. La traccia è la seguente:
Di base il mio approccio è stato: DispositivoIoT superclasse-> LampadinaRGB,Climatizzatore e Persiana sottoclassi.
Questo è il codice della superclasse.. su un problema del genere va bene fare una implementazione del genere? Mi confonde il fatto che si abbia a che fare con date e orari , per cui la logica mi porta a pensare che, data la traccia, il ragionamento è del tipo : do(resta acceso) while (non si spegne volutamente o non si spegne in maniera programmata). Andava fatta una impostazione del genere o va bene semplicemente giocare sulle variabili oraAccensione/spegnimento,minutiAccensione/spegnimento come ho fatto io? Spero che i miei dubbi siano chiari.. Grazie in anticipo
Di base il mio approccio è stato: DispositivoIoT superclasse-> LampadinaRGB,Climatizzatore e Persiana sottoclassi.
Java:
public abstract class DispositivoIoT {
public DispositivoIoT(int oraSpegnimento,int minutiSpegnimento,double consumoOrario) {
oraAttuale=new GregorianCalendar();
this.oraSpegnimento=oraSpegnimento;
this.minutiSpegnimento=minutiSpegnimento;
this.consumoOrario=consumoOrario;
}
public DispositivoIoT(double consumoOrario) {
oraAttuale=new GregorianCalendar();
accendiDispositivo(oraAccensione,minutiAccensione);
this.consumoOrario=consumoOrario;
}
public void accendiDispositivo() {
if(acceso==false) {
acceso=true;
setOraAccensione(oraAttuale.get(GregorianCalendar.HOUR));
setMinutiAccensione(oraAttuale.get(GregorianCalendar.MINUTE));
}else
return;
}
public void accendiDispositivo(int oraAccensione,int minutiAccensione) {
if(acceso==false) {
acceso=true;
setOraAccensione(oraAccensione);
setMinutiAccensione(minutiAccensione);
}else
System.out.println("Il dispositivo è già acceso.");
}
public void spegniDispositivo() {
if(acceso==true) {
acceso=false;
setOraSpegnimento(oraAttuale.get(GregorianCalendar.HOUR));
setMinutiSpegnimento(oraAttuale.get(GregorianCalendar.MINUTE));
}else
System.out.println("Il dispositivo è già spento.");
}
public void spegniDispositivo(int oraSpegnimento,int minutiSpegnimento) {
if(acceso==true) {
acceso=false;
setOraSpegnimento(oraSpegnimento);
setMinutiSpegnimento(minutiSpegnimento);
}else
System.out.println("Il dispositivo è già spento.");
}
//set ora e minuti
public void setOraAccensione(int oraAccensione) {this.oraAccensione=oraAccensione;}
public void setMinutiAccensione(int minutiAccensione) {this.minutiAccensione=minutiAccensione;}
public void setOraSpegnimento(int oraSpegnimento) {this.oraSpegnimento=oraSpegnimento;}
public void setMinutiSpegnimento(int minutiSpegnimento) {this.minutiSpegnimento=minutiSpegnimento;}
//get ora e minuti
public int getOraAccensione() {return oraAccensione;}
public int getMinutiAccensione() {return minutiAccensione;}
public int getOraSpegnimento() {return oraSpegnimento;}
public int getMinutiSpegnimento() {return minutiSpegnimento;}
//metodi astratti
public abstract void programmazioneSpegnimento(int oraSpegnimento,int minutiSpegnimento);
public abstract String toString();
//variabili istanza
GregorianCalendar oraAttuale;
private static boolean acceso=false;
private int oraAccensione,oraSpegnimento,minutiAccensione,minutiSpegnimento;
private double consumoOrario;
}
Questo è il codice della superclasse.. su un problema del genere va bene fare una implementazione del genere? Mi confonde il fatto che si abbia a che fare con date e orari , per cui la logica mi porta a pensare che, data la traccia, il ragionamento è del tipo : do(resta acceso) while (non si spegne volutamente o non si spegne in maniera programmata). Andava fatta una impostazione del genere o va bene semplicemente giocare sulle variabili oraAccensione/spegnimento,minutiAccensione/spegnimento come ho fatto io? Spero che i miei dubbi siano chiari.. Grazie in anticipo