ciao
sto cercando di modificare una parte del codice di un esercizio di java e mi son imbattuto
in un dilemma sull uso degli oggetti :
codice:
import java.util.Date ;
import java.util.GregorianCalendar ;
public class Main3
{
private Date dataAppuntamentoInizio ;
private Date dataAppuntamentoFine ;
public Main3 ()
{
GregorianCalendar chiama = new GregorianCalendar () ;
chiama.set ( GregorianCalendar.DAY_OF_MONTH , GregorianCalendar.OCTOBER) ;
chiama.set ( GregorianCalendar.HOUR_OF_DAY, 12 ) ;
chiama.set ( GregorianCalendar.MINUTE, 20 ) ;
chiama.set ( GregorianCalendar.SECOND, 10 ) ;
chiama.set ( GregorianCalendar.YEAR, 2011 ) ;
dataAppuntamentoInizio = chiama.getTime () ;
dataAppuntamentoFine = chiama.getTime () ;
}
ho dichiarato come variabili di istanza oggetti della classe Date , cioè di un altra classe ;
quanto è lecita questa cosa?
ho inizializzato gli oggetti privati usando il GregorianCalendar , dichiarando il costruttore public
codice:
public void setDuration (int minutiDurata) // dipende dall istanza oggetto inizioAppuntamento
{
// ho stabilito che la durata gli arriva in minuti
GregorianCalendar chiama = new GregorianCalendar () ;
chiama.setTime(dataAppuntamentoInizio) ; // carico il calendario con una data
int oraInizio = chiama.get (GregorianCalendar.HOUR_OF_DAY);
int minutoInizio = chiama.get (GregorianCalendar.MINUTE) ;
int minutiTotali = minutiDurata + minutoInizio ;
if ( minutiTotali <= 60 )
{
chiama.setTime(dataAppuntamentoFine) ; // carico il calendario e edito
chiama.set(GregorianCalendar.MINUTE , minutiTotali) ;
}
else
{
int oreDiDurata = minutiTotali / 60 ;
int minutiFinali = ( minutiTotali % 60 ) + minutoInizio;
int oraFinale = oraInizio + oreDiDurata ;
chiama.setTime(dataAppuntamentoFine) ; // carico il calendario e edito
chiama.set(GregorianCalendar.HOUR , oraFinale ) ;
chiama.set (GregorianCalendar.MINUTE, minutiFinali) ;
}
}
public int getDuration ()
{
long msIniziali = dataAppuntamentoInizio.getTime () ;
long msFinali = dataAppuntamentoFine.getTime () ;
GregorianCalendar chiama2 = new GregorianCalendar () ;
chiama2.setTime(dataAppuntamentoFine) ; // carico il calendario con una data
int oraInizio = chiama2.get (GregorianCalendar.MINUTE);
System.out.printf("\n%d", oraInizio);
long msTotali = msFinali - msIniziali ;
long minutiTotali = ( msTotali / 1000 ) / 60 ;
return (int) minutiTotali ;
}
il problema è nel metodo setDuration ;
quando esco dal metodo il valore dell'oggetto dataAppuntamentoFine è lo stesso dell'altro oggetto , dataAppuntamentoInizio !
com'è possibile tutto ciò?
quando invoco il metodo getDuration dal main mi restituisce un valore in minuti che non è
lecito ( sempre 0 )
che cosa posso e non posso fare utilizzando un metodo di una classe e cercando di modificare un oggetto di un altra classe?
qualcuno sa dove sbaglio?
Grazie