|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
[JAVA] Un Metodo Accessore che deve ritornare un array di oggetti funziona così?
Ciao Ragazzi,
sto lavorando ad una classe Soggiorno che è caratterizzata da 4 interi (arrivo, partenza, numeroStanza e codiceCliente) e da un insieme di Servizi (che a loro volta sono oggetti caratterizzati da una stringa (cioè il servizio) e da un intero (il costo)) ora mi dite se così funziona? Codice:
package esamepoo.albergo; public class Soggiorno{ private int numeroStanza, arrivo, partenza, codiceCliente; private Servizi s; public Soggiorno(int numeroStanza, int arrivo, int parteza, int codiceCliente, Servizi s[]){ this.numeroStanza=numeroStanza; arrivo=arrivo; partenza=partenza; codiceCliente=codiceCliente; for(int i=0; i<s.length; i++) s[i]=s[i]; } //Metodi Accessori public int getNumeroStanza(){ return numeroStanza; } public int getArrivo(){ return arrivo; } public int getPartenza(){ return partenza; } public int getCodiceCliente(){ return codiceCliente; } public Servizi getServizi(){ return s; } } ![]() Soprattutto mi chiedevo se il metodo accessore per ritornare l'array di servizi andava bene così... a me mi puzza di no.. ![]() Datemi una mano please ![]() Grazie
__________________
![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Spiego tutto meglio:
La Traccia dice: Un Soggiorno è caratterizzato dal numero di stanza, dalle date di arrivo e partenza, dal codice del cliente (tutti per semplicità interi) e da una lista si Servizi usufruiti dal cliente durante il soggiorno stesso (ad esempio pranzi, cene, pay-tv etc.). Ogni Servizio è caratterizzato da una stringa di descrizione e da un costo (per semplicità un intero) Come Costruireste queste due classi? io mi blocco.. mi date una mano? ecco la mia classe Servizi: Codice:
package esamepoo.albergo; public class Servizi{ private String servizio; private int costo; public Servizi(String servizio, int costo){ this.servizio=servizio; this.costo=costo; } public Servizi(Servizi s){ this.servizio=s.servizio; this.costo=s.costo; } //Metodi Accessori public String getServizio(){ return this.servizio; } public int getCosto(){ return this.costo; } //Metodi di Cofronto public boolean equals(Object o){ if(this.getClass()!=o.getClass()) return false; else{ Servizi s=(Servizi)o; if(this.servizio.equals(s.servizio)) return true; return false; } }//equals } chi mi spiega bene come si fa a creare un oggetto (in questo caso Soggiorno) che contiente un insieme di altri oggetti? Penso che qui sia la cosa che non mi è chiara e che mi crea problemi... mi aiutate per favore? ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
UP
Nessuno che mi da una mano? ![]()
__________________
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Il metodo getServizi deve essere dichiarato cosi:
public Servizi[] getServizi(){ return s; } inoltre dipende un po come vuoi strutturare la cosa, ma io ad esempio non passerei il vettore dei servizi come argomento del costruttore del soggiorno, ma lo lascerei creare al costruttore. Quindi in Soggiorno metterei un metodo addServizio che permette di creare un servizio aggiungendolo all'array
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
In Questo Modo?
Codice:
public class Soggiorno{ private int numeroStanza, arrivo, partenza, codiceCliente; private Servizi s[]; private static int numeroServizi=0; public Soggiorno(int numeroStanza, int arrivo, int parteza, int codiceCliente){ this.numeroStanza=numeroStanza; arrivo=arrivo; partenza=partenza; codiceCliente=codiceCliente; s=new Servizi[5]; //Ipotizzando un MAX di 5 Servizi } //Metodo Per Aggiungere Servizi public void addServizio(Servizi serv){ s[numeroServizi]=serv; numeroServizi++; } -E' giusto dichiarare static la variabile per contarmi la posizione dell'array a cui sono arrivato per non perdermela? -Si può dichiarare direttamente s[] nel costruttore e non fuori?
__________________
![]() Ultima modifica di luxorl : 26-03-2005 alle 08:12. |
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Non devi dichiarare la variaile numeroServizi perche altrimenti sara condivisa da tutte le istanze di Soggiorno; va bene un campo non static. s va ene istanziarlo nel costruttore. Se non vuoi un limite fisso al numero sei servizi puoi usare un Vector al posto di un array.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Oct 2003
Città: Pisa/Cosenza
Messaggi: 1364
|
Quote:
![]()
__________________
![]() |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
I campi static di una classe sono campi associati alla classe e non ad un singolo oggetto della classe. Questo significa che quella variabile è condivisa da tutti gli oggetti della classe: se imposti il campo numeroServizi di un oggetto a 3, allora tutti gli oggetti Soggiorno avranno il campo numeroServizi pari 3. Nel tuo caso ogni soggiorno ha il proprio numero di servizi, quindi questo campo non può essere associato alla classe, ma deve essere diverso per ogni istanza.
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:40.