POO TD/TP 4

Transcription

POO TD/TP 4
POO TD/TP 4
Exercice 1
Modiez le programme an que la classe
OperateurNAire a été dénie.
Somme et Produit. Les trois méthodes de la
tionde l'interface
Dans l'exercice 2 du TD 3, une classe abstraite
Elle factorise le code des méthodes
classe
OperateurNAire
classes
sont
evaluerVide, evaluerBinaire
et
symbole.
OperateurNAire
utilise une stratégie
pour eectuer le calcul et la représentation. Une stratégie est une implémenta-
luerBinaire
et
OperatorStrategy qui contient les trois méthodes symbole, eva-
evaluerVide.
Vous devez implémenter le diagramme de classes
suivant :
Les
Somme et Produit étendent la classe OperateurNAire et implémentent les
trois méthodes abstraites. Nous sommes donc dans la conguration suivante :
«interface»
Formule
+ representer() : String
+ evaluer() : double
*
Variable
«interface»
Formule
+ representer() : String
+ evaluer() : double
OperateurNAire
- name : String
- value : double
- strategy : OperatorStrategy
- f : Formule[]
+ Variable(name : String, value : double)
+ representer() : String
+ evaluer() : double
+ set(v : double)
+ OperateurNAire(f : Formule[], s : OperatorStrategy)
+ OperateurNAire(f1 : Formule, f2 : Formule, s : OperatorStrategy)
+ representer() : String
+ evaluer() : double
*
OperateurNAire
Variable
«interface»
OperatorStrategy
- f : Formule[]
- name : String
- value : double
+ OperateurNAire(f : Formule[])
+ OperateurNAire(f1 : Formule, f2 : Formule)
+ representer() : String
+ evaluer() : double
# symbole() : char
# evaluerBinaire(a : double, b : double) : double
# evaluerVide() : double
+ Variable(name : String, value : double)
+ representer() : String
+ evaluer() : double
+ set(v : double)
+ symbole() : char
+ evaluerBinaire(a : double, b : double) : double
+ evaluerVide() : double
Produit
Somme
+ Produit(f : Formule[])
+ Produit(f1 : Formule, f2 : Formule)
# symbole() : char
# evaluerBinaire(a : double, b : double) : double
# evaluerVide() : double
+ Somme(f : Formule[])
+ Somme(f1 : Formule, f2 : Formule)
# symbole() : char
# evaluerBinaire(a : double, b : double) : double
# evaluerVide() : double
1
SumStrategy
ProdStrategy
+ SumStrategy()
+ symbole() : char
+ evaluerBinaire(a : double, b : double) : double
+ evaluerVide() : double
+ ProdStrategy()
+ symbole() : char
+ evaluerBinaire(a : double, b : double) : double
+ evaluerVide() : double
Exercice 2
Nous souhaitons réaliser un composant graphique
ShapePanel
qui permet
d'acher une collection de formes à l'écran. Les formes sont modélisées par
des classes qui étendent l'interface
Shape. Les objets de l'interface Shape
ShapePanel en utilisant la méthode
peuvent être ajoutés dans une instance de
add(Shape s).
abstraite
Chaque forme peut être décorée par une extension de la classe
Decorator qui implémente l'interface Shape. Deux décorateurs doivent
ShapePanel
être implémentés :
BorderDecorator ache un cercle autour des points de la forme.
CenterDecorator ache un cercle autour du centre de la forme.
- shapes : ArrayList<Shape>
+ ShapePanel()
+ add(p : Shape)
# paintComponent(g : Graphics)
*
«interface»
Shape
+ paint(g : Graphics)
+ getNumberOfPoints() : int
+ getPoint(i : int) : Point
AbstractShape
Decorator
- points : List<Point>
# decoratedShape : Shape
+ AbstractShape()
# addPoint(p : Point)
+ getPoint(i : int) : Point
+ getNumberOfPoints() : int
+ paint(g : Graphics)
+ Decorator(decoratedShape : Shape)
+ paint(g : Graphics)
+ getNumberOfPoints() : int
+ getPoint(i : int) : Point
# paintDecoration(g : Graphics)
Polygon
Rectangle
- color : Color
- color : Color
+ Polygon(color : Color, points : List<Point>)
+ paint(g : Graphics)
+ Rectangle(p0 : Point, p1 : Point, color : Color)
+ paint(g : Graphics)
CenterDecorator
- radius : int
- color : Color
+ CenterDecorator(s : Shape, radius : int, color : Color)
- getCenter() : Point
# paintDecoration(g : Graphics)
2
BorderDecorator
- radius : int
- color : Color
+ BorderDecorator(s : Shape, radius : int, color : Color)
# paintDecoration(g : Graphics)

Documents pareils