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