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
-21
View File
@@ -1,21 +0,0 @@
public class Exemple {
public static void main(String[] args) {
MonBrin brin = new MonBrin();
brin.ajouterFin(Base.G);
brin.ajouterFin(Base.C);
brin.ajouterFin(Base.T);
brin.ajouterFin(Base.T);
brin.ajouterFin(Base.A);
brin.ajouterFin(Base.G);
System.out.println(brin); // gcttag
Iterator<Base> it = brin.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
}
Binary file not shown.
Binary file not shown.
+29
View File
@@ -0,0 +1,29 @@
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("Affichage en parcourant les éléments un par un");
System.out.println("Utilisez cette logique pour implémenter l'interface Iterator de java.util");
MonMaillon actuel = b.getDebut();
while (actuel != null){
System.out.println(actuel.getBase());
actuel = actuel.getApresMaillon();
}
}
}
Binary file not shown.
+27
View File
@@ -0,0 +1,27 @@
public class MonBrin {
// Attribut privé qui représente le début du brin (chaîne de maillons)
private MonMaillon debut;
/**
* Constructeur de la classe MonBrin.
* Ce constructeur initialise un brin à partir du premier maillon donné en paramètre.
*
* @param p Le premier maillon du brin
*/
public MonBrin(MonMaillon p) {
// Associe le maillon donné au début du brin
this.debut = p;
// throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
}
/**
* Méthode getter pour obtenir le premier maillon du brin.
*
* @return Le maillon qui représente le début du brin
*/
public MonMaillon getDebut() {
// Retourne le maillon stocké dans l'attribut debut
return this.debut;
// throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
}
}
Binary file not shown.
+30
View File
@@ -0,0 +1,30 @@
public class MonMaillon {
private Base valeur;
private MonMaillon suivant;
//Le constructeur de base retourne un brin à une base;
public MonMaillon(Base b){
this.valeur = b;
//throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
}
// Le constructeur évolué ajoute une base à un brin.
public MonMaillon(Base b, MonMaillon l){
this.valeur = b;
this.suivant = l;
//throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
}
public Base getBase(){
return this.valeur;
//throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
}
public MonMaillon getApresMaillon(){
return this.suivant;
//throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
}
}
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;
}
}
-48
View File
@@ -1,48 +0,0 @@
public class MonBrin {
private MonMaillon head;
public MonBrin() {
this.head = null;
}
// Ajouter une base au début du brin
public void ajouterDebut(Base b) {
head = new MonMaillon(b, head);
}
// Ajouter une base à la fin du brin
public void ajouterFin(Base b) {
if (head == null) {
head = new MonMaillon(b, null);
return;
}
MonMaillon courant = head;
while (courant.getNext() != null) {
courant = courant.getNext();
}
courant.setNext(new MonMaillon(b, null));
}
public MonMaillon getHead() {
return head;
}
// Fournir un itérateur maison
public Iterator<Base> iterator() {
return new MonBrinIterator(this.head);
}
// Pour affichage du brin entier
@Override
public String toString() {
String s = "";
MonMaillon courant = head;
while (courant != null) {
s += courant.getBase().toString();
courant = courant.getNext();
}
return s.toLowerCase(); // affiche : gcttag
}
}
-21
View File
@@ -1,21 +0,0 @@
public class MonMaillon {
private Base base;
private MonMaillon next;
public MonMaillon(Base b, MonMaillon suivant) {
this.base = b;
this.next = suivant;
}
public Base getBase() {
return base;
}
public MonMaillon getNext() {
return next;
}
public void setNext(MonMaillon n) {
this.next = n;
}
}