comme sur discord
This commit is contained in:
parent
4f2904fc01
commit
a2fa7960c3
80
Makefile
Normal file
80
Makefile
Normal file
@ -0,0 +1,80 @@
|
||||
# COMMANDES #
|
||||
JAVAC = javac
|
||||
# note $$ to get a single shell $
|
||||
JAVAC_OPTIONS = -d build -cp build:$$CLASSPATH -implicit:none
|
||||
JAVA = java
|
||||
JAR = jar
|
||||
EXEC_JAR = ${JAVA} -jar
|
||||
|
||||
# CHEMINS RELATIFS
|
||||
SRC = src/fr/iutfbleau/projetIHM2021FI2
|
||||
BUILD = build/fr/iutfbleau/projetIHM2021FI2
|
||||
|
||||
# CHOIX NOMS
|
||||
JAR_MNP = test-mnp.jar
|
||||
|
||||
# BUTS FACTICES #
|
||||
.PHONY : run clean
|
||||
|
||||
# BUT PAR DEFAUT #
|
||||
run : ${BUILD}/MNP/JoueurNP.class
|
||||
|
||||
# ${JAR_MNP}
|
||||
# ${EXEC_JAR} ${JAR_MNP}
|
||||
|
||||
# AUTRE BUTS
|
||||
clean :
|
||||
rm -rf ${BUILD}/* *.jar
|
||||
|
||||
|
||||
# REGLES DE DEPENDANCE #
|
||||
|
||||
## API ##
|
||||
${BUILD}/API/TypeChambre.class : ${SRC}/API/TypeChambre.java
|
||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/TypeChambre.java
|
||||
|
||||
${BUILD}/API/Chambre.class : ${SRC}/API/Chambre.java \
|
||||
${BUILD}/API/TypeChambre.class
|
||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Chambre.java
|
||||
|
||||
${BUILD}/API/Client.class : ${SRC}/API/Client.java
|
||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Client.java
|
||||
|
||||
${BUILD}/API/Prereservation.class : ${SRC}/API/Prereservation.java \
|
||||
${BUILD}/API/TypeChambre.class \
|
||||
${BUILD}/API/Client.class
|
||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Prereservation.java
|
||||
|
||||
${BUILD}/API/Reservation.class : ${SRC}/API/Reservation.java \
|
||||
${BUILD}/API/Prereservation.class
|
||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/Reservation.java
|
||||
|
||||
${BUILD}/API/PrereservationFactory.class : ${SRC}/API/PrereservationFactory.java \
|
||||
${BUILD}/API/Prereservation.class
|
||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/PrereservationFactory.java
|
||||
|
||||
${BUILD}/API/ReservationFactory.class : ${SRC}/API/ReservationFactory.java \
|
||||
${BUILD}/API/Prereservation.class
|
||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/API/ReservationFactory.java
|
||||
|
||||
## MNP ##
|
||||
|
||||
${BUILD}/MNP/JoueurNP.class : ${SRC}/MNP/ClientNP.java \
|
||||
${BUILD}/API/Client.class
|
||||
${JAVAC} ${JAVAC_OPTIONS} ${SRC}/MNP/ClientNP.java
|
||||
|
||||
|
||||
## TEST ##
|
||||
|
||||
# ${BUILD}/test/TestTexteMNP.class : ${SRC}/test/TestTexteMNP.java \
|
||||
# ${BUILD}/MNP/PassagePieceFactoryNP.class \
|
||||
# ${BUILD}/MNP/TrucFactoryNP.class \
|
||||
# ${BUILD}/MNP/JoueurNP.class
|
||||
# ${JAVAC} ${JAVAC_OPTIONS} ${SRC}/test/TestTexteMNP.java
|
||||
|
||||
|
||||
# ## JARS ##
|
||||
|
||||
# ${JAR_MNP} : ${BUILD}/test/TestTexteMNP.class
|
||||
# ${JAR} cvfe ${JAR_MNP} fr.iutfbleau.projetIHM2020FI2.test.TestTexteMNP -C build fr
|
||||
|
32
src/fr/iutfbleau/projetIHM2021FI2/API/Chambre.java
Normal file
32
src/fr/iutfbleau/projetIHM2021FI2/API/Chambre.java
Normal file
@ -0,0 +1,32 @@
|
||||
package fr.iutfbleau.projetIHM2021FI2.API;
|
||||
/**
|
||||
* Une chambre
|
||||
*/
|
||||
|
||||
public interface Chambre {
|
||||
|
||||
/**
|
||||
* permet de récupérer le numéro de la chambre.
|
||||
* @return le numéro.
|
||||
*/
|
||||
public int getNumero();
|
||||
|
||||
/**
|
||||
* permet de savoir si la chambre a un seul lit qui est simple
|
||||
* @return vrai si c'est le cas.
|
||||
*/
|
||||
public boolean unLitSimple();
|
||||
|
||||
/**
|
||||
* permet de savoir si la chambre a deux lits simples
|
||||
* @return vrai si c'est le cas.
|
||||
*/
|
||||
public boolean deuxLitsSimples();
|
||||
|
||||
/**
|
||||
* permet de savoir si la chambre a un lit double
|
||||
* @return vrai si c'est le cas.
|
||||
*/
|
||||
public boolean unLitDouble();
|
||||
|
||||
}
|
27
src/fr/iutfbleau/projetIHM2021FI2/API/Client.java
Normal file
27
src/fr/iutfbleau/projetIHM2021FI2/API/Client.java
Normal file
@ -0,0 +1,27 @@
|
||||
package fr.iutfbleau.projetIHM2021FI2.API;
|
||||
|
||||
/**
|
||||
* Un client
|
||||
*/
|
||||
|
||||
public interface Client {
|
||||
|
||||
/**
|
||||
* permet de récupérer l'identifiant du client (qu'on suppose être le même pour les différents systèmes, internes et externes à l'hôtel).
|
||||
* @return l'identifiant.
|
||||
*/
|
||||
public int getId();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return le nom du client.
|
||||
*/
|
||||
public String getNom();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return le prénom du client
|
||||
*/
|
||||
public String getPrenom();
|
||||
|
||||
}
|
43
src/fr/iutfbleau/projetIHM2021FI2/API/Prereservation.java
Normal file
43
src/fr/iutfbleau/projetIHM2021FI2/API/Prereservation.java
Normal file
@ -0,0 +1,43 @@
|
||||
package fr.iutfbleau.projetIHM2021FI2.API;
|
||||
import java.util.Date;
|
||||
/**
|
||||
* Une préréservation
|
||||
*
|
||||
* e.g. utilisé par le système de réservation externe à l'hôtel.
|
||||
*
|
||||
*/
|
||||
|
||||
public interface Prereservation {
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return la référence.
|
||||
*/
|
||||
public String getReference();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return la date de début
|
||||
*
|
||||
* A priori seule la date est importante, le reste est sans importance.
|
||||
*/
|
||||
public Date getDateDebut();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return la durée en jours (mais comme un entier)
|
||||
*/
|
||||
public int getJours();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return le type de chambre
|
||||
*/
|
||||
public TypeChambre getTypeChambre();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return le client
|
||||
*/
|
||||
public Client getClient();
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
package fr.iutfbleau.projetIHM2021FI2.API;
|
||||
import java.util.*;
|
||||
/**
|
||||
* Cette interface est une usine abstraite.
|
||||
*
|
||||
* Elle permet de rechercher les préréservations à partir du numéro d'une préréservation, ou bien du nom et prenom d'un Client.
|
||||
*
|
||||
*/
|
||||
public interface PrereservationFactory{
|
||||
|
||||
/**
|
||||
* Recherche une préréservation par reference
|
||||
* @param r la référence du système de préréservation
|
||||
* @return la préréservation.
|
||||
* @throws NullPointerException si un argument est null
|
||||
* @throws IllegalStateException si la Préréservation avec cette référence n'existe pas.
|
||||
*
|
||||
* Ne devrait pas retourner un objet null.
|
||||
*/
|
||||
public Prereservation getPrereservation(String r);
|
||||
|
||||
/**
|
||||
* Recherche une préréservation par nom et prenom
|
||||
* @param n le nom
|
||||
* @param p le prenom
|
||||
* @return un ensemble de préréservations.
|
||||
* @throws NullPointerException si un argument est null
|
||||
* @throws IllegalStateException si aucune préréservation n'existe avec ce nom
|
||||
*
|
||||
* Ne devrait pas retourner un objet null ou un ensemble vide.
|
||||
*/
|
||||
public Set<Prereservation> getPrereservations(String n, String p);
|
||||
|
||||
}
|
46
src/fr/iutfbleau/projetIHM2021FI2/API/Reservation.java
Normal file
46
src/fr/iutfbleau/projetIHM2021FI2/API/Reservation.java
Normal file
@ -0,0 +1,46 @@
|
||||
package fr.iutfbleau.projetIHM2021FI2.API;
|
||||
import java.util.Date;
|
||||
/**
|
||||
* Une Réservation
|
||||
*
|
||||
* e.g. utilisé par le système de réservation interne à l'hôtel.
|
||||
*
|
||||
*/
|
||||
|
||||
public interface Reservation {
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return la référence.
|
||||
*/
|
||||
public String getReference();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return la date de début
|
||||
*
|
||||
* A priori seule la date est importante, le reste est sans importance.
|
||||
*/
|
||||
public Date getDateDebut();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return la durée en jours (mais comme un entier)
|
||||
*/
|
||||
public int getJours();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return le type de chambre
|
||||
*/
|
||||
public Chambre getChambre();
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return le client
|
||||
*/
|
||||
public Client getClient();
|
||||
}
|
||||
|
||||
|
||||
|
180
src/fr/iutfbleau/projetIHM2021FI2/API/ReservationFactory.java
Normal file
180
src/fr/iutfbleau/projetIHM2021FI2/API/ReservationFactory.java
Normal file
@ -0,0 +1,180 @@
|
||||
package fr.iutfbleau.projetIHM2021FI2.API;
|
||||
import java.util.*;
|
||||
/**
|
||||
* Cette interface est une usine abstraite.
|
||||
*
|
||||
* Elle permet de trouver une ou des chambres à partir d'une préréservation, de créer une réservation.
|
||||
* Elle permet aussi de compter toutes les chambres d'un certain type (disponibles ou non).
|
||||
*
|
||||
* Conseil :
|
||||
* si vous instantiez cette classe pour proposer un modèle persistent avec une base de données, attention à ne pas faire des choses qu'on peut faire efficacement en BdD côté Java.
|
||||
* En particulier, ne pas faire des jointures ou de l'aggrégat côté java alors que votre bdd fait ça beaucoup plus efficacement.
|
||||
* Plus de détails ici : https://use-the-index-luke.com/sql/join/nested-loops-join-n1-problem
|
||||
*
|
||||
* Autre conseil :
|
||||
* vous n'êtes probablement pas obligé de coder toutes les méthodes listées ici pour que votre projet soit terminé.
|
||||
* Cette interface est volontairement assez complète pour permettre de faire varier le sujet du projet sans la changer.
|
||||
*
|
||||
* Je ne l'ai pas ajouté individuellement pour la documentation de chaque méthode, mais si la classe réalisant cette interface ne réalise pas vraiment une méthode, vous pouvez lever
|
||||
* java.lang.UnsupportedOperationException
|
||||
* avec un message "pas encore implanté" ou "aucune implantation prévue" selon les cas.
|
||||
*
|
||||
* La raison de cette absence dans la documentation ci-dessous c'est qu'il s'agit d'une Exception héritant de RuntimeException.
|
||||
* La doc indique aussi :
|
||||
* "RuntimeException and its subclasses are unchecked exceptions. Unchecked exceptions do not need to be declared in a method or constructor's throws clause if they can be thrown by the execution of the method or constructor and propagate outside the method or constructor boundary."
|
||||
*
|
||||
*/
|
||||
public interface ReservationFactory{
|
||||
|
||||
/**
|
||||
* Recherche une chambre adéquate à partir de
|
||||
* @param p une préréservation
|
||||
* @return la chambre
|
||||
* @throws NullPointerException si un argument est null
|
||||
* @throws IllegalStateException si une chambre correspondant à cette Préréservation n'existe pas.
|
||||
*
|
||||
* Ne devrait pas retourner un objet null.
|
||||
*/
|
||||
public Chambre getChambre(Prereservation p);
|
||||
|
||||
/**
|
||||
* Recherche toutes les chambres adéquates à partir de
|
||||
* @param p une préréservation
|
||||
* @return les chambres (set de chambre)
|
||||
* @throws NullPointerException si un argument est null
|
||||
* @throws IllegalStateException si une chambre correspondant à cette Préréservation n'existe pas.
|
||||
*
|
||||
* Ne devrait pas retourner un objet null.
|
||||
*/
|
||||
public Set<Chambre> getChambres(Prereservation p);
|
||||
|
||||
/**
|
||||
* Fabrique (ajoute) une réservation
|
||||
* @param p une préréservation
|
||||
* @param c une chambre (normalement libre et adaptée à la préréservation)
|
||||
* @return la réservation
|
||||
* @throws NullPointerException si un argument est null
|
||||
* @throws IllegalArgumentException si la chambre ne correspondant pas au type de chambre de la préréservation.
|
||||
* @throws IllegalStateException si la chambre n'est pas disponible.
|
||||
*
|
||||
* Ne devrait pas retourner un objet null.
|
||||
*/
|
||||
public Reservation createReservation(Prereservation p, Chambre c);
|
||||
|
||||
/**
|
||||
* Cherche les réservations
|
||||
* @param d une date
|
||||
* @return la ou les réservation(s) à cette date sous forme d'un ensemble
|
||||
* @throws NullPointerException si un argument est null
|
||||
*
|
||||
* Ne devrait pas retourner un objet null, par contre peut être un ensemble qui est vide.
|
||||
*/
|
||||
public Set<Reservation> getReservation(Date d);
|
||||
|
||||
/**
|
||||
* Cherche le nombre de chambres disponibles pour une date (réservées ou non).
|
||||
* @param d une date
|
||||
* @return un entier
|
||||
* @throws NullPointerException si un argument est null
|
||||
*
|
||||
* Ne devrait pas retourner un entier négatif.
|
||||
*/
|
||||
public int getDisponibles(Date d);
|
||||
|
||||
/**
|
||||
* Cherche les réservations
|
||||
* @param d une date
|
||||
* @param t un type de chambre
|
||||
* @return la ou les réservation(s) pour ce type de chambre à cette date sous forme d'un ensemble
|
||||
* @throws NullPointerException si un argument est null
|
||||
*
|
||||
* Ne devrait pas retourner un objet null, par contre peut être un ensemble qui est vide.
|
||||
*/
|
||||
public Set<Reservation> getReservation(Date d, TypeChambre t);
|
||||
|
||||
/**
|
||||
* Cherche le nombre de chambres disponibles d'un certain type pour une date (réservées ou non).
|
||||
* @param d une date
|
||||
* @param t un type de chambre
|
||||
* @return un entier
|
||||
* @throws NullPointerException si un argument est null
|
||||
*
|
||||
* Ne devrait pas retourner un entier négatif.
|
||||
*/
|
||||
public int getDisponibles(Date d, TypeChambre t);
|
||||
|
||||
/**
|
||||
* Cherche la proportion de chambres disponibles pour une date (réservées sur réservables).
|
||||
* @param d une date
|
||||
* @return un entier entre 0 et 100
|
||||
* @throws NullPointerException si un argument est null
|
||||
*/
|
||||
public int getRatio(Date d);
|
||||
|
||||
/**
|
||||
* Cherche la proportion de chambres disponibles d'un certain type pour une date (réservées sur réservables).
|
||||
* @param d une date
|
||||
* @param t un type de chambre
|
||||
* @return un entier entre 0 et 100
|
||||
* @throws NullPointerException si un argument est null
|
||||
*/
|
||||
public int getRatio(Date d, TypeChambre t);
|
||||
|
||||
/**
|
||||
* Cherche le nombre moyen de chambres disponibles entre deux date (réservées ou non), arrondies à l'entier inférieur.
|
||||
* @param d1 une date
|
||||
* @param d2 une date
|
||||
* @return un entier
|
||||
* @throws NullPointerException si un argument est null
|
||||
* @throws IllegalArgumentException si l'ordre temporel d1 avant d2 n'est pas respecté.
|
||||
*
|
||||
* Ne devrait pas retourner un entier négatif.
|
||||
*/
|
||||
public int getDisponibles(Date d1, Date d2);
|
||||
|
||||
/**
|
||||
* Cherche les réservations
|
||||
* @param d1 une date
|
||||
* @param d2 une date
|
||||
* @param t un type de chambre
|
||||
* @return la ou les réservation(s) pour ce type de chambre entre les dates sous forme d'un ensemble
|
||||
* @throws NullPointerException si un argument est null
|
||||
* @throws IllegalArgumentException si l'ordre temporel d1 avant d2 n'est pas respecté.
|
||||
*
|
||||
* Ne devrait pas retourner un objet null, par contre peut être un ensemble qui est vide.
|
||||
*/
|
||||
public Set<Reservation> getReservation(Date d1, Date d2, TypeChambre t);
|
||||
|
||||
/**
|
||||
* Cherche le <b>nombre moyen</b> de chambres disponibles d'un certain type entre deux date (réservées ou non), arrondies à l'entier inférieur.
|
||||
* @param d1 une date
|
||||
* @param d2 une date
|
||||
* @param t un type de chambre
|
||||
* @return un entier
|
||||
* @throws NullPointerException si un argument est null
|
||||
* @throws IllegalArgumentException si l'ordre temporel d1 avant d2 n'est pas respecté.
|
||||
*
|
||||
* Ne devrait pas retourner un entier négatif.
|
||||
*/
|
||||
public int getDisponibles(Date d1, Date d2, TypeChambre t);
|
||||
|
||||
/**
|
||||
* Cherche la <b>proportion moyenne</b> de chambres disponibles pour une date (réservées sur réservables).
|
||||
* @param d1 une date
|
||||
* @param d2 une date
|
||||
* @return un entier entre 0 et 100
|
||||
* @throws NullPointerException si un argument est null
|
||||
*/
|
||||
public int getRatio(Date d1, Date d2);
|
||||
|
||||
/**
|
||||
* Cherche la <b>proportion moyenne</b> de chambres disponibles d'un certain type pour une date (réservées sur réservables).
|
||||
* @param d1 une date
|
||||
* @param d2 une date
|
||||
* @param t un type de chambre
|
||||
* @return un entier entre 0 et 100
|
||||
* @throws NullPointerException si un argument est null
|
||||
*/
|
||||
public int getRatio(Date d1, Date d2, TypeChambre t);
|
||||
|
||||
}
|
4
src/fr/iutfbleau/projetIHM2021FI2/API/TypeChambre.java
Normal file
4
src/fr/iutfbleau/projetIHM2021FI2/API/TypeChambre.java
Normal file
@ -0,0 +1,4 @@
|
||||
package fr.iutfbleau.projetIHM2021FI2.API;
|
||||
public enum TypeChambre {
|
||||
UNLS, DEUXLS, UNLD;
|
||||
}
|
49
src/fr/iutfbleau/projetIHM2021FI2/MNP/ClientNP.java
Normal file
49
src/fr/iutfbleau/projetIHM2021FI2/MNP/ClientNP.java
Normal file
@ -0,0 +1,49 @@
|
||||
package fr.iutfbleau.projetIHM2021FI2.MNP;
|
||||
import fr.iutfbleau.projetIHM2021FI2.API.*;
|
||||
import java.util.*;
|
||||
/**
|
||||
* Un client non persistent tout bête
|
||||
*/
|
||||
|
||||
public class ClientNP implements Client {
|
||||
|
||||
private int id;
|
||||
private String nom;
|
||||
private String prenom;
|
||||
|
||||
/**
|
||||
* Constructeur
|
||||
*/
|
||||
public ClientNP(int id, String nom, String prenom){
|
||||
Objects.requireNonNull(nom,"On ne peut pas créer une personne avec un nom à null.");
|
||||
Objects.requireNonNull(nom,"On ne peut pas créer une personne avec un prenom à null.");
|
||||
this.id=id;
|
||||
this.nom=nom;
|
||||
this.prenom=prenom;
|
||||
}
|
||||
|
||||
/**
|
||||
* permet de récupérer l'identifiant du client (qu'on suppose être le même pour les différents systèmes, internes et externes à l'hôtel).
|
||||
* @return l'identifiant.
|
||||
*/
|
||||
public int getId(){
|
||||
return this.id;
|
||||
}
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return le nom du client.
|
||||
*/
|
||||
public String getNom(){
|
||||
return this.nom;
|
||||
}
|
||||
|
||||
/**
|
||||
* permet de récupérer
|
||||
* @return le prénom du client
|
||||
*/
|
||||
public String getPrenom(){
|
||||
return this.prenom;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user