Projets pour freelances & agences web

Retrouvez l'actualité des projets pour freelances et agences web.

Recherche développeur Java

Posté le 21/12/2022 à 04:00 - Budget : 0 - 500

Vous devez développer une application de dessin vectoriel qui permet de tracer des formes sur base de primitives
(lignes, triangles, rectangles, cercles) qui peuvent chacune avoir une couleur. Chaque primitive dessinée est représentée
par un objet, et il est aussi possible de créer des groupes de primitives, et ce de façon hiérarchique. Vous exploiterez
donc le design pattern Composite. Le client (classe DrawingBoard) possèdera une référence à un composite racine.
Le dessin complet pourra être visité et les éléments feuilles (formes primitives) ainsi que les composites (groupes
de formes) implémenteront donc une interface Element disposant d’une méthode accept(). Cette forme de conception
a été choisie pour faciliter l’extension des fonctionnalités. Différents visiteurs pourront ainsi être implémentés et ils
auront tous une mission différente. Vous développerez une classe ConcreteRecolourVisitor qui permettra de modifier
les couleurs des objets. Il implémentera une interface Visitor disposant de deux méthodes visit(), une pour les
PrimitiveShape, et une pour les CompositeShape. Nous souhaitons pouvoir contrôler la façon dont les couleurs sont
modifiées, c’est-à-dire les objet sur lesquels cette recolorisation s’applique. La classe utilisera donc une surcharge de
son constructeur, afin d’en avoir 3 différents :
- ConcreteRecolourVisitor(Colour newColour) : la nouvelle couleur demandée est appliquée à tous les objets
- ConcreteRecolourVisitor(Colour newColour, Colour fromColour) : le nouvelle couleur demandée est appliquée
seulement aux objets qui ont une couleur donnée
- ConcreteRecolourVisitor(Colour newColour, COlour fromColour, ShapeType type) : le nouvelle couleur demandée
est appliquée seulement aux objets qui ont une couleur donnée et qui sont d’une forme particulière.
Aucun code source de démarrage n’est donné pour cette fois. Mais vous ne partez pas d’une page blanche car un
premier diagramme des classes vous est donné. Il reprend la classe client et les classes du design pattern composite.
Nous vous demandons :
1) de compléter le diagramme des classes afin qu’il comprenne aussi les classes nécessaires au design pattern
Visiteur.
2) de coder en Java ces différentes classes, ainsi qu’une fonction main démontrant comment instancier un dessin,
et comment modifier les couleurs de certains objets selon les 3 modes de recolorisation proposés.
Notez qu’il ne vous est pas demandé d’implémenter du code pour le rendu graphique de ce dessin. Nous travaillons
juste en mode console.
3) de répondre aux questions suivantes par quelques explications brèves :
- 3.1) Si vous deviez ajouter un nouveau visiteur dans votre code, quelles sont les classes à modifier ?
- 3.2) Si vous deviez ajouter une nouvelle forme (sous-classe de PrimitiveShape), que faut-il modifier dans votre
code pour que les visiteurs fonctionnent toujours ? Expliquez brièvement.
- 3.3) Pourquoi est-ce CompositeShape qui contient des objets de type Shape et pas l’inverse ?
- 3.4) Pourquoi Root est-elle une sous-classe de CompositeShape et pas de PrimitiveShape ?
Déposer votre devoir sur moodle dans un zip unique contenant le diagramme des classes Visual Paradigm, le code
Java, et un fichier texte avec vos réponses.
1

Accéder à la fiche du projet

Autres projets susceptibles de vous intéresser