Exercice 2 - Questions 9 à 11 · Bac Numérique et Sciences Informatiques Amérique du Nord 2026 (jour 1)
Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Jour 1 (2026)
Énoncé
Cet exercice porte sur l'architecture matérielle (réseau), les structures de données et la programmation orientée objet.
Voici un schéma du réseau de l'entreprise Gamerzz, qui propose à ses clients:
une salle pour jouer à des jeux vidéos en ligne (Salle Gaming Online);
une autre pour jouer en réalité virtuelle (Salle Gaming VR);
un site pour réserver, organiser des évènements et gérer les classements des joueurs en réalité virtuelle.
On y a fait figurer les différents sous-réseaux qui la composent en donnant leur notation CIDR.
La notation a.b.c.d/n, appelée notation CIDR (Classless Inter Domain Routing), signifie que les n premiers bits à gauche de l'adresse IP représentent la partie « réseau », les bits à droite qui suivent représentent la partie « machine ». L'adresse IPv4 dont tous les bits de la partie « machine » sont à 0 est appelée « adresse du réseau ». L'adresse IPv4 dont tous les bits de la partie « machine » sont à 1 est appelée « adresse de diffusion », les autres adresses peuvent être attribuées à des machines telles que des routeurs, des serveurs ou des ordinateurs.
On modélise les files en Python à l'aide des fonctions suivantes:
cree_file: renvoie une file vide;
est_vide: renvoie le booléen indiquant si la file f passée en paramètre est vide;
enfile: prend en paramètres une file f et un élément x et ajoute x dans f;
defile: prend en paramètre une file f non vide et supprime l'élément de f le plus anciennement ajouté et renvoie sa valeur.
Il arrive qu'un routeur ne puisse pas transmettre l'ensemble des paquets qu'il reçoit, par exemple, si les émetteurs sont très actifs. Dans ce cas, le routeur va ignorer certains paquets.
L'une des démarches utilisées consiste à limiter la taille de la file. Si la file n'a pas atteint sa taille maximale, les paquets reçus sont enfilés. Par contre, si la taille maximale est atteinte, tous les nouveaux paquets reçus sont ignorés. Lorsqu'un paquet est transmis par le routeur, il est défilé.
Cette méthode est appelée drop tail en anglais. Un routeur suivant cet algorithme est donc paramétré avec une taille maximale de file t_max et il doit garder trace, à chaque instant, de la file f contenant les paquets à transmettre et de la taille t de celle-ci.
9.
On considère la classe Routeur_DROP_TAIL dont on fournit ci-dessous une partie du code. Recopier et compléter la méthode __init__.
class Routeur_DROP_TAIL:
def __init__(...,...):
self.f =...
self.t_max =...
self.t =...
10.
La méthode recoit de la classe Routeur_DROP_TAIL prend en paramètre un paquet p. Cette méthode renvoie True si le paquet est accepté, False dans le cas contraire. On rappelle qu'un paquet est accepté si la taille de la file au moment de sa réception est strictement inférieure à la taille maximale. Dans ce cas le paquet est enfilé.
Recopier et compléter la méthode recoit proposée ci-dessous:
def recoit(self, p):
La démarche décrite ci-dessus a pour désavantage d'ignorer indifféremment tous les paquets lorsque la taille maximale de la file est atteinte. Elle peut entraîner un ralentissement général des transmissions car tous les émetteurs vont ralentir leur rythme d'envoi de paquets en même temps.
Pour palier ce problème, on se propose d'adopter la démarche suivante lors de la réception d'un paquet:
si la taille actuelle de la file est strictement inférieure à une taille minimale t_min, le paquet est accepté;
si elle est supérieure ou égale à t_min mais strictement inférieure à une taille maximale t_max, le paquet est rejeté aléatoirement;
si elle est supérieure ou égale à t_max, le paquet est rejeté.
On modélise cette démarche par un objet de la classe Routeur_ALEA possédant quatre attributs:
la file d'attente f manipulable par les fonctions décrites plus haut. Cette file est vide initialement;
la taille minimale t_min (nombre entier positif);
la taille maximale t_max (nombre entier positif);
la taille actuelle de la file t (nombre entier positif, initialement nul).
La classe Routeur_ALEA possède aussi une méthode tirage_au_sort qui renvoie un booléen au hasard. Ainsi, l'expression self.tirage_au_sort() renverra aléatoirement True ou False.
La méthode recoit de la classe Routeur_ALEA prend en paramètre un paquet p. Cette méthode met en œuvre la démarche décrite ci-dessus et renvoie True si le paquet est accepté, False dans le cas contraire.
11.
Recopier et compléter la méthode recoit proposée ci-dessous:
def recoit(self, p):

Corrigé
Corrigé proposé par AprenAI (non officiel)
9. Recopier et compléter la méthode __init__.
Réponse : ```python def __init__(self, t_max): self.f = cree_file() self.t_max = t_max self.t = 0 ```
10. Recopier et compléter la méthode recoit proposée ci-dessous :
Réponse : ```python if self.t < self.t_max: enfile(self.f, p) self.t = self.t + 1 return True return False ```
La réponse de la question restante et l’explication pas à pas sont réservées aux membres Premium. Premium
Résous-le ici : correction automatique, indices et corrigé détaillé.
‹ Exercice 1 - Partie A · Amérique du Nord 2026 (jour 1) · Exercice 2 - Programmation orientée objet · Amérique du Nord 2026 (jour 2) ›
Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes
- Exercice 1 - Partie A · Amérique du Nord 2026 (jour 1)
- Exercice 2 - Programmation orientée objet · Amérique du Nord 2026 (jour 2)
- Exercice 2 - Programmation orientée objet · Amérique du Nord 2025 (jour 1)
- Exercice 2 - Programmation orientée objet · Amérique du Nord 2025 (jour 2)
- Exercice 3 - Programmation orientée objet · Amérique du Nord 2024 (jour 2)
- Exercice 3 - Programmation orientée objet · Amérique du Nord 2023 (jour 1)
- Exercice 1 - Programmation orientée objet · Amérique du Nord 2022 (jour 2)