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 R1R_1 à R6R_6 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 R1R_1 à R5R_5, un switch distribue un réseau local LAN1LAN_1 à LAN5LAN_5.

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 LAN1LAN_1.

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)

Énoncé: Exercice 1 - Programmation orientée objet · Bac Numérique et Sciences Informatiques Polynésie 2025 (jour 1)

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) ›

Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes