Application Java de gestion de la Cité universitaire
Application Java orientée objet pour gérer maisons, étudiants et services, avec tests et interface.

En bref
- Problème
- Gérer les maisons, les étudiants et les services de la Cité internationale dans une application Java.
- Ce que j’ai réalisé
- Un modèle objet, une interface graphique et des tests unitaires écrits avant le code.
- Résultat
- L’interface affiche les maisons et les services, et le modèle, qui répartit les étudiants par nationalité, est vérifié par des tests unitaires.
- Rôle
- Développement orienté objet et tests, en équipe.
- Équipe
- 3 personnes
- Statut
- Terminé
L’application, écran par écran
Captures de l’application lancée hors ligne : maisons, services et menus sont créés par le code de l’application au lancement, avec des noms de directeurs fictifs ; aucune personne réelle n’y figure. La maison du Portugal a été saisie pour la démonstration.
Maisons
, ouvrir la capture complèteVue Maisons — la liste dépliée Après un clic sur « Liste des Maisons », les quatre maisons s’affichent avec leur nationalité et leur occupation, colorée selon le remplissage : 70/80 en orange, 60/60 en rouge, 0/75 et 0/90 en vert.
, ouvrir la capture complèteMenu contextuel d’une maison Un clic droit sur le bandeau d’une maison ouvre un menu contextuel à une seule entrée, « Afficher les détails ».
, ouvrir la capture complèteDétails d’une maison La boîte de dialogue reprend le nom, le directeur, la nationalité, la localisation et l’occupation de la maison choisie.
, ouvrir la capture complèteCréation d’une maison Le bouton « Créer une maison » ouvre un formulaire modal à cinq champs : nom, nombre de chambres, nationalité, directeur, localisation. Les valeurs saisies ici sont inventées pour la démonstration.
, ouvrir la capture complèteLa liste après la création La nouvelle maison apparaît en bas de la liste, 0/50 places ; une barre de défilement est apparue et les libellés d’occupation sont tronqués à droite, le bandeau ne tenant pas compte de sa largeur.
Services
, ouvrir la capture complèteVue Services — cafétérias et restaurants Les deux listes dépliées en grille de cinq colonnes : douze cafétérias « Tarif : 2.5€, Self-service » et douze restaurants « Capacité : 120 », valeurs par défaut du modèle.
, ouvrir la capture complèteDétail d’un restaurant Une fenêtre par établissement : réservation obligatoire, capacité, type de service et horaires d’ouverture jour par jour ; les jours sont affichés en anglais, tels que Java les fournit.
, ouvrir la capture complèteMenus d’un restaurant Un double clic sur un restaurant ouvre ses menus : liste à gauche, détail à droite (type de repas, composition, date) et filtre par type en haut. Les cinq menus et leurs dates sont générés par le code.
, ouvrir la capture complèteMenus filtrés par type Le filtre « VEGAN » ne garde que les menus 2 et 5 ; le détail passe au menu 2.
Sommaire7 sections
Contexte
Ce travail d’équipe de première année portait sur une application Java de gestion de la Cité internationale universitaire. L’application couvre les maisons, les étudiants et certains services de la Cité, derrière une interface graphique.
Le problème
Le domaine réel (maisons, étudiants, nationalités, services) devait devenir un modèle objet cohérent, administrable depuis une interface. Le code devait être testé et partagé au sein de l’équipe.
Démarche et décisions
J’ai modélisé le domaine en classes Java (Maison, Étudiant, MaisonInternationale) d’après un diagramme de classes réalisé sous Visual Paradigm. Au stade du prototype UML, une classe FactoryCIUP instanciait et reliait les objets du modèle ; dans l’application finale, en MVC, ce câblage est fait par les vues et le modèle (VueCiup, ModeleService). Les tests unitaires ont été écrits avant l’implémentation. L’interface graphique, cadrée au préalable par des maquettes Figma, affiche les maisons et les services. Le travail s’est fait sur un dépôt Git partagé.
- Interface. Depuis l’interface graphique, on saisit un étudiant (nom, nationalité). Dans l’application livrée, ce bouton d’inscription n’est pas relié à son contrôleur.
- MaisonInternationale. La classe racine agrège les maisons ; elle reçoit le nouvel étudiant et le répartit par nationalité.
- Maison. L’étudiant rejoint la maison correspondant à sa nationalité.
- Étudiant. Il est enregistré dans le modèle.
- FactoryCIUP. Au stade du prototype UML, cette fabrique instanciait et reliait le graphe d’objets ; dans l’application finale, les vues et le modèle s’en chargent.
Résultat
Le modèle est vérifié par les tests unitaires. Ces tests portent moins sur l’interface graphique.
Ce que j’ai appris
Je retiens le passage d’un diagramme de classes UML à du code Java. Avec la fabrique FactoryCIUP du prototype UML, j’ai vu l’intérêt de centraliser la création des objets. J’y ai appris à écrire les tests avant le code et à travailler à plusieurs sur un dépôt Git partagé.
Limites et suite
Le bouton « Inscrire » des étudiants est inerte : son contrôleur n’est jamais instancié. Je séparerais plus nettement la logique de l’affichage, pour tester la logique d’affectation indépendamment de l’interface.
La figure 2 montre le découpage MVC de l’application finale, illustré ici sur le flux d’inscription (maquette, données fictives).
Vue Liste des maisons
Vue Détail de la maison
Maison A
- étudiant 1
- étudiant 2
- étudiant 3
Contrôleur Inscrire un étudiant
Coulisses : ce que fait le code à chaque action
- 1
FactoryCIUPFabrique (prototype UML) → Modèle : instancie et relie 3 maisons et 5 étudiants → 3 vues notifiées (liste, détail, formulaire) - 2
inscrire("étudiant 6", "B")Vue (formulaire) → Contrôleur → Modèle : la MaisonInternationale confie étudiant 6 à la Maison B (3 étudiants) → 3 vues notifiées (liste, détail, formulaire) - 3
selectionner("A")Vue (liste) → Contrôleur → Modèle : maison courante = Maison A → 3 vues notifiées (liste, détail, formulaire)
Compétences BUT mobilisées
| Compétence | Niveau | Ce que le projet montre, et preuve |
|---|---|---|
| RéaliserRéaliser un développement d’application | Niveau 1 | Développer une application orientée objet avec des tests.Preuve : Classes Java (Maison, Etudiant, MaisonInternationale), tests unitaires écrits avant l’implémentation et, au stade du prototype UML, une fabrique FactoryCIUP. |
| CollaborerTravailler dans une équipe informatique | Niveau 1 | Travailler en équipe sur un dépôt partagé.Preuve : Travail collaboratif sur un dépôt Git et conception UML commune. |


