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?