Così dici che va meglio? L'equals che ho scritto è corretto?
Codice:
public class ArticoloInSupermercato{
// Array di stringhe di classe: rappresenta i reparti del supermercato
private static String [] reparti = {"Ortofrutta", "macelleria", "pulizia casa", "benessere"};
private String nomeArticolo; // Nome dell'articolo in vendita, inizialmente a ull
private double prezzoArticolo; // Prezzo dell'articolo in vendita
private int quantitaArticolo; // Numero di oggetti in vendita per un certo articolo
private int indiceReparto; // Indice di identificazione del reparto nell'array di classe reparti
/** COSTRUTTORE: Inizializza tutte le variabili di istanza e crea un nuovo oggetto istanza della classe.
@param nome di tipo String
@param prezzo di tipo double
@param quantita di tipo int
@param indice di tipo int
@return il riferimento ad un oggetto di tipo ArticoloInSupermercato */
public ArticoloInSupermercato(String nome, double prezzo, int quantita, int indice){
nomeArticolo = nome; // Metti il riferimento della stringa nome in nome_Articolo
prezzoArticolo = prezzo; // Copia il valore double di prezzo in prezzo_Articolo
quantitaArticolo = quantita; // Copia il valore int di quantita in quantita_Articolo
indiceReparto = indice; // Copia il valore int di indice in indice_Reparto
}
/* METODI DI ACCESSO AI DATI: */
/** getNome: restituisce al chiamante il valore contenuto nel campo nome dell'oggetto ricevente
@param void
@return una stringa contenente il nome del prodotto */
public String getNome(){
return nomeArticolo; // Ritorna al chiamante il riferimento alla stringa contenente il nome dell'articolo
}
/** getPrezzo: restituisce al chiamante il valore contenuto nel campo prezzo dell'oggetto ricevente
@param void
@return una double contenente il prezzo del prodotto */
public double getPrezzo(){
return prezzoArticolo; // Ritorna al chiamante il riferimento alla stringa contenente il nome dell'articolo
}
/** getQuantita: restituisce al chiamante il valore contenuto nel campo prezzo quantita dell'articolo
@param void
@return un int contenente il numero di prodotti per uno specifico articolo */
public int getQuantita(){
return quantitaArticolo;
}
/** getRepartp: restituisce al chiamante il valore rappresentante l'indice nell'array dei reparti del supermercato
@param void
@return un int che rappresenta l'indice nell'array dei reparti del supermercato */
public int getReparto(){
return indiceReparto;
}
/* METODI DI UTILITA' */
/** METODO toSting: Restituisce al chiamante una stringa contenente i dati contenuti nelle variabili di istanza di un
oggetto.
@param void
@return un oggetto di tipo String che contiene i dati delle variabili di istanza dell'oggetto ricevente sotto forma
di stringa */
public String toString(){
String Risposta = "Il nome dell'articolo è: " + nomeArticolo + "Il prezzo è: " + prezzoArticolo + "Nel supermercato ci sono tot pezzi: " + quantitaArticolo + "L'articolo appartiene al reparto: " + reparti[indiceReparto];
return Risposta;
}
/** METODO EQUALS: ridefinisco il metodo equals per confrontare due oggetti istanza della classe ArticoliInSupermercato
@parm prodotto di tipo ArticoloInSupermercato da confrontare con l'oggetto ricevente il messaggio
@return esito di tipo boolean: TRUE se i due oggetti sono uguali, FALSE altrimenti. */
public boolean equals(ArticoloInSupermercato prodotto){
boolean esito = (nomeArticolo.equals(prodotto.nomeArticolo) && prezzoArticolo == prodotto.prezzoArticolo && quantitaArticolo == prodotto.quantitaArticolo && indiceReparto == prodotto.indiceReparto);
return esito;
}
}
Mi spieghi bene la storia che se gli passavo il vettore dei reparti ed inizializzavo in vettore di classe violavo il principio di incapsulation?
Grazie
Andrea