Problème — Gestion d'une file d'attente de patients
Application directe du cours · niveau 2 · NSI (terminale), chapitre 9 — La programmation orientée objet
Énoncé
Problème — Gestion d'une file d'attente de patients.
Modéliser une file d'attente dans un cabinet médical. Chaque Patient possède un nom et un niveau d'urgence. On gère deux files : une file prioritaire (urgences) et une file normale. La méthode suivant renvoie d'abord les patients prioritaires.
Corrigé
class Patient:
def __init__(self, nom, urgent=False):
self.nom = nom
self.urgent = urgent
def __repr__(self):
return self.nom + (" (urgent)" if self.urgent else "")
class SalleAttente:
def __init__(self):
self._urgents = File()
self._normaux = File()
def arriver(self, patient):
if patient.urgent:
self._urgents.enfiler(patient)
else:
self._normaux.enfiler(patient)
def suivant(self):
if not self._urgents.est_vide():
return self._urgents.defiler()
if not self._normaux.est_vide():
return self._normaux.defiler()
return None
salle = SalleAttente()
salle.arriver(Patient("Alice"))
salle.arriver(Patient("Bob", urgent=True))
salle.arriver(Patient("Chloe"))
print(salle.suivant()) # Bob (urgent)
print(salle.suivant()) # Alice
print(salle.suivant()) # Chloe
Bob, bien qu'arrivé après Alice, est traité en premier grâce à la file prioritaire ; les autres patients suivent dans leur ordre d'arrivée (FIFO).
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.