Visualizzazione dei risultati da 1 a 6 su 6

Visualizzazione discussione

  1. #3
    Quote Originariamente inviata da Nikopol Visualizza il messaggio
    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?
    In effetti neanche io capisco di cosa si lamenti il prof se il metodo aggiungiLibro appartiene alla classe Biblioteca come sembra ovvio

    Al limite avrebbe potuto anche avere ragione se avesse chiesto una una cosa del genere
    (... lavoro di fantasia solo per esporre un caso in cui potrebbe avere senso passare solo gli attributi):

    "implementare un metodo getDifferenzaPagine nella classe Libro"
    e si fosse scritto :

    public class Libro{
    private String titolo;
    private int numeroPagine;
    //costruttore e get-set
    ...
    public int getDifferenzaPagine( Libro altroLibro) {
    // qui posso accederere direttamente alle var private di altroLibro
    altroLibro.numeroPagine=-100;
    ....
    }
    }

    ... ma non ha chiesto nulla del genere

    Se ci sono sviluppi fai sapere come va a finire perché la curiosità è forte
    Ultima modifica di sspintux; 15-02-2014 a 00:03

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.