Adloun

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.