POO - grand devoir 1 ● Pour ce projet vous allez travailler par équipes de 2-3
POO - grand devoir 1 ● Pour ce projet vous allez travailler par équipes de 2-3 personnes ●Le projet est à rendre sur la plateforme Moodle. S'il y a des problèmes lors du téléchargement vers ou depuis la plateforme, contactez par mail votre assistant des travaux pratiques : Iulia Stanica - iulia.stanica@gmail.com, Alexandru Bratosin - ioan.bratosin@gmail.com ●Date limite: 8eme semaine (Lundi, 22 novembre 8:00, affichée sur moodle) et présentée pendant le TP de cette semaine-la ● Vous devez être présent à la séance de TP respective pour recevoir les points ●Pour toute question concernant le sujet du projet ou les exigences, utiliser le groupe de Teams de POO ou envoyer un message sur le chat Travail avec: classes, relations, interfaces, comparateur/comparable, énumérations, exceptions, fichiers (lecture & ecriture) Implémenter un petit système qui simule les achats dans un centre commercial (mall). Lisez attentivement le texte, les verbes et les noms indiquent les classes et les relations entre elles! Tâches: • Implémenter les classes. • Tester vos implémentations dans une classe de test. De façon générale, on a plusieurs types d'éléments: - Les boutiques (vetements, librairie, supermarché) - Activités commerciales diverses - [ACD] (restaurants, cafés, cinéma etc.) - Les personnes (acheteurs, vendeurs, gardiens) - Les objets (vêtements, livres, aliments etc.) - Le décor (bancs, terrain de jeu, mannequins etc.) Chaque niveau (étage) du mall est décrit de la façon suivante : - Une carte, qui comprend boutiques, ACDs, décors et personnes - Un nombre (unique) du niveau Dans tous les cas (classes) : -vous pouvez utiliser autant d'attributs et de méthodes privées que vous jugez nécessaire; si c’est nécessaire d’ajouter une méthode publique ou protected, vous devez justifier la nécessité -créer un constructeur par défaut (sans paramètres). Details classes: ● La classe Élément est une classe abstraite. Les boutiques, les ACDs, les objets, les personnes et les décors sont des éléments. Cette classe doit contenir les méthodes publiques suivantes (vous devez établir lesquelles doivent être abstraites): ○ getDescription( ) qui retourne une chaîne de caractère décrivant l'élément. ○ setDescription( String s ) qui met à jour la description d'un élément . ○ getType() qui retourne le type de l'élément : BOUTIQUE, ACD, PERSONNE, OBJET ou DECOR. Vous devez utiliser une énumération pour ça. ● La classe Objet - chaque objet a un code unique, un prix, un VAT (TVA), une quantité totale disponible, une catégorie et une description. Les méthodes: ○ calculerPrixTVA() - calcule le prix avec les taxes inclus ○ calculerPrixQuantite (int quantite) - calcule le prix pour plusieurs objets achetés, incluant les taxes ○ verifieDisponibilite() - retourne vrai ou faux, si l’objet est disponible encore dans l’inventaire ou non ● La classe Boutique - chaque boutique doit avoir un code unique, un nom, un domaine, une surface en mètres carrés, des éléments de type décor, un nombre d'employés et une liste d'employés, un nombre d’objets et une liste d’objets. Chaque boutique a les méthodes suivants: ○ afficheInventaire() - retourne une chaîne décrivant les objets disponibles dans le boutique courant (nombres et noms) ○ embauchePersonne(Personne p) - embaucher un nouvel employé ○ virerPersonne(Personne p) - virer un employé du boutique ● La classe ACD - peut inclure les autres types d'activités déroulées dans un mall (restaurant, café, cinéma ou tout autre activité que vous désirez). C’est à vous de décider les attributs nécessaires, mais le nombrePlaces (disponibles) est obligatoire. La classe contient aussi les méthodes mentionnées dans la classe Boutique, et ajoute encore: ○ verifieDisponibilite() - retourne s’il y a encore des places disponibles (tables) ○ verifieDisponibilite(String film) - retourne s’il y a encore des billets disponibles à ce film ○ Etc. (tout autre fonction appropriée en fonction de l'activité) ● Les boutiques et les ACDs doivent implémenter l’interface Achetable, qui inclut les méthodes afficheInventaire(), embauchePersonne(Personne p), virerPersonne(Personne p). ● La classe Decor n'a aucun nouvel attribut ni d'autres méthodes que ceux mentionnés pour tous les éléments, mais penser à implémenter la méthode getType(). ● La classe Personne doit implémenter les méthodes publiques suivantes: ○ getName() qui retourne une chaîne de caractère (nom + prenom); ○ setName(Strings) qui met à jour le nom de la personne; ○ getRole() - qui retourne si c’est un acheteur, un employé, un gardien etc. Chaque acheteur a une liste d’endroits où il veut aller dans le mall (boutiques qu’il doit visiter, restaurants où il veut manger etc.) et une liste d’objets qu’il doit acheter. Le nombre d’endroits à visiter et le nombre d’objets à acheter doivent être limités! Après avoir effectué une action d’achat d'une boutique ou de visite d’un ACD, les listes d’endroits et d’objets doivent être mises à jour. Chaque liste peut être triée en fonction de critères considérés importants (certainement le nom, et aussi d’autres choisis par vous - au moins un autre critère pour chaque liste!). Utilisez Comparable ou Comparator pour faire le tri. Implémenter les méthodes supplémentaires si on parle d’un acheteur: -afficheEndroits() retourne une chaîne de caractère décrivant tous les endroits qu’il veut visiter -acheteObjet(Objet i) ajoute l'objet i aux achats s’il y a encore de place disponible -retireObjet(int numero) retire l'objet avec l’indice numero des achats (on renonce à l'acheter) -visiteACD() - fait une activité du domaine ACD; vous pouvez ajouter des arguments a la méthode si nécessaire Obs: Pour la méthode acheteObjet(Objet i), vous devez gérer le cas où on essaye d’ajouter un objet à une personne qui est déjà entièrement chargée en utilisant les exceptions . ● La classe Niveau qui doit comporter les attributs et les méthodes suivantes : ○ Attributs: -carte : tableau d'Elements à deux dimensions (10 x 10 cases) - chaque case peut contenir l’un des éléments mentionnés ci-dessus -ACH : référence sur un objet de type Personne (l’acheteur) -nombre : le nombre du niveau (étage) ○ Methodes: -void setElement(int i,int j, Element k) : Ajoute un élément k à l'emplacement [i,j] de la carte (une case ne peut contenir qu'un seul objet à la fois). -Element getElement(i,j) : retourne une référence de l'élément de la case [i,j] -String decritCarte(int i, int j) : retourne la description de l'élément contenu dans la case, ou le texte « case vide » si la case ne contient pas d'éléments. -String decritCarte( ) : retourne la description, sous forme de chaîne de caractères, de chaque case de la carte (avec toujours « case vide » pour décrire les cases qui ne contiennent pas d'éléments). -Personne getAcheteur( ) : retourne une référence sur l’acheteur -void setAcheteur(Personne p) : donne une nouvelle valeur à ACH. -int getNombre( ) : retourne une référence sur le nombre du niveau. -void setNombre(int t) : change le nombre du niveau. ○ Constructeurs: -Vous implémentez un constructeur par défaut, qui crée un acheteur -Vous implémentez un constructeur ayant un acheteur pour paramètre (personne qui sera donc créé hors du constructeur) Dans la classe de test, si l’utilisateur appuie sur les 4 boutons correspondant au déplacement (W / A / S / D), l’acheteur va se déplacer (haut / gauche / bas / droit) et va interagir conformément à l'élément correspondant à la nouvelle casse ou il se trouve (ex: il va acheter un objet s’il est arrivé dans un boutique désiré, va manger au resto, va s’asseoir sur un banc etc.). La liste des endroits et la liste des achats doivent être lus des 2 fichiers. Le trajet fait par l’acheteur (les éléments qu’il “visite”) doit être sauvegardé et affiché dans un fichier). Points: - Classes Element, Objet, Decor, Boutique, ACD - 1.5 p (0.3 chacun) - Classe Personne - 1.5p - Classe Niveau - 1.5p - Classe Test - 1p - Lecture et écriture fichier - 1p - Comparable / Comparator - 1p - Utilisation Enum - 0.25p - Utilisation Exception fichiers & verification inventaire max - 0.25p - Classe & méthodes abstraite, interface - 1p - Utilisation correcte de tous les verifications, ajout méthodes nécessaires supplémentaires - 1p uploads/Geographie/ poo-grand-devoir-1.pdf
Documents similaires










-
30
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Fev 21, 2022
- Catégorie Geography / Geogra...
- Langue French
- Taille du fichier 0.0683MB