Version originale : Mireille BLAY-FORNARINO
Version C# : Alain VIZZINI (c) ESSI# : http://www.essisharp.ht.st
Objectif de l'application finale
Votre application doit permettre à une standardiste de l'hôpital de saisir de nouveau Rendez Vous dans les différents services de l'hôpital, lister les Rendez Vous d'un service ou pour un patient donné, annuler un Rendez Vous.
Pensez donc à faire une interface claire, simple et user friendly.
Rappelez vous la maxime : "même le plus puissant des logiciels ne vaut rien s'il faut avoir fait polytechnique pour l'utiliser"
Les rendez-vous
Un rendez-vous a lieu à une heure, un jour donné pour un patient donné.
Chaque fois qu'un nouveau rendez-vous est créé, un message nous confirme la date et l'heure du rendez-vous pris.
Redéfinir l'affichage d'un RendezVous afin d'obtenir la représentation suivante :
Patient jean : le 11 Decembre 2000 a 1:59:30.
Nous vous suggérons d'utiliser et de bien regarder la classe DateTime et Calendar (ainsi que ses implémentations).
Définir la classe RendezVous
Des rendez-vous plus spécifiques
On voudrait associer à tout rendez-vous, un service de consultation (pédiatrie, cardiologie, ...) ce qui détermine alors la durée du rendez-vous et son lieu.
Par exemple une consultation en pédiatrie dure 20 minutes et a lieu dans une salle adaptée aux enfants, une consultation en radiologie est de 30 minutes et se pratique en salle de radiologie.
Adapter la classe RendezVous et définir les classes ConsultationPediatrie et ConsultationRadiologie en conséquence
Pour ce faire vous devez répondre au minimum aux exigences suivantes :
- La durée et le type de salle d'une sorte de rendez-vous sont alors fixés pour toutes les instances de la classe.
- Chaque fois qu'un rendez-vous est créé, il est ajouté à la liste des instances de cette classe.
- Une méthode prendreRendezVous qui adressée à une sous-classe de RendezVous avec pour paramètre une date, une heure et un patient, n'en retourne une instance que si un rendez-vous n'a pas déjà été pris à cette même heure dans le service concerné. On ne veut pas que quiconque puisse créer un RendezVous par new. On passera nécessairement par prendreRendezVous.
Utilisez correctement l'héritage, le mode des variables et des méthodes, les variables statiques et n'oubliez pas les règles de base de la programmation C#.
Il est conseillé d'utiliser la classe DateTime ou une sous classe de Calendar, car redéfinir à sa manière les Date revient à réinventer. Néanmoins, personne ne peut vous en empêcher. Toutefois, cela serait bien plus profitable de réutiliser ce qui est fourni en standard par C#.
Les agendas
Un agenda Hospitalier contient les rendez-vous par service.
Il est nécessaire d'accéder rapidement à un rendez-vous donné (ce qui signifie, pas de liste avec des accès en O(n) ... :)
De plus l’hôpital souhaite avoir un suivi des rendez-vous annulés.
Il faut ici réutiliser des classes standards C#. Faites votre choix parmi celles-ci ...
- Hashtable
- SortedList
- ArrayList
- CollectionBase (à dériver)
- IDictionary
- Le contenu du namespace
System.Collections
Remarque :
Prenez le temps de les lire pour trouver celles qui collent le mieux à ce que vous cherchez.
Et petite aide, ne prenez pas forcement la même pour résoudre tout les problèmes de ce projet, ce n'est pas forcement si simple ...Réfléchissez bien à la nature de ce que vous désirez stocker, et comment ils sont définis (par une clé, par un ordre, pas d'ordre, doublons ou pas, sur quels critères, ...)
Les entrées/sorties C#
L’hôpital souhaite sauvegarder sur Fichier les rendez vous (annulés et les non annulés).
Un choix terrible s'offre à vous :
- Soit vous ne faites pas de sérialisation, et vous écrivez dans les fichiers en formatant vous même les données.
Pour cela, utilisez les classes :
System.Runtime.Serialization.Formatter
- les classes du namespace
System.IO
notamment FileStream
Sachez toutefois que ce n'est définitivement pas la solution de facilité, mais elle présente l'intérêt de forcer l'utilisateur à "mettre les mains dans le cambouis". Ainsi, vous maîtriserez mieux le process d'écriture formatée dans un flux, lecture, gestion des entrées/sorties.
- Soit vous avez déjà utilisé la solution ci-dessus dans une autre vie, ou dans la présente et vous préférez 1000 fois utiliser la sérialisation. Alors bienvenue, car en C# ça se fait en 4 lignes (cf section Entrées/Sorties).
Sachez que vous pourrez même simplement écrire non plus en binaire comme proposé dans le lien ci-dessus mais en XML facilement avec C#. C'est à venir ...
par Alain Vizzini (vizzini@essi.fr)
pour l'ESSI & Microsoft, création 25-03-2002, dernière màj 09-04-2002