Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    Esercizio che non riesco a risolvere.

    Ciao a tutti, ho un esercizio universitario che non riesco a risolvere in alcuni punti suoi punti:
    CLASSE ARCHIVIO

    public class Archivio{
    public HashMap<String,Cartella> cartelle = new HashMap<String,Cartella>();
    public Collection<Brano> brani = new LinkedList <Brano>();
    public Map<String,Algoritmo> algoritmi = new TreeMap<String,Algoritmo>();
    public String nome;
    public String estensione;
    public String programma;
    public Archivio(String nome){
    this.nome = nome;
    }
    public String getNome(){
    return nome;
    }
    public Cartella aggiungiCartella(String path){
    Cartella c = new Cartella (path);
    cartelle.put(path,c);
    return c;
    }
    public Collection<Cartella> getCartelle(){
    return cartelle.values();
    }

    public Collection<Brano> getBraniArtista(String artista){

    for (Iterator iter = brani.iterator(); iter.hasNext() { if(brani.artista == (artista){ } brani.add(Brano);; return
    ....

    import java.util.Collection;
    import java.util.HashMap;

    CLASSE CARTELLA

    public class Cartella{
    public String path;
    public String nomeFile;
    public String titolo;
    public String artista;
    public HashMap<String,Brano> brani = new HashMap<String,Brano>();
    public Cartella (String path){
    this.path = path;
    }
    public String getPath(){
    return path;
    }
    public Brano aggiungiBrano(String nomeFile, String titolo, String artista){
    Brano b = new Brano (nomeFile,titolo,artista);
    brani.put(nomeFile, b);
    return b;
    }
    public Collection<Brano> getBrani(){
    return brani.values();
    }
    }

    DOMANDA:

    Come faccio ha rispondere alla richiesta in BLU? (che in sostanza mi chiede che dato una determinato artista, io sia in grado di trovare tutte le sue canzoni presenti)

    (La parte scritta in rosso è una mia possibile risposta,ma so gia che è errata)

    GRAZIE spero che qualcuno mi possa aiutare che io non so piu dove sbattere la testa

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Secondo me se posti il testo dell'esercizio è molto più semplice aiutarti..

    Non capisco perchè hai utilizzato riferimenti a Collection e a Map.. comunque..

    Secondo me l'errore potrebbe essere concettuale. Ti sono state chieste espressamente queste classi con questi metodi?
    L'ideale, (ma dipende dal testo dell'esercizio nel suo insieme) sarebbe fare una classe Artista con gli opportuni metodi: getNome(), addBrano(Brano b), getBrano();. La classe Artista conterrà poi un'ArrayList Brano (o Brani, chiamala come vuoi), che memorizzerà appunto i brani di quell'artista. Successivamente svilupperai un altra classe con il main() contenete un ArrayList di artisti (sempre se non vuoi fare un altra classe che memorizzi l'array di artisti, e accederai ad essa tramite la classe che contiene il main()).

  3. #3
    Grazie della risposta, ora posto il testo dell'esercizio:

    Si scriva il nucleo di un programma per la gestione di file musicali. Tutti le classi fanno parte del package audio.

    R1. Archivi e cartelle
    I file musicali sono organizzati in archivi. Un archivio, rappresentato dalla classe Archivio, rappresenta una collezione di file presenti su un PC.

    Gli archivi hanno un nome, passato come parametro del costruttore e restituito tramite il metodo getNome().

    Un archivio attinge i brani da più cartelle, che possono essere impostate tramite il metodo aggiungiCartella() che riceve come parametro il path della cartella e restituisce un oggetto di tipo Cartella. La classe Cartella offre il metodo getPath() per ottenere il path corrispondente.

    É possibile sapere quali sono le cartelle che costituiscono un archivio tramite il metodo getCartelle() che restituisce una collezione di cartelle.

    R2. File e Proprietà
    Le cartelle contengono dei file che possono essere registrati come brani tramite metodo aggiungiBrano() della classe Cartella. Tale metodo riceve come parametro il nome del file, il titolo del brano ed il nome dell'artista; il metodo restituisce un oggetto di tipo Brano.

    Dato un brano è possibile sapere la cartella di appartenenza, il nome, il titolo e l'artista tramite i metodi getCartella(), getNome(), getTitolo() e getArtista().

    Il metodo getBrani() della classe Cartella permette di ottenere la collezione contenente tutti i brani presenti nella cartella.

    É possibile sapere quali sono tutti i brani di un dato artista tramite il metodo getBraniArtista() della classe Archivio.


    Io quindi non posso cambiare la struttara, ma devo cercare di svilupparla.

    Sinteticamente nella classe Archivio costruisco gli archivi e aggiungo cartelle,
    nella classe Cartella aggiungo i brani, e nella classe Brano costruisco i brani.

    Ma ho bisogno di una iterazione tra le classe in modo tale da poter ad esempio quando sono nell'archivio ottenere il nome la cartella in cui c'è un brano specifico.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da derVerfall
    Ma ho bisogno di una iterazione tra le classe in modo tale da poter ad esempio quando sono nell'archivio ottenere il nome la cartella in cui c'è un brano specifico.
    In sostanza hai la classe Archivio contenente oggetti Cartella, e la classe Cartella contenente un ArrayList della classe Brani.

    La classe cartella sarebbe in sostanza come un Artista giusto?
    Quindi, nel metodo getBraniArtista() passi un artista (ma come stringa)..bhe..puoi utilizzare un ciclo for each per scorrere gli elementi!

  5. #5
    eh ok io faccio un ciclo che scandisce. Quindi la situazione della classe archivio è questa:

    public class Archivio{
    public HashMap<String,Brano> brani = new HashMap <String,Brano>();
    .....
    .....
    public Collection<Brano> getBraniArtista(String artista){
    for (Brano b : brani.values()) {
    if(b.artista == (artista)){
    }
    brani.put(?????,b);
    return ????? ;

    al posto di ????? cosa ci scrivo?

    e questo ciclo va bene o necessita di una nuova sintassi?

    ed inoltre la mappa brani contiene realmente i riferimenti agli oggetti Brano creati nella classe Cartella???

    (che bordello java... )

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Forse è meglio chiarire alcune cose prima..

    In una mappa non puoi utilizzare un Iterator (quindi, ne iteratori ne ciclo for each). Puoi ottenere una vista di una mappa!

    Comunque.. perchè utilizzi una mappa?

    Le istanze di Archivio dove le memorizzi? Un artista può essere reperibile in più cartelle? (ed ovviamente in questo caso farà riferimento a brani diversi). Quando ottieni tutti i brani dell'artista, li cerchi in tutti gli Archivi?

    Rispondimi a queste domande prima!! :P


    (non è incasinato come sembra xD)

  7. #7
    eh...bella domanda ahahhaahahah

    sinceramente mi è venuta da usare la mappa perchè cosi quando chiede:

    Il metodo getBrani() della classe Cartella permette di ottenere la collezione contenente tutti i brani presenti nella cartella.

    a me basta fare un brani.values() e risolvo il problema

    il problema è che me ne si genera un altro...quindi cosa mi consigli di fare? non uso la mappa e uso una lista?

    e quando mi chiede con getBrani() tutta la collezione di brani nella cartella come faccio ora?
    come lo faccio il return?


    per le altre domande sinceramente non ne capisco il senso...nel senso che le istanze di Archivio dovrebbero andare nella HashMap<String,Cartella> (giusto??? ) e un artista puo essere reperibile in più cartelle e anche in più archivi...

    detto cio come mi muovo ?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da derVerfall
    eh...bella domanda ahahhaahahah

    sinceramente mi è venuta da usare la mappa perchè cosi quando chiede:

    Il metodo getBrani() della classe Cartella permette di ottenere la collezione contenente tutti i brani presenti nella cartella.

    a me basta fare un brani.values() e risolvo il problema

    il problema è che me ne si genera un altro...quindi cosa mi consigli di fare? non uso la mappa e uso una lista?

    e quando mi chiede con getBrani() tutta la collezione di brani nella cartella come faccio ora?
    come lo faccio il return?
    Dunque, per il ritorno non c'è problema. Hai la classe cartella che contiene un ArrayList di brani no?

    codice:
    ArrayList<Brani> brani = new ArrayList<Brani>();
    
    ArrayList <Brani> getBrani() {
      return brani;
    }
    ...No?



    Originariamente inviato da derVerfall
    per le altre domande sinceramente non ne capisco il senso...nel senso che le istanze di Archivio dovrebbero andare nella HashMap<String,Cartella> (giusto??? ) e un artista puo essere reperibile in più cartelle e anche in più archivi...

    detto cio come mi muovo ?
    Dovresti avere le classi: Brani, Cartella, Archivio, AltraClasse (che può farti da main()). In questo modo, in AltraClasse hai un ArrayList di Archivi, in ogni oggetto archivi ci sarà un oggetto Cartella ed in ogni oggetto cartella un elenco di Brani,. o no?

  9. #9
    no l'altra classe è algoritmo(che riceve il tipo di algoritmo,il programma associato ecc), che è simile a Brano ma non fa da main...

    il mio main teoricamente è la classa archivio e tramite quella si generano in cascata le altre classi

    Archivio
    |
    Cartella
    |
    Brano
    |
    Algoritmo

    che faccio?

    inoltre
    la mia classe Cartella contiene una Mappa di Brani...dici che mi conviene anche li togliere la mappa e crearmi una lista?
    ma con l'arrayList posso gestire il nome del brano, l'artista e l'estensione (mp3 ecc) ?

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da derVerfall
    no l'altra classe è algoritmo(che riceve il tipo di algoritmo,il programma associato ecc), che è simile a Brano ma non fa da main...

    il mio main teoricamente è la classa archivio e tramite quella si generano in cascata le altre classi

    Archivio
    |
    Cartella
    |
    Brano
    |
    Algoritmo

    che faccio?

    inoltre
    la mia classe Cartella contiene una Mappa di Brani...dici che mi conviene anche li togliere la mappa e crearmi una lista?
    ma con l'arrayList posso gestire il nome del brano, l'artista e l'estensione (mp3 ecc) ?
    Mah..si, il main in Archivi direi possa andare (anche se lo trovo scomodo). Ovviamente ti conviene farti un ArrayList<Archivi> per ogni Archivio che avrai!
    per quanto riguarda la classe Cartella che contiene una mappa, bhe, forse sarebbe meglio un ArrayList<Brani>, l'aggiunta del brano all'oggetto chiamate è sempre molto semplice ovvero:

    codice:
    ArrayList<Brani> brani = new ArrayList<Brani>();
    
    void addBrano(Brano b) {
      // Qui volendo potresti controllare se il brano esiste in questo elenco.
      brani.add(b);
    }
    Per quanto riguarda le tue domanda la risposta è si! Quei dati riguardano la classe Brani per cui ti basta richiamare l'apposito metodo per ottenere il brano e i dati contenuto nell'oggetto Brano.
    Tieni presente però, che un Artista può essere presente in più Archivi! E ogni Archivio ha più cartelle in cui cercare... l'operazione mi sembra un pò dispendiosa però..

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.