import java.util.Iterator;
import java.util.NoSuchElementException;
/** 
    MonBrin code un brin d'ADN sous forme de liste simplement chaînée.

    Plusieurs instances de MonMaillon reliées convenablement forment une structure de liste simplement chaînée contenant pour chaque maillon le nom de la base.

    On n'utilise pas java.util et on recode tout.

    Cette version est correcte : la structuration et la navigation sont dans 2 classes séparées.
La classe MonBrin implémente Iterable au sens où elle peut générer à la demande un objet Iterator.

NB : Notez que j'implémente Iterable<Base> plutôt que Iterable qui n'était pas tout à fait propre
c'est un peu technique et c'est lié aux types génériques.
 Il y a des détails ici 
https://stackoverflow.com/questions/20790770/why-cant-i-assign-a-raw-type-to-a-parameterized-type-java?rq=1
*/
public class MonBrin implements Iterable<Base>{


    public MonBrin(MonMaillon p){
        throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
    }

    public MonMaillon getDebut(){
        throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
    }
           
    /** Pour naviguer? 
        On implémente l'interface iterator de java.util ici
        L'avantage c'est que c'est standard et tout le monde comprendra sans trop de mal comment la navigation fonctionne.
    **/
    @Override
    public Iterator<Base> iterator() {
        throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
    }
}
