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

    programmazione orientata agli oggetti

    qualcuno mi può aiutare...
    nel mio problema ho un'interfaccia iter che implemementa l'iteratore, ed i metodi di questa interfaccia sono:
    boolean hasPrevious()
    T previous()
    void add(T elem)
    vorrei sapere come si concretizzano i metodi e dove visto che ho da fare una lista concatenata, una lista astratta ed un'array list.
    Grazie

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

    Re: programmazione orientata agli oggetti

    Originariamente inviato da trinity_84
    vorrei sapere come si concretizzano i metodi e dove visto che ho da fare una lista concatenata, una lista astratta ed un'array list.
    Nella tua "collezione" dovrai implementare un metodo che restituisce una istanza dell'iteratore. Chiaramente l'iteratore deve poter accedere alla struttura interna della collezione e pertanto la gestione della iterazione è da fare in un modo molto "intimo" con la collezione stessa.
    In genere quindi la classe dell'iteratore la si definisce come inner-class (regular o anonymous) della classe che gestisce la collezione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ma come lo faccio il metodo:
    boolean hasPrevious()
    T previous() //uso di generici

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da trinity_84
    ma come lo faccio il metodo:
    boolean hasPrevious()
    T previous() //uso di generici
    Posto un esempio che non usa i generics e non ha metodi per modificare la collezione (tanto è solo di esempio per far capire l'iteratore):

    codice:
    import java.util.*;    // Solo per NoSuchElementException
    
    public class Prova
    {
        public static void main (String[] args)
        {
            MyArray myArr = new MyArray ();
    
            StringIter iter = myArr.getStringIter ();
    
            while (iter.hasNext ())
                System.out.println (iter.next ());
        }
    }
    
    
    interface StringIter
    {
        boolean hasNext ();
        String next ();
    }
    
    
    class MyArray
    {
        private String[] array = { "pippo", "pluto", "paperino" };
    
        public StringIter getStringIter ()
        {
            return new StringIterImpl ();
        }
    
        private class StringIterImpl implements StringIter
        {
            private int index;
    
            public boolean hasNext ()
            {
                return index < array.length;
            }
            
            public String next ()
            {
                if (index < array.length)
                    return array[index++];
                else
                    throw new NoSuchElementException ();
            }
        }
    }
    La classe che implementa l'iteratore (StringIterImpl) è una inner class di MyArray. E nota che ha una variabile di istanza che fa da indice nella struttura interna. Quindi è chiaro che ci deve essere una relazione molto stretta tra la collezione e l'iteratore. Perché l'iteratore deve innanzitutto mantenere uno stato che indica l'avanzamento della iterazione e deve poter sapere come è fatta la struttura della collezione per capire se ci sono ancora elementi e come prelevarli.
    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.