A Java project developed by students during the Java course taught at Université Paris-Dauphine (in MIDO L3 Apprentissage).
The code is hereby published under the MIT License, with their permission.
Pour cette première itération, notre but était de partir d’un projet propre, lisible et compréhensible par tous. Maintenant que cela est fait, nous allons commencer la deuxième itération. (Aucun besoin de faire des tests unitaires en plus par exemple)
Après avoir pris connaissance des remarques sur le départ du projet et avoir compris les enjeux des focntionnalités proposées, voilà comment nous avons décidé de travailler pendant cette itération :
- 1er duo
-
Développer un GUI qui montre à l’utilisateur tous les appartements disponibles dans un répertoire donné en paramètre, triés selon l’utilité de l’utilisateur (fournie dans un fichier dans le même répertoire). L’utilisateur peut cliquer sur un appartement et voit sa description
- 2e duo
-
Rendre plus générales les fonctions d’utilité des utilisateurs : linéaires par morceaux
- 3e duo
-
Générer aléatoirement des annonces d’appartements
Cela permettra de tester les fonctionnalités liées à l'utilité de manière plus impartiale.
Groupes et Pull Requests associés :
Amir : PR #19 (anciennement #9)
Zeina et Alexis : PR #8 #19 (anciennement #15)
Farouk et Aissatou : PR #21 (anciennement #17)
Sandra et Laurence : PR #6 #14
1er Duo : Développer un GUI qui affiche d’une liste d’appartements à l’utilisateur + tri des appartement en fonction de l’utilité de l’utilisateur
2eme Duo : Ajoute des photos comme attributs d’un appartement + affichage des photos
3eme Duo : Tester la classe ApartmentValueFunction et ses méthodes, y inclure les nouvelles méthodes (function d’utilité liénaire par palier) & Ajouter l’utilité de localisation par rapport aux services (gare, supermarché etc …)
Une méthode permettant à l’utilisateur de définir son utilité existe déjà.
Bilan de l’itération 3 :
Le premier duo, composé de Amir et Alexis, s’est occupé des fonctions suivantes: - génération aléatoire d’une instance de ApartmentValueFunction (PR#25) - création d’une classe ApartmentFilter pour filtrer des appartements par attributs (PR#27) - correction des problèmes de generateRandom de l’itération 2 (en collaboration avec Zeina) (PR#24) - formattage du code concernant l’utilité pour avoir un esprit de programmation défensive (PR#26) - création de la classe MultiPartialValueFunction (PR#26)
Le deuxième duo, composé de Aïssatou et Zeina, s’est chargé de l’affichage d’une liste des appartements triés par rapport à l’utilité de l’utilisateur. Elles ont créé la classe LayoutApartmentGUI et sa méthode displayAppart qui affiche une liste d’appartements générés aléatoirement et triés par leur score en fonction de l’utilité de l’utilisateur grâce à la classe ApartmentValueFunction. (PR#23)
Le dernier duo, Yanis et Sandra, avait pour objectif d’ajouter des photos en attribut d’un appartement. Ainsi, ils ont modifié et amélioré les classes suivantes pour prendre en compte des nouvelles données : - Ajout d’une liste de path d’images et des méthodes getImages, addImages et setImages dans la classe Apartment; - ajout du champ "Images" dans la méthode readApartment de la classe ReadApartmentXML et ajout de la méthode findOutImagesPaths qui retourne une liste de paths, - ajout des photos au design dans la classe printAppartementGUI. (PR#28)
Entre temps, Laurence (SMPO pour cette itération) a également continué à travaillé sur les PR #14 et #6 de l’itération précédente.
Pour cette 4° itération
En terme de fusion :
-
Il faut fusionner l’affichage de la liste des appartements et celle des caractéristiques - (SM/PO)
-
A partir des données saisies dans ce GUI, il faut faire une recherche pour afficher les appartements selon l’utilité.(SM/PO)
-
S’assurer que tout fonctionne bien et corriger les class paths pour les ressources (XML et images) avec ajout des ressources images pour certaines appartement. (SM/PO)
Ces deux tâches consistent à la mise en place d’un main pour unifier les fonctionnalités (une recherche, puis une liste triée et enfin selection et détails d’appartments).
Pour les Duos:
1erDuo : Un gui pour choisir les utilités (sandra et Aïssatou)
2^eme Duo : calculer les poids à partir des critères de l’utilisateur (Amir et Alexis)
3emeDuo : Faire le ménage dans les fonctions de génération aléatoires et corriger les tests unitaires (Laurence et Zeina)
Perspectives d’amélioration :
-
XMCDA Remis à plus tard
Avec le nouvel exemple disponible et un peu plus de recul, nous étudions la possibilité de reprendre ce sujet à partir de la 3e itération
Aujourd’hui, il est possible de créer des documents au format xmlProperties qui représente un appartement comme suit :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Generated file for the apartment Petit Manoir de campagne</comment>
<entry key="nbMinNight">0</entry>
<entry key="wifi">false</entry>
<entry key="address">6 rue des paquerette 74000 Annecy</entry>
<entry key="floorAreaTerrace">0.0</entry>
<entry key="nbBedrooms">0</entry>
<entry key="description"></entry>
<entry key="title">Petit Manoir de campagne</entry>
<entry key="nbBathrooms">0</entry>
<entry key="terrace">false</entry>
<entry key="tele">false</entry>
<entry key="pricePerNight">0.0</entry>
<entry key="nbSleeping">0</entry>
<entry key="floorArea">80.5</entry>
</properties>
Le but serait donc de passer à un format qui inclue les critères ainsi que les bornes de ces critères pour représenter une analyse multi-critères :
<?xml version="1.0" encoding="UTF-8"?>
<xap:Apartment
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmcda-modular.github.io/2019/examples/Apartment Apartment.xsd"
xmlns:xap="http://xmcda-modular.github.io/2019/examples/Apartment"
xmlns:xm="http://xmcda-modular.github.io/2017/xsd">
<id>a1</id>
<performances>
<entry>
<entity xsi:type="xm:attribute">
<id>surface</id>
</entity>
<measurement xsi:type="xm:exactMeasurement">
<value>50</value>
</measurement>
</entry>
<entry>
<entity xsi:type="xm:attribute">
<id>price</id>
</entity>
<measurement xsi:type="xm:exactMeasurement">
<value>60</value>
</measurement>
</entry>
</performances>
</xap:Apartment>
-
Extraction d’annonces depuis pap.
-
Trouver les informations sur le code HTML
-
Créer un fichier XML à partir de ces informations
-
-
L’utilisateur indique son utilité de localisation par rapport à plusieurs lieux.
-
L’utilisateur se fait aider pour déterminer son utilité. Il voit le résultat de sa spécification d’utilité sur des annonces concrètes du système.
-
L’utilisateur peut indiquer en voyant la liste d’annonces qu’il préfère une annonce à une autre alors qu’elle est classé sous la deuxième. Le système lui permet alors de corriger son utilité pour que le classement en question soit rétabli.
Caution
|
Ces dernières fonctionnalités ne peuvent fonctionner que si on a un GUI pour indiquer la liste des annonces qui sont suceptibles de plaire à l’utilisateur |