TP2 : Premières classes


But:
Réaliser l'application suivante qui permet de simuler la billetterie d'un complexe de cinéma. Choisir son film, le nombre de places et s'il y a réduction ou non. Le prix à payer s'affiche ainsi que le nombre de places disponibles.
Appuyer sur Validation pour accepter l'achat, l'état de la salle s'affiche.
Appuyer sur Fin de séance pour connaître le prix de revient de chaque salle ainsi que le total du complexe. Les places des salles sont initialisées.
Déroulement du TP :
a) Ecriture d'une classe simple
Le but de ce sujet est d´écrire un programme C# pour aider à la gestion de la billetterie des différentes salles d'un complexe cinématographique.
Les places non numérotées sont vendues selon deux tarifs :
- un tarif "normal" qui est fixé en fonction de la salle et du film qui y est joué
- un tarif réduit (familles nombreuses, militaires, chômeurs, étudiants) qui correspond à 80% du tarif normal
Après analyse du problème, il est décidé de représenter les salles de cinéma par des objets C# instances d'une classe SalleCinema définie comme suit :
Les informations caractérisant un objet SalleCinema sont :
- une chaîne de caractères qui contient le titre du film joué.
- un entier qui contient le nombre de places de la salle.
- un réel qui contient le prix unitaire d'une place à tarif normal.
- un entier qui contient le nombre de places qui ont été vendues à tarif normal.
- un entier qui contient le nombre de places qui ont été vendues à tarif réduit
Les valeurs des trois premières caractéristiques (titre du film, nombre de place, prix de la place) sont fixées lors de la création d'un nouvel objet SalleCinema (c'est-à-dire, sont passées en paramètres du constructeur).
Quand aux deux autres variables (nombre de places vendues à tarif normal et nombre de places vendues à tarif réduit) elles sont bien sur initialisées à 0.

La classe SalleCinema possède les méthodes suivantes :
- public int nbPlacesDisponibles()
Calcule et renvoie le nombre de places encore disponibles dans la salle.
- public string vendrePlaces(int nbre, bool tarifReduit)
Permet de vendre des billets pour la salle. nbre indique le nombre de places demandées et le booléen tarifReduit indique si une réduction est demandée ou non (si le paramètre tarifReduit vaut true une réduction est demandée, si il vaut false les places sont achetées au tarif normal sans réduction).
Si le nombre de places demandé est supérieur au nombre de places disponibles la vente n'est pas effectuée et la méthode retourne un message indiquant que la vente n'est pas possible. Sinon la variable d'instance correspondant au nombre de places vendues à tarif normal ou à tarif réduit (selon la valeur du paramètre tarifReduit) est mise à jour et le prix à payer est retourné dans une string.
- public void remiseAZero()
Permet lorsque la vente de billets pour une séance est terminée de remettre à 0 les compteurs de nombre de places vendues en vue de la vente de billets pour la prochaine séance.
- public double chiffreAffaires()
Retourne le chiffre d'affaires produit par la salle pour la séance en cours (total des ventes depuis la création de l'objet salle ou la dernière remise à zero du nombre de places vendues).
- public double tauxRemplissage()
Retourne le taux (pourcentage) de remplissage de la salle.
- public string ToString()
Retourne une représentation sous forme d'une chaîne de caractères de l'objet SalleCinema. Cette chaîne indique la valeur de chacun des attributs (chacune des variables d'instances) de l'objet (le titre du film, le nombre de places de la salle, le nombre de places vendues à tarif normal, le nombre de places vendues à tarif réduit, le prix de la place). Par exemple, pour une salle de 60 places jouant le film "Sacré Graal" dont 20 places ont été vendues au tarif normal (de 7,5 €) et 14 places ont été vendues au tarif réduit l'affichage de la chaîne retournée par toString pourrait être le suivant :
Film joué : Sacré Graal ,
Nombre de places : 60 ,
Prix d'une place : 7.50 €,
20 places vendues au tarif normal ,
14 places vendues au tarif réduit.
Travail demandé :
- Créer un projet spécial pour ce TP.
- Ecrire la classe SalleCinema en respectant scrupuleusement les spécifications données ci-dessus.
- Ecrire un programme simple de test pour la classe SalleCinema.
Exemple d'IHM:

b) Une première utilisation de tableaux d'objets
Ecrire un programme de "billetterie" respectant les spécification suivantes.
Ce programme permet d'enregistrer les entrées effectuées dans les différentes salles, de calculer, d'afficher le taux d'occupation et le chiffre d'affaire produit par chaque salle lorsque la vente des billets pour la séance est terminée.
Le programme de billetterie est lancé au début de la mise en vente des billets pour la prochaine séance de projection.
Lorsqu'un client se présente, le guichetier choisit le film, le nombre de places et coche le tarif réduit.
Le programme affiche alors les différents attributs de la salle sélectionnée (le titre du film, le nombre de places de la salle, le nombre de places vendues...).
Si la demande du client peut être satisfaite le programme affiche le prix à payer sinon il affiche un message indiquant que le nombre de places demandé est incorrect. Le guichetier doit valider la vente.
Lorsque la vente des billets est terminée, le guichetier clique sur le bouton de fin. Le programme affiche alors pour chaque salle son état (la valeur des ses attributs),son taux d'occupation et le chiffre d'affaire produit.
Le programme calcule aussi le chiffre d'affaires total et l'affiche.
Exemple d'IHM:
Indication
-
pour stocker les salles, on pourra utiliser soit un tableau, soit une ArrayList
- Les images peuvent être entrées dans les ressources du projet (clic droit sur la Form, BackgroundImage, Import)
- La liste des films peut-être du style :
- private string[] liste = { "Un monde parfait", "Living Las Vegas" ,"inception","salt"};
- private Bitmap[] films = { Properties.Resources.mondeParfait, Properties.Resources.livingLasVegas, Properties.Resources.inception, Properties.Resources.salt};
- Pour l'IHM, créer une nouvelle classe Form et l'indiquer dans program.cs

