Compare commits

..

2 Commits

Author SHA1 Message Date
EmmanuelTiamzon
d1f9fd7dad ajout du tp5 trop bien la renault 2026-02-13 12:33:01 +01:00
EmmanuelTiamzon
e6c28b79f9 update 2026-02-11 15:00:39 +01:00
22 changed files with 746 additions and 27 deletions

View File

@@ -7,30 +7,23 @@
Cette version a un problème : la navigation n'est pas raisonnable
*/
public class MonBrin implements Iterator<Base> {
public class MonBrin {
private MonMaillon p;
private MonMaillon debut;
//Le constructeur fabrique un brin à partir du premier maillon p;
public MonBrin(MonMaillon p){
this.p = p;
MonMaillon s = new MonMaillon(Base.G/*, null*/);
s = MonMaillon(Base.A, s);
s = MonMaillon(Base.T, s);
s = MonMaillon(Base.T, s);
s = MonMaillon(Base.C, s);
s = MonMaillon(Base.G, s);
this.debut = p;
}
public MonMaillon getDebut(){
return debut;
return this.debut;
}
/** et pour naviguer?
On pourrait implémenter l'interface iterator de java.util ici
**/
public
}

View File

@@ -11,12 +11,14 @@ import java.util.NoSuchElementException;
*/
public class MonBrin implements Iterator<Base>{
private MonMaillon debut;
public MonBrin(MonMaillon p){
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
this.debut = p;
}
public MonMaillon getDebut(){
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
return this.debut;
}
@@ -25,18 +27,20 @@ public class MonBrin implements Iterator<Base>{
// voir https://stackoverflow.com/questions/94361/when-do-you-use-javas-override-annotation-and-why
@Override
public boolean hasNext(){
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
if(this.debut != null){
return true;
} else {
return false;
}
}
@Override
public Base next() {
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
throw new NoSuchElementException();
//throw new NoSuchElementException("The iteration has no more elements ");
if(hasNext()){
Base b = this.debut.getBase();
this.debut = this.debut.getSuiteMaillon();
return b;
}
}
}

View File

@@ -6,21 +6,24 @@
*/
public class MonMaillon {
private MonMaillon suivant;
private Base contenu;
public MonMaillon(Base b){
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
this.contenu = b;
}
public MonMaillon(Base b, MonMaillon l){
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
this.contenu = b;
this.suivant = l;
}
public Base getBase(){
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
return this.contenu;
}
public MonMaillon getSuiteMaillon(){
throw new UnsupportedOperationException("cette méthode n'est pas implémentée");
return this.suivant;
}
}

View File

@@ -0,0 +1,59 @@
import java.util.Set;
import java.util.LinkedHashSet;
import java.util.Objects;
/** feuille du motif composite */
public class Chef extends Person {
private Set<Person> listeSubalterne;
public boolean addSubalterne(Person p){
return this.listeSubalterne.add(p);
}
/** constructeur
*
* @param n fun factor
*
*/
public Chef(int n){
super(n);
// d'autres choses peut-être.
this.listeSubalterne = new LinkedHashSet<Person>();
}
/**
* La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi.
*
* @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
*
*/
public int bestPartyWithoutMe(){
int without = 0;
for(Person p : this.listeSubalterne) {
without += p.bestParty();
}
return without;
}
/**
* La meilleure fête est soit sans moi (c'est l'union des meilleures fêtes de mes subalternes).
* soit c'est la meilleure fête avec moi.
*
* @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
*
*/
public int bestParty(){
int sum = 0;
for(Person p : this.listeSubalterne) {
sum += p.bestPartyWithoutMe();
}
return Math.max(bestPartyWithoutMe(), sum + this.getFunFactor());
}
}

View File

@@ -0,0 +1,36 @@
public class Exemple {
public static void main(String[] args) {
// bar 2
// foo 5
// titi 4
// tata 4
// toto 6
// tete 6
Travailleur titi = new Travailleur(4);
Travailleur tata = new Travailleur(4);
Travailleur toto = new Travailleur(6);
Chef foo = new Chef(5);
foo.addSubalterne(titi);
foo.addSubalterne(tata);
foo.addSubalterne(toto);
System.out.println(foo.bestParty());
System.out.println(foo.bestPartyWithoutMe());
Travailleur tete = new Travailleur(6);
// System.out.println(tete.bestParty());
// System.out.println(tete.bestPartyWithoutMe());
Chef bar = new Chef(2);
bar.addSubalterne(foo);
bar.addSubalterne(tete);
System.out.println(bar.bestParty());
//System.out.println(bar.bestPartyWithoutMe());
}
}

View File

@@ -0,0 +1,33 @@
public class Exemple2 {
public static void main(String[] args) {
// Exemple inspiré question Thibault B.
// 1
// 10
// 1
// 1
// 10
// 3
// 4
Travailleur a = new Travailleur(3);
Travailleur b = new Travailleur(4);
Chef c = new Chef(10);
c.addSubalterne(a);
c.addSubalterne(b);
Chef d = new Chef(1);
d.addSubalterne(c);
Chef e = new Chef(1);
e.addSubalterne(d);
Chef f = new Chef(10);
f.addSubalterne(e);
Chef g = new Chef(1);
g.addSubalterne(f);
System.out.println(g.bestParty());
}
}

View File

@@ -0,0 +1,43 @@
public class Exemple3 {
public static void main(String[] args) {
Travailleur a = new Travailleur(3);
Travailleur b = new Travailleur(4);
Chef c = new Chef(10);
c.addSubalterne(a);
c.addSubalterne(b);
Chef d = new Chef(1);
d.addSubalterne(c);
Chef e = new Chef(1);
e.addSubalterne(d);
Chef f = new Chef(10);
f.addSubalterne(e);
Chef g = new Chef(1);
g.addSubalterne(f);
Travailleur titi = new Travailleur(4);
Travailleur tata = new Travailleur(4);
Travailleur toto = new Travailleur(6);
Chef foo = new Chef(5);
foo.addSubalterne(titi);
foo.addSubalterne(tata);
foo.addSubalterne(toto);
Chef bar = new Chef(2);
bar.addSubalterne(foo);
Travailleur tete = new Travailleur(6);
bar.addSubalterne(tete);
Chef x = new Chef(2);
x.addSubalterne(g);
x.addSubalterne(bar);
Chef y = new Chef(39);
y.addSubalterne(x);
System.out.println(y.bestParty());
}
}

View File

@@ -0,0 +1,44 @@
/** "Les personnes sont soit des chefs, soit des travailleurs" */
public abstract class Person{
/**
* valeur indiquant le niveau de coolitude de la personne
*/
private int funFactor;
/**
* @return la valeur indiquant le niveau de coolitude de la personne. plus cete valeur est grande, plus la personne contribue à améliorer l'ambiance dans une fête.
*
*/
public int getFunFactor(){
return this.funFactor;
}
/**
* constructeur
*
* <b>NB</b>. Cette méthode ne peut pas être appelé directement pour instancier un objet car la classe est abstraite, mais sert dans les constructeurs de classes dérivées.
*
* @see Travailleur, Chef
*/
//
public Person(int n){
if (n < 0)
throw new IllegalArgumentException("Le fun facteur est positif ou nul, vous avez proposé " + n);
this.funFactor = n;
}
/**
*
* @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
*/
public abstract int bestPartyWithoutMe();
/**
*
* @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
*/
public abstract int bestParty();
}

View File

@@ -0,0 +1,34 @@
/** feuille du motif composite */
public class Travailleur extends Person {
/** constructeur
*
* @param n fun factor
*
*/
public Travailleur(int n){
super(n);
}
/**
*
* @return fête sans le travailleur
*/
@Override
public int bestPartyWithoutMe(){
return 0;
}
/**
* @return fête avec le travailleur
*/
@Override
public int bestParty(){
return this.getFunFactor();
}
}

View File

@@ -0,0 +1,48 @@
import java.util.LinkedHashSet;
import java.util.Objects;
/** feuille du motif composite */
public class Chef extends Person {
public boolean addSubalterne(Person p){
}
/** constructeur
*
* @param n fun factor
*
*/
public Chef(int n){
super(n);
// d'autres choses peut-être.
}
/**
* La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi.
*
* @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
*
*/
public int bestPartyWithoutMe(){
// to do
}
/**
* La meilleure fête est soit sans moi (c'est l'union des meilleures fêtes de mes subalternes).
* soit c'est la meilleure fête avec moi.
*
* @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
*
*/
public int bestParty(){
// to do
}
}

View File

@@ -0,0 +1,36 @@
public class Exemple {
public static void main(String[] args) {
// bar 2
// foo 5
// titi 4
// tata 4
// toto 6
// tete 6
Travailleur titi = new Travailleur(4);
Travailleur tata = new Travailleur(4);
Travailleur toto = new Travailleur(6);
Chef foo = new Chef(5);
foo.addSubalterne(titi);
foo.addSubalterne(tata);
foo.addSubalterne(toto);
System.out.println(foo.bestParty());
System.out.println(foo.bestPartyWithoutMe());
Travailleur tete = new Travailleur(6);
// System.out.println(tete.bestParty());
// System.out.println(tete.bestPartyWithoutMe());
Chef bar = new Chef(2);
bar.addSubalterne(foo);
bar.addSubalterne(tete);
System.out.println(bar.bestParty());
//System.out.println(bar.bestPartyWithoutMe());
}
}

View File

@@ -0,0 +1,33 @@
public class Exemple2 {
public static void main(String[] args) {
// Exemple inspiré question Thibault B.
// 1
// 10
// 1
// 1
// 10
// 3
// 4
Travailleur a = new Travailleur(3);
Travailleur b = new Travailleur(4);
Chef c = new Chef(10);
c.addSubalterne(a);
c.addSubalterne(b);
Chef d = new Chef(1);
d.addSubalterne(c);
Chef e = new Chef(1);
e.addSubalterne(d);
Chef f = new Chef(10);
f.addSubalterne(e);
Chef g = new Chef(1);
g.addSubalterne(f);
System.out.println(g.bestParty());
}
}

View File

@@ -0,0 +1,43 @@
public class Exemple3 {
public static void main(String[] args) {
Travailleur a = new Travailleur(3);
Travailleur b = new Travailleur(4);
Chef c = new Chef(10);
c.addSubalterne(a);
c.addSubalterne(b);
Chef d = new Chef(1);
d.addSubalterne(c);
Chef e = new Chef(1);
e.addSubalterne(d);
Chef f = new Chef(10);
f.addSubalterne(e);
Chef g = new Chef(1);
g.addSubalterne(f);
Travailleur titi = new Travailleur(4);
Travailleur tata = new Travailleur(4);
Travailleur toto = new Travailleur(6);
Chef foo = new Chef(5);
foo.addSubalterne(titi);
foo.addSubalterne(tata);
foo.addSubalterne(toto);
Chef bar = new Chef(2);
bar.addSubalterne(foo);
Travailleur tete = new Travailleur(6);
bar.addSubalterne(tete);
Chef x = new Chef(2);
x.addSubalterne(g);
x.addSubalterne(bar);
Chef y = new Chef(39);
y.addSubalterne(x);
System.out.println(y.bestParty());
}
}

View File

@@ -0,0 +1,44 @@
/** "Les personnes sont soit des chefs, soit des travailleurs" */
public abstract class Person{
/**
* valeur indiquant le niveau de coolitude de la personne
*/
private int funFactor;
/**
* @return la valeur indiquant le niveau de coolitude de la personne. plus cete valeur est grande, plus la personne contribue à améliorer l'ambiance dans une fête.
*
*/
public int getFunFactor(){
return this.funFactor;
}
/**
* constructeur
*
* <b>NB</b>. Cette méthode ne peut pas être appelé directement pour instancier un objet car la classe est abstraite, mais sert dans les constructeurs de classes dérivées.
*
* @see Travailleur, Chef
*/
//
public Person(int n){
if (n < 0)
throw new IllegalArgumentException("Le fun facteur est positif ou nul, vous avez proposé " + n);
this.funFactor = n;
}
/**
*
* @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
*/
public abstract int bestPartyWithoutMe();
/**
*
* @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
*/
public abstract int bestParty();
}

View File

@@ -0,0 +1,31 @@
/** feuille du motif composite */
public class Travailleur extends Person {
/** constructeur
*
* @param n fun factor
*
*/
public Travailleur(int n){
super(n);
}
/**
*
* @return fête sans le travailleur
*/
public int bestPartyWithoutMe(){
// return null;
}
/**
* @return fête avec le travailleur
*/
public int bestParty(){
// return null;
}
}

View File

@@ -0,0 +1,48 @@
import java.util.LinkedHashSet;
import java.util.Objects;
/** feuille du motif composite */
public class Chef extends Person {
public boolean addSubalterne(Person p){
}
/** constructeur
*
* @param n fun factor
*
*/
public Chef(int n){
super(n);
// d'autres choses peut-être.
}
/**
* La meilleure fête avec moi, c'est la meilleure fête sans mes subalternes pour eux plus moi.
*
* @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
*
*/
public int bestPartyWithoutMe(){
// to do
}
/**
* La meilleure fête est soit sans moi (c'est l'union des meilleures fêtes de mes subalternes).
* soit c'est la meilleure fête avec moi.
*
* @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
*
*/
public int bestParty(){
// to do
}
}

View File

@@ -0,0 +1,36 @@
public class Exemple {
public static void main(String[] args) {
// bar 2
// foo 5
// titi 4
// tata 4
// toto 6
// tete 6
Travailleur titi = new Travailleur(4);
Travailleur tata = new Travailleur(4);
Travailleur toto = new Travailleur(6);
Chef foo = new Chef(5);
foo.addSubalterne(titi);
foo.addSubalterne(tata);
foo.addSubalterne(toto);
System.out.println(foo.bestParty());
System.out.println(foo.bestPartyWithoutMe());
Travailleur tete = new Travailleur(6);
// System.out.println(tete.bestParty());
// System.out.println(tete.bestPartyWithoutMe());
Chef bar = new Chef(2);
bar.addSubalterne(foo);
bar.addSubalterne(tete);
System.out.println(bar.bestParty());
//System.out.println(bar.bestPartyWithoutMe());
}
}

View File

@@ -0,0 +1,33 @@
public class Exemple2 {
public static void main(String[] args) {
// Exemple inspiré question Thibault B.
// 1
// 10
// 1
// 1
// 10
// 3
// 4
Travailleur a = new Travailleur(3);
Travailleur b = new Travailleur(4);
Chef c = new Chef(10);
c.addSubalterne(a);
c.addSubalterne(b);
Chef d = new Chef(1);
d.addSubalterne(c);
Chef e = new Chef(1);
e.addSubalterne(d);
Chef f = new Chef(10);
f.addSubalterne(e);
Chef g = new Chef(1);
g.addSubalterne(f);
System.out.println(g.bestParty());
}
}

View File

@@ -0,0 +1,43 @@
public class Exemple3 {
public static void main(String[] args) {
Travailleur a = new Travailleur(3);
Travailleur b = new Travailleur(4);
Chef c = new Chef(10);
c.addSubalterne(a);
c.addSubalterne(b);
Chef d = new Chef(1);
d.addSubalterne(c);
Chef e = new Chef(1);
e.addSubalterne(d);
Chef f = new Chef(10);
f.addSubalterne(e);
Chef g = new Chef(1);
g.addSubalterne(f);
Travailleur titi = new Travailleur(4);
Travailleur tata = new Travailleur(4);
Travailleur toto = new Travailleur(6);
Chef foo = new Chef(5);
foo.addSubalterne(titi);
foo.addSubalterne(tata);
foo.addSubalterne(toto);
Chef bar = new Chef(2);
bar.addSubalterne(foo);
Travailleur tete = new Travailleur(6);
bar.addSubalterne(tete);
Chef x = new Chef(2);
x.addSubalterne(g);
x.addSubalterne(bar);
Chef y = new Chef(39);
y.addSubalterne(x);
System.out.println(y.bestParty());
}
}

View File

@@ -0,0 +1,44 @@
/** "Les personnes sont soit des chefs, soit des travailleurs" */
public abstract class Person{
/**
* valeur indiquant le niveau de coolitude de la personne
*/
private int funFactor;
/**
* @return la valeur indiquant le niveau de coolitude de la personne. plus cete valeur est grande, plus la personne contribue à améliorer l'ambiance dans une fête.
*
*/
public int getFunFactor(){
return this.funFactor;
}
/**
* constructeur
*
* <b>NB</b>. Cette méthode ne peut pas être appelé directement pour instancier un objet car la classe est abstraite, mais sert dans les constructeurs de classes dérivées.
*
* @see Travailleur, Chef
*/
//
public Person(int n){
if (n < 0)
throw new IllegalArgumentException("Le fun facteur est positif ou nul, vous avez proposé " + n);
this.funFactor = n;
}
/**
*
* @return retourne la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique, mais pas elle.
*/
public abstract int bestPartyWithoutMe();
/**
*
* @return la valeur de la meilleure fête en invitant seulement les gens dont cette personne est le ou la supérieure hiérarchique (peut-être avec elle).
*/
public abstract int bestParty();
}

View File

@@ -0,0 +1,31 @@
/** feuille du motif composite */
public class Travailleur extends Person {
/** constructeur
*
* @param n fun factor
*
*/
public Travailleur(int n){
super(n);
}
/**
*
* @return fête sans le travailleur
*/
public int bestPartyWithoutMe(){
// return null;
}
/**
* @return fête avec le travailleur
*/
public int bestParty(){
// return null;
}
}

Binary file not shown.