Visualizzazione dei risultati da 1 a 4 su 4

Discussione: vector + oggetti

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123

    vector + oggetti

    Ho un esercizio che prima di tutto mi chiede di fare una classe Pubblicazione con un pò di cose e l'ho fatta...poi mi vengono chieste le seguenti cose :

    Scrivere una classe Scaffale i cui oggetti rappresentano scaffali di una biblioteca, ognuno dei quali può contenere n pubblicazioni.

    Variabili di istanza:
    • un vector di elementi di tipo Pubblicazione (vedi esercizio precedente). Ogni elemento del vector conterrà un riferimento ad un oggetto Pubblicazione, oppure null se la posizione corrispondente dello scaffale è vuota.
    La classe Scaffale avrà i seguenti metodi:
    • costruttore: dato n di tipo int, crea un vector di n elementi ed inizializza la variabile di istanza.
    • getPubblicazione: prende come parametro la posizione nello scaffale su cui il metodo è invocato (tra 0 ed n-1) e restituisce null se la posizione è vuota, o un riferimento alla Pubblicazione in essa contenuta altrimenti.
    • setPubblicazione: aggiunge una pubblicazione in una certa posizione dello scaffale su cui il metodo è invocato (o la svuota mettendoci null). Prende come parametri un riferimento ad un oggetto Pubblicazione ed un indice tra 0 e n-1.
    • listaPubblicazioni: stampa la lista delle pubblicazioni effettivamente contenute nello scaffale su cui il metodo è invocato.

    Io ho fatto tre file (uno per il main, uno per Pubblicazioni ed uno per Scaffali)
    nel main ho questo
    codice:
     Vector vettore = new Vector();
            Pubblicazione pubbl1 = new Pubblicazione("Ciao Mondo","Mario Rossi",20);
            vettore.add(pubbl1);
            Pubblicazione pubbl2 = new Pubblicazione("Viva Viva","Claudio Bianchi",17);
            vettore.add(pubbl2);
            Pubblicazione pubbl3 = new Pubblicazione("Forza Inter","Pietro Verdi",28);
            vettore.add(pubbl3);
            Pubblicazione pubbl4 = new Pubblicazione("Ciao Java","Giacomo Viola",8);
            vettore.add(pubbl4);
            Pubblicazione pubbl5 = new Pubblicazione("La scuola","Marco Giallo",33);
            vettore.add(pubbl5);
            System.out.println(pubbl1);
    in pubblicazioni penso vada tutto bene
    in scaffale ho solo questo, ovvero per il momento sono solo riuscito a fare un semplice scheletro perchè non riesco ad andare avanti, non capisco cosa e come devo mettere quello richiesto nei metodi
    codice:
    Scaffale(int n)
        {
            Vector vett = new Vector(n);
        }
        
        
        public void setPubblicazione()
        {
            
        }
        public int getPubblicazione()
        {
            
        }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: vector + oggetti

    Originariamente inviato da bobo24
    Io ho fatto tre file (uno per il main, uno per Pubblicazioni ed uno per Scaffali)
    E per questo è ok, più "pulito".

    Originariamente inviato da bobo24
    in scaffale ho solo questo, ovvero per il momento sono solo riuscito a fare un semplice scheletro perchè non riesco ad andare avanti, non capisco cosa e come devo mettere quello richiesto nei metodi
    Come dice il testo, Scaffale deve avere una variabile di istanza di tipo Vector per contenere l'insieme degli oggetti Pubblicazione (null compresi, ovviamente). Pertanto la variabile del Vector non la devi certo tenere "locale" al costruttore.

    Il punto meno chiaro è il secondo: "costruttore: dato n di tipo int, crea un vector di n elementi ed inizializza la variabile di istanza"

    Nel costruttore Vector(int initialCapacity) il initialCapacity è la "capacità" (iniziale) del Vector ma non è il numero di elementi "logici" che contiene. Per capacità si intende qui quella "fisica" dell'array Object[] che il Vector ha al suo interno. Il Vector funziona a "espansione di capacità" ovvero in un certo istante tipicamente l'array interno degli oggetti è più grande del numero di elementi "logici" presenti nel Vector e man mano che serve istanzia un array più grande quando la capacità non è più sufficiente.

    Quindi cosa vuol dire nel tuo caso? Io ipotizzo (in modo sensato) questo: che tu debba istanziare il Vector e poi inserire N elementi null. Non basta infatti istanziare new Vector(n). Ripeto che quella del costruttore è solo la "capacità" iniziale.

    getPubblicazione/setPubblicazione semplicemente devi farli per poter restituire/settare dal/nel Vector interno a Scaffare un oggetto Pubblicazione, che tecnicamente può anche essere un null.

    listaPubblicazioni immagino che voglia far stampare su System.out la lista delle pubblicazioni. Anche se concettualmente non è bellissimo, comunque ok, prendiamo questo per buono.

    Tutto questo comunque vuol dire che nel main() non devi istanziare tu il Vector. Istanzi gli oggetti Pubblicazione e poi li "setti" nell'oggetto Scaffare appunto con il setPubblicazione().
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    123
    Ok andbin,
    mi hai schiarito un pò le idee...
    l'unica cosa che ancora non riesco a capire è cosa devo mettere nel costruttore di Scaffale...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da bobo24
    l'unica cosa che ancora non riesco a capire è cosa devo mettere nel costruttore di Scaffale...
    Sicuramente istanziare il Vector e assegnare il reference ad una variabile di istanza.
    Poi come ho detto, il parametro "n" che riceve il costruttore di Scaffale ipotizzo che serva per far sì che il Vector abbia effettivamente quel numero "logico" di elementi (che ripeto, è differente dalla "capacità" fisica del Vector).

    Se vuoi usare quel "n" anche per inizializzare la capacità fisica del Vector va bene, ma è una ottimizzazione. Potresti anche solo fare new Vector() (senza argomenti).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.