UFR de Mathématiques et d'Informatique |
IUP 1, DEUG 2, 2002/2003 |
Programmation orientée objet |
Travaux dirigés |
Séance 11, mai |
Colliers de booléens
Vous souhaitez réaliser pour votre
petit ami(e) un collier de booléens.
Vous écrivez pour cela une classe CollierDeBooleens.
1 Les booléens, version objets
Tout d'abord, vous implantez les booléens, en version objet.
La classe Booleen est la suivante :
public abstract class Booleen {
public abstract Booleen et (Booleen b) ;
public abstract Booleen ou (Booleen b) ;
public abstract Booleen non () ;
public abstract Booleen oux (Booleen b) ;
public abstract Booleen implique (Booleen b) ;
public abstract String toString () ;
}
Elle a deux sous-classes : Vrai et Faux.
La classe Vrai fournit l'attribut de classe VRAI,
et la classe Faux fournit l'attribut de classe FAUX.
L'exercice consiste à écrire ces sous-classes,
de façon à ce que le test suivant fonctionne convenablement :
public class TestBooleen {
public static void main (String args []) {
Booleen F = Faux.FAUX ;
Booleen V = Vrai.VRAI ;
Booleen unBooleen = ((F.ou(V)).et(F)).non() ; // non[(F ou V) et F]
System.out.println(unBooleen) ;
// devrait afficher : Vrai
System.out.println("F => V : " + F.implique(V)) ;
System.out.println("V => F : " + V.implique(F)) ;
System.out.println("F oux V : " + F.oux(V)) ;
System.out.println("F oux F : " + F.oux(F)) ;
System.out.println("V oux V : " + V.oux(V)) ;
Booleen A = V ;
Booleen B = F ;
Booleen resultat = (A.et(B)).implique(B.et(A.oux(B))) ;
System.out.println(resultat) ;
}
}
Pour indication, on donne ce à quoi devrait ressembler
le début de la classe Vrai :
public class Vrai extends Booleen {
private Vrai () {}
public final static Booleen VRAI = new Vrai () ;
public Booleen et(Booleen b) {
return b ;
}
...
}
2 Les files non bornées
Vous souhaitez à présent implanter la classe File des files non bornées,
en utilisant la classe Liste écrite en TP.
La classe File doit fournir les méthodes suivantes :
- public File () : crée une file vide.
- boolean estVide ()
- void ajouterEnQueue (Object o)
- Object tete ()
- Object supprimerTete ()
- int longueur ()
- File copie ()
- String toString ()
On rappelle les méthodes de la classe Liste :
- Liste () : création d'une liste vide.
- Liste (Object o) : création d'une liste à un élément.
- boolean estVide ()
- Liste ajouterEnTete (Object o)
- Object tete ()
- Liste queue ()
- String toString ()
- int longueur ()
- boolean contient (Object o)
- Liste ajouterEnQueue (Object o)
- Liste concat (Liste l2)
- Liste inverse ()
3 Les colliers de booléens
Vous pouvez enfin réaliser vos colliers de booléens.
Vous écrivez la classe CollierDeBooleens,
avec les méthodes publiques suivantes :
- CollierDeBooleens () : création d'un
collier sans booléens.
- void enfiler(Booleen b)
- CollierDeBooleens inverser() : change
les <<Vrai>> en <<Faux>> et inversement.
- String toString ()
Vous utilisez, pour l'implantation, une file non bornée :
private File leCollier ;
This document was translated from LATEX by
HEVEA.