tout marche sauf le dernier

This commit is contained in:
2024-11-13 17:25:35 +01:00
parent 16078ad1c7
commit c6e55bed52
40 changed files with 789 additions and 0 deletions

View 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();
}
}