Ciao a tutti, qualche giorno fa ho sestenuto l'esame di programmazione 1 e la correzione di uno degli esercizi mi ha laciato molto perplesso.
Avevamo 2 classi :
codice:
public class Libro{
private String titolo;
private int numeroPagine;
//costruttore e get-set
}
public class Biblioteca{
private Libro [] libri;
private int size;
private int index;
//costruttore
}
dovevamo scrivere alcuni metodi tra cui aggiungiLibro.
io ho scritto
codice:
public boolean aggiungiLibro(Libro libro){
//aggiungo libro
}
La correzione del prof è stata: Esercizio sbagliato perchè l'incapsulamento è stato violato, non si può passare un oggetto a un metodo ma solo i suoi attributi.
Il metodo secondo lui corretto era:
codice:
public boolean aggiungiLibro(String titolo, int numeroPagine){
Libro libro = new Libro(titolo,numeroPagine);
//ora posso aggiungerlo
}
Io non riesco a capire come l'incapsulamento risulta violato in questo modo. Mi rendo conto che così si disaccoppia il reference del libro ma non capisco la sua utilità; bisognerà sempre passare per i metodi get-set per accedere o modificare lo stato dell'oggetto.
Qualcuno potrebbe illuminarmi per favore?