This commit is contained in:
2025-12-09 21:30:45 +01:00
parent aa1e9ab878
commit 306a32dbbe
33 changed files with 413 additions and 129 deletions
Binary file not shown.
+4
View File
@@ -0,0 +1,4 @@
// juste un type énuméré pour nommer les bases
public enum Base {
A,C,G,T
}
Binary file not shown.
+47
View File
@@ -0,0 +1,47 @@
// Fichier Exemple pour le second exercice sur l'ADN
public class Exemple {
public static void main(String[] args) {
// codon GCT code l'analine https://en.wikipedia.org/wiki/DNA_codon_table
// stop codon TAG, voir https://en.wikipedia.org/wiki/Stop_codon
System.out.println("construction du brin GCTTAG");
MonMaillon l = new MonMaillon(Base.G);
l = new MonMaillon(Base.A, l);
l = new MonMaillon(Base.T, l);
l = new MonMaillon(Base.T, l);
l = new MonMaillon(Base.C, l);
l = new MonMaillon(Base.G, l);
MonBrin b = new MonBrin(l);
System.out.println("l'affichage par défaut du brin ne va pas vous plaire");
System.out.println(b.toString());
System.out.println("On peut maintenant afficher en itérant avec un while comme ceci");
while (b.hasNext()) {
System.out.println(b.next());
}
// Simulation de plusieurs navigations successives
System.out.println("Navigation successive avec l'index secondaire :");
while (b.hasNextSecondaire()) {
System.out.println(b.nextSecondaire());
}
System.out.println("Navigation successive avec l'index tertiaire :");
while (b.hasNextTertiaire()) {
System.out.println(b.nextTertiaire());
}
// Simulation de plusieurs navigations simultanées
System.out.println("Navigation simultanée :");
if (b.hasNextSecondaire())
System.out.println("Secondaire: " + b.nextSecondaire());
if (b.hasNextTertiaire())
System.out.println("Tertiaire: " + b.nextTertiaire());
if (b.hasNextSecondaire())
System.out.println("Secondaire: " + b.nextSecondaire());
}
}
Binary file not shown.
+72
View File
@@ -0,0 +1,72 @@
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 a un problème : la structuration et la navigation sont dans la même classe.
*/
public class MonBrin implements Iterator<Base>{
private MonMaillon premier;
private MonMaillon index;
/**
* Autres index pour d'autres personnes qui naviguent
*/
private MonMaillon secondaire;
private MonMaillon tertiaire;
//Le constructeur fabrique un brin à partir du premier maillon p;
public MonBrin(MonMaillon p){
this.premier = p;
this.index = p;
this.secondaire = p;
this.tertiaire = p;
}
public MonMaillon getDebut(){
return this.premier;
}
@Override
public boolean hasNext(){
return index != null;
}
@Override
public Base next() {
if(this.index == null) throw new NoSuchElementException();
Base b = index.getBase();
index = index.getSuiteMaillon();
return b;
}
public boolean hasNextSecondaire(){
return secondaire != null;
}
public Base nextSecondaire() {
if(this.secondaire == null) throw new NoSuchElementException();
Base b = secondaire.getBase();
secondaire = secondaire.getSuiteMaillon();
return b;
}
public boolean hasNextTertiaire(){
return tertiaire != null;
}
public Base nextTertiaire() {
if(this.tertiaire == null) throw new NoSuchElementException();
Base b = tertiaire.getBase();
tertiaire = tertiaire.getSuiteMaillon();
return b;
}
}
Binary file not shown.
+31
View File
@@ -0,0 +1,31 @@
/**
* La classe MonMaillon représente un élément d'une chaîne d'ADN.
* Chaque maillon contient une base et une référence au maillon suivant.
*/
public class MonMaillon {
private Base contenu;
private MonMaillon suivant;
// Constructeur pour créer un maillon avec une seule base.
public MonMaillon(Base base) {
contenu = base;
suivant = null;
}
// Constructeur pour créer un maillon et le relier à un autre maillon.
public MonMaillon(Base base, MonMaillon prochain) {
contenu = base;
suivant = prochain;
}
// Retourne la base contenue dans ce maillon.
public Base obtenirBase() {
return contenu;
}
// Retourne le maillon suivant dans la chaîne.
public MonMaillon obtenirSuivant() {
return suivant;
}
}