This commit is contained in:
2025-12-10 00:14:53 +01:00
parent df9520821a
commit 41df0a89b9
31 changed files with 579 additions and 0 deletions

Binary file not shown.

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.

View File

@@ -0,0 +1,35 @@
// 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());
}
// ajouter du code ici pour gérer les questions en plus
// (simulation de plusieurs navigations successives)
// (simulation de plusieurs navigations simultanées)
}
}

Binary file not shown.

View File

@@ -0,0 +1,55 @@
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
simplement chaînée contenant pour chaque maillon le nom de la base.
On n'utilise pas java.util (pas de ArrayList, etc.) et on recode tout.
Dans cet exercice, cette classe implémente aussi Iterator<Base> :
elle sait donc se parcourir elle-même.
*/
public class MonBrin implements Iterator<Base> {
// Premier maillon du brin
private MonMaillon debut;
// Maillon courant pour la navigation (iterator)
private MonMaillon courant;
// Le constructeur fabrique un brin à partir du premier maillon p;
public MonBrin(MonMaillon p){
this.debut = p;
this.courant = p; // l'itération commence au début du brin
}
public MonMaillon getDebut(){
return this.debut;
}
/** Méthodes de l'interface Iterator<Base> */
@Override
public boolean hasNext() {
return this.courant != null;
}
@Override
public Base next() {
if (this.courant == null) {
throw new NoSuchElementException("Plus de base dans ce brin");
}
Base valeur = this.courant.getBase();
this.courant = this.courant.getSuiteMaillon();
return valeur;
}
@Override
public void remove() {
// On ne gère pas la suppression dans ce TP
throw new UnsupportedOperationException("remove() n'est pas supporté");
}
}

Binary file not shown.

View File

@@ -0,0 +1,36 @@
/**
MonMaillon code un maillon d'un brin d'ADN.
Plusieurs instances reliées convenablement forment une structure
simplement chaînée contenant pour chaque maillon le nom de la base.
On n'utilise pas java.util et on recode tout.
*/
public class MonMaillon {
// La base stockée dans ce maillon
private Base base;
// Le maillon suivant dans la chaîne (null si fin du brin)
private MonMaillon suite;
// Le constructeur de base retourne un brin à une base;
public MonMaillon(Base b){
this.base = b;
this.suite = null;
}
// Le constructeur évolué ajoute une base à un brin.
public MonMaillon(Base b, MonMaillon l){
this.base = b;
this.suite = l;
}
public Base getBase(){
return this.base;
}
public MonMaillon getSuiteMaillon(){
return this.suite;
}
}