Exercice 1 - Programmation orientée objet · Bac Numérique et Sciences Informatiques Polynésie 2025 (jour 1)
Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Jour 1 (2025)
Énoncé
Exercice 1 (6 points)
Cet exercice porte sur les protocoles réseaux, l'algorithmique et la POO.
Partie A
Un cœur de réseau est constitué d'un maillage dans lequel les routeurs à sont reliés par des liaisons physiques dont le débit en Mbps (Méga-bits par seconde) est indiqué sur la figure suivante.
Derrière chaque routeur à , un switch distribue un réseau local à .
Les protocoles utilisés sont le protocole RIP et le protocole OSPF, qui minimisent respectivement le nombre de routeurs traversés et la somme des coûts des liaisons physiques empruntées.
On souhaite, désormais, simuler en Python le fonctionnement du réseau .
On donne, ci-après, les documentations des méthodes split et join:
la documentation de la méthode split de la classe str est la suivante:
split(self, séparateur)
Renvoie la liste des sous-chaînes de caractères
délimitées par le séparateur dans l'instance courante de
chaîne de caractères.
Exemple:
>>> 'ab-pq-rs'.split('-')
['ab', 'pq', 'rs']
la documentation de la méthode join de l'objet str:
join(self, iterable)
Fusionne les chaînes de caractères contenues dans iterable
en le liant par la sous-chaîne depuis laquelle cette
méthode est appelée.
Exemple:
>>> '.'.join(['ab', 'pq', 'rs'])
'ab.pq.rs'
On commence par créer la classe IPv4 suivante:
1 class IPv4(object):
2 def __init__(self, adresse:str):
3 """
4 Constructeur de la classe de calcul sur une
5 adresse IPv4 dont la notation décimale pointée
6 est passée en paramètre.
7 """
8 self.adresse = adresse
9
10 def octets(self)->list[int]:
11 """
12 Découpe l'adresse décimale pointée en la liste
13 des 4 entiers correspondants.
14 """
15 return [int(i) for i in self.adresse.split(".")]
Pour mémoire, l'opérateur & entre deux entiers effectue le ET logique bit à bit de la représentation binaire de ces entiers et renvoie l'entier correspondant à la représentation binaire ainsi obtenue.
>>> 192 & 255
192
9.
Recopier sur la copie et compléter les lignes 15 et 16 du code de la méthode masquer de la classe IPv4, donné ci-dessous. La méthode doit correspondre au docstring.
1 def masquer(self, masque: str)->str:
2 """
3 Détermine le préfixe masqué de l'adresse,
4 le masque (décimal pointé) étant passé en
5 paramètre.
6 >>> add = IPv4('192.168.1.100')
7 >>> add.masquer('255.192.0.0')
8 '192.128.0.0'
9 """
10 tmp = []
11 ip = self.octets()
12 crible = IPv4(masque).octets()
13 for i in range(4):
14 # Opération booléenne:
15 tmp.append(... &...)
16 return ".".join(...)
10.
Recopier sur la copie et compléter les lignes 19 et 20 du code de la méthode adresse_suivante de la classe IPv4, donné ci-dessous. La méthode doit correspondre au docstring.
1 def adresse_suivante(self, adresse_max:str)->str:
2 """
3 Détermine l'adresse décimale pointée suivant
4 immédiatement l'adresse courante, sous réserve
5 d'existence d'une adresse disponible
6 >>> add = IPv4('192.168.1.100')
7 >>> add.adresse_suivante('192.168.1.254')
8 '192.168.1.101'
9 >>> add = IPv4('192.168.1.255')
10 >>> add.adresse_suivante('192.168.255.254')
11 '192.168.2.0'
12 """
13 assert self.adresse < adresse_max
14 liste_courante = self.octets()
15 liste_suivante = list()
16 retenue = 1
17 for index in range(4):
18 somme = liste_courante[3 - index] + retenue
19 valeur, retenue =...,...
20 liste_suivante =...
21 return '.'.join(liste_suivante)

Corrigé
Corrigé proposé par AprenAI (non officiel)
9. Ligne 15 de la méthode masquer
Réponse : ```python tmp.append(ip[i] & crible[i]) ``` ```python ip[i] & crible[i] ```
9. Ligne 16 de la méthode masquer
Réponse : ```python return ".".join([str(x) for x in tmp]) ``` ```python return ".".join(map(str, tmp)) ``` ```python [str(x) for x in tmp] ```
Les réponses des 2 questions restantes 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 3 - Partie 1 : Structures de données · Polynésie 2026 (jour 1) · Exercice 1 · Polynésie 2025 (jour 2) ›