Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    creare un contenitore di code in java

    Salve a tutti avrei bisogno di implementare un contenitore di code (coda inteso come tipo di dato astratto) ma non ci riesco...qualcuno potrebbe darmi un aiuto gentilmente? ecco la traccia dell'esercizio:

    Descrivere e implementare il TDA QueueContainer, come un contenitore
    di code che supporti le seguenti operazioni:
    - Size(): numero di code conservati nel contenitore
    - isEmpty(): contenitore vuoto o no
    - makeQueue(Object x): crea una coda Q contenente il solo elemento x e la inserisce nel
    contenitore
    - enqueue (Queue Q, Object x): inserisce x in Q, se Q `e nel contenitore
    - dequeue (Queue Q): elimina da Q, se Q `e nel contenitore
    - remove (Queue Q): elimina (senza distruggere) Q dal contenitore
    Definire opportunamente le condizioni di errore. Definire l’interfaccia e implementarla (dis-
    cutere la scelta implementativa adottata). Si crei un pacchetto QueueContainer, all’interno
    si crei l’interfaccia e poi la classe che l’implementa

    l'interfaccia l'ho creata devo solo implementare la classe con i metodi suggeriti.
    Ah dimenticavo il Tipo di dato astratto "coda" l'ho già implementato. Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    44
    Salve,

    non mi sembra chiarissimo l'esercizio, se ho capito bene, una volta fatto l'oggetto coda, fai un'oggetto contenitore con una collection(list, set o altro) di code e implementi i metodi che sono intuitivi...

    Cia cia

  3. #3
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    cosa intendi con contenitore ?
    non capisco se una collection di bean coda o un bean che ti identifica l'oggetto coda..
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  4. #4
    praticamente avrei bisogno di una coda che invece di contenere dati di tipo Object, contenga dei dati di tipo "Queue" (la classe Queue è già stata implementata)

  5. #5
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    ti riporto la classe.. gli altri metodi li devi implementare tu.. io ti ho messo i primi 2 e il costruttore..

    codice:
    public class QueueContainer{
    
      private List listaCode;
    
      public QueueContainer(){
        listaCode = new ArrayList();
      }
    
      public int size(){
        return listaCode.size();
      }
    
      public boolean isEmpty(){
        boolean returnValue = false;
        if(listaCode.size()==0){
          return true;
        }
        return returnValue;
      }
    
    }
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  6. #6
    ho provato ad implementarla con il tuo aiuto ma non l'ho testata ancora...
    Fammi sapere giusto se c'è qualche errore per favore
    PS: in ogni caso ti ringrazio per l'aiuto!

    package queueContainer;
    import java.util.*;
    import queue.ArrayQueue;
    import queue.Queue;

    public class QueueContainer implements QContainer{

    private List listaCode;

    public QueueContainer(){
    listaCode = new ArrayList();
    }

    public int size(){
    return listaCode.size();
    }

    public boolean isEmpty(){
    boolean returnValue = false;
    if(listaCode.size()==0){
    return true;
    }
    return returnValue;
    }


    public Queue makeQueue(Object x){
    Queue temp=new ArrayQueue();
    temp.enqueue(x);
    listaCode.add(temp);
    return temp;
    }


    public void enqueue (Queue Q, Object x) throws Exception{
    if (listaCode.contains(Q))
    Q.enqueue(x);
    else
    throw new Exception("Impossibile aggiungere elementi alla coda Q," +
    "Il contenitore non contiene la Coda specificata");

    }



    public void dequeue (Queue Q) throws Exception{
    if (listaCode.contains(Q))
    listaCode.remove(Q);
    else
    throw new Exception("Impossibile rimuovere la coda Q," +
    "Il contenitore non contiene la Coda specificata");
    }



    public void remove (Queue Q)throws Exception{
    if (listaCode.contains(Q)){
    while (!Q.isEmpty())
    Q.dequeue();
    }
    else
    throw new Exception("Impossibile rimuovere gli elementi della coda Q, " +
    "Il contenitore non contiene la Coda specificata");

    }

    }

  7. #7
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    vista così ad occhio mi sembra buona.. fammi spaere dopo che l'hai provata
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  8. #8
    Perfetto mi sei stato di grandissimo aiuto ho solo modificato questo metodo

    public void enqueue (Queue Q, Object x) throws Exception{
    if (listaCode.contains(Q))
    Q.enqueue(x);
    else{
    Q.enqueue(x);
    listaCode.add(Q);

    }

    I metodi funzionano tutti, grazie ancora, buona serata!

    Posto anche la classe di test in caso dovesse servire a qualcun altro:

    package queueContainer;
    import java.io.BufferedReader;
    import java.io.InputStreamReader;

    import queue.*;
    public class TestQueueContainer {

    /**
    * @param args
    */
    public static void main(String[] args) throws Exception{
    // TODO Auto-generated method stub
    BufferedReader d = new BufferedReader(new InputStreamReader(System.in));

    QueueContainer c = new QueueContainer();
    Queue temp=new ArrayQueue();

    Queue temp1=new ArrayQueue();
    /*
    * Inserisco nella coda temp tre elementi letti da input
    */
    for (int i=0;i<3;i++)
    {
    System.out.println("Inserisci il "+(i+1)+"°elemento nello coda temp: ");
    Object e=d.readLine();
    temp.enqueue(e);
    }
    /*
    * Inserisco la coda temp nel contenitore c
    */
    c.enqueue(temp, "x");

    //Stampo la taglia del contenitore

    System.out.println("La dimensione del container è: "+c.size());

    /*
    * Creo una nuova coda temp1 in cui inserisco 3 elementi letti da tastiera
    */
    for (int i=0;i<3;i++)
    {
    System.out.println("Inserisci il "+(i+1)+"°elemento nello coda temp1: ");
    Object e=d.readLine();
    temp1.enqueue(e);
    }
    /*
    * Inserisco la coda temp nel contenitore c
    */
    c.enqueue(temp1, "x");

    //Ristampo a video la nuova dimensione del contenitore che adesso dovrebbe essere 2
    System.out.println("La dimensione del container è: "+c.size());

    //Elimino dal contenitore la coda temp 1
    c.dequeue(temp1);
    //Quindi la dimensione del contenitore dopo questa stampa dovrebbe essere 1
    System.out.println("La dimensione del container dopo la dequeue è: "+c.size());


    Queue prova=new ArrayQueue();
    //Testo il metodo makeQueue che inserisce nel contenitore una nuova coda con un solo elemento che gli passiamo
    prova=c.makeQueue("tre");

    //Ristampo la dimensione del contenitore che in questo caso dovrebbe essere 2
    System.out.println("La dimensione del container dopo aver aggiunto una coda " +
    "con un solo elemento è: "+c.size());

    /*Utilizzo il metodo toString della classe Queue per verificare se effettivamente la
    *coda che abbiamo inserito con il metodo makeQueue contiene l'elemento "tre"
    */
    System.out.println(prova.toString());

    /*
    * Il metodo remove svuota la coda temp senza eliminarla
    */
    c.remove(temp);
    /*
    * Stampo a video il contenuto si temp che adesso dovrebbe essere vuota
    */
    System.out.println(temp.toString());
    /*
    * Ristampo a video la dimensione del contenitore che adesso dovrebbe essere ancora 2
    * perchè il metodo remove non cancella dal contenitore ma svuota solo la coda
    */
    System.out.println("La dimensione del contenitore dopo aver svuotato la coda temp è:" +
    +c.size());
    }

    }

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.