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)