ciao a tutti
sto studiando la relazione di composizione di classi e ho dedotto questo: per evitare la rottura dell'incapsulamento passando riferimenti come parametri d'ingresso o di uscita dei metodi bisogna simulare i passaggi per valore. Ora mi sto esercitando ed ho ideato una classe Spesa che è una composizione di oggetti della classe Prodotto;il codice è questo
codice:
public class Spesa {
//attributi
private ArrayList<Prodotto> ProdottiAcquistatati=new ArrayList<>(); //riferimento
//costruttori
public Spesa()
{}
public Spesa(ArrayList<Prodotto> s) //simulazione passaggio per valore
{
Iterator<Prodotto> iter=s.iterator();
for(Prodotto p:s)
{
this.ProdottiAcquistatati.add(new Prodotto(iter.next().getPeso(),
iter.next().getPrezzoEtto(),iter.next().getScontoPercentuale()));
}
}
// metodi
public ArrayList<Prodotto> getSpesa() //simulazione passaggio per valore
{
ArrayList<Prodotto> s=new ArrayList<>();
Iterator<Prodotto> iter=this.ProdottiAcquistatati.iterator();
for(Prodotto p:this.ProdottiAcquistatati)
{
s.add(new Prodotto(iter.next().getPeso(),iter.next().getPrezzoEtto(),
iter.next().getScontoPercentuale()));
}
return s;
}
public void setProdottiAcquistati(ArrayList<Prodotto> s)
{
this.ProdottiAcquistatati=s;
}
dove la classe prodotto è la seguente:
codice:
public class Prodotto {
//atributi
private double Peso=0;//peso in kg
private double PrezzoEtto=0; //prezzo all'etto
private int ScontoPercentuale=0; //sconto in percentuale
//costruttori
public Prodotto()
{}
public Prodotto(double p,double pr,int s)
{
this.Peso=p;
this.PrezzoEtto=pr;
this.ScontoPercentuale=s;
}
//metodi
public double getPeso()
{
return this.Peso;
}
public double getPrezzoEtto()
{
return this.PrezzoEtto;
}
public int getScontoPercentuale()
{
return this.ScontoPercentuale;
}
public void setPeso(float p)
{
this.Peso=p;
}
public void setPrezzoEtto(float pr)
{
this.PrezzoEtto=pr;
}
public void setScontoPercentuale(int s)
{
this.ScontoPercentuale=s;
}
@Override
public String toString()
{
return "Peso: "+this.Peso+" Prezzo all'etto:"+this.PrezzoEtto+
" Sconto in Percentuale: "+this.ScontoPercentuale;
}
}
Ora volevo sapere se ho rispettato l'incapsulamento e quindi ho simulato bene il passaggio per valore. Grazie in anticipo per l'aiuto