tout marche sauf le dernier
This commit is contained in:
71
TP4/stub/2Iterator/MonBrin.java
Normal file
71
TP4/stub/2Iterator/MonBrin.java
Normal file
@@ -0,0 +1,71 @@
|
||||
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");
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
public class MonBrin implements Iterable<Base> {
|
||||
private MonMaillon debut;
|
||||
|
||||
// Constructeur pour initialiser le brin avec le premier maillon
|
||||
public MonBrin(MonMaillon p) {
|
||||
this.debut = p;
|
||||
}
|
||||
|
||||
// Retourne le premier maillon du brin
|
||||
public MonMaillon getDebut() {
|
||||
return this.debut;
|
||||
}
|
||||
|
||||
// Fournit un itérateur pour parcourir le brin d'ADN
|
||||
@Override
|
||||
public Iterator<Base> iterator() {
|
||||
return new MonBrinIterator(this.debut); // Navigation déléguée à MonBrinIterator
|
||||
}
|
||||
|
||||
// Méthode toString pour afficher tout le brin d'ADN sous forme de chaîne
|
||||
@Override
|
||||
public String toString() {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
MonMaillon temp = this.debut;
|
||||
while (temp != null) {
|
||||
sb.append(temp.getBase()).append(" ");
|
||||
temp = temp.getSuiteMaillon();
|
||||
}
|
||||
return sb.toString().trim();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user