FabioJ ha scritto:
Il primo riguarda : throws Exception la funzione di questa istruzione la conosco e riguarda le eccezioni .
Segnala il fallimento di un metodo , pero' mi e' poco chiara la logica .
Ditemi se e' giusto il ragionamento .
Se il reparto del supermercato esiste inizializza le variabili Reparto = rep , Nome = art, Quantita = qty e Prezzo = prc altrimenti
visualizza a video ("ERRORE: reparto inesistente");.
Beh, quel costruttore chiaramente non visualizza nulla di per sé. Non so cosa fa di preciso Supermercato.checkReparto ma restituisce un boolean e se false il costruttore si limita solo a lanciare quella Exception. Sarà poi il chiamante (che ha invocato il costruttore) a dover considerare la eccezione in qualche modo.
FabioJ ha scritto:
this(rep,art,0,0);
return;
e
this("Macelleria","salame",0,0);
return;
La classe ArticoloInSupermercato ha 3 costruttori. Il primo ha la logica completa, mentre gli altri due usano la invocazione this( ...... ) per invocare un altro costruttore della stessa classe.
E quindi sia il secondo che il terzo costruttore invocano il primo passando degli argomenti.
Ah, il return; al fondo del costruttore è assolutamente superfluo!
FabioJ ha scritto:
public boolean equals(ArticoloInSupermercato articolo){
if(this.Nome==articolo.Nome && this.Reparto==articolo.Reparto){
return true;
}
else{return false;}
}
}
Questo equals è "dubbio" per alcuni motivi: innanzitutto NON è un override del equals() di Object, perché il parametro è ArticoloInSupermercato invece che Object. E poi comunque sta confrontando le stringhe con == che NON va bene, perché se vuoi confrontare il contenuto delle stringhe bisogna usare equals().
(il == si basa solo sulla "identità" degli oggetti)