Exercice 2 - Programmation orientée objet · Bac Numérique et Sciences Informatiques Nouvelle-Calédonie 2025 (jour 1)
Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Jour 1 (2025)
Énoncé
Cet exercice porte sur les bases de données et la programmation orientée objet.
Dans cet exercice, on pourra utiliser les clauses du langage SQL pour:
construire des requêtes d'interrogation à l'aide de SELECT, FROM, WHERE (avec les opérateurs logiques AND, OR), JOIN... ON;
construire des requêtes d'insertion et de mise à jour à l'aide de UPDATE, INSERT, DELETE;
affiner les recherches à l'aide de DISTINCT et ORDER BY.
Susie décide de créer une base de données qui recense des randonnées allant d'un parking à un lac.
Elle crée trois relations représentées sur le schéma ci-dessous (figure 1).
Les clés primaires sont signalées par une clé. Dans la relation rando:
depart est une clé étrangère qui référence l'attribut idP de la relation parking;
arrivee est une clé étrangère qui référence l'attribut idL de la relation lac.
L'altitude, exprimée en mètre, est un entier.
Voici un extrait des enregistrements de ces trois relations.
parking
idP · commune · altitude · coord_GPS
1 · Chamonix · 1 026 · (45.98;6.89)
2 · Argentiere · 1 429 · (45.99;6.92)
3 · Passy · 600 · (45.92;6.72)
4 · Passy · 1 181 · (45.95;6.71)
5 · Nevache · 2 022 · (45.05;6.52)
rando
idR · depart · arrivee
1 · 1 · 1
2 · 2 · 1
3 · 1 · 2
4 · 3 · 3
lac
idL · nom · altitude
1 · Lac Blanc · 2 354
2 · Lacs Noirs · 2 564
3 · Lac Vert · 1 266
4 · Lac Rouge · 2 585
Susie souhaite obtenir pour chacun des parkings le nombre de randonnées qui en partent.
Elle n'a pas encore appris à le faire en SQL et décide de le faire en Python. Pour cela elle définit la classe Rando ci-dessous permettant de représenter chacune des randonnées. La table rando est alors donnée par une liste d'objets de la classe Rando.
class Rando:
def __init__(self, idR, depart, arrivee):
self.idR = idR # identifiant de la rando
self.depart = depart # identifiant du parking
self.arrivee = arrivee # identifiant du lac
8.
Recopier et compléter les lignes 3 et 5 de la fonction get_parking qui prend en paramètre une liste de randonnées et qui renvoie la liste des identifiants des différents parkings, points de départ de ces randonnées (cette liste ne devra pas avoir de doublon).
def get_parking(randos):
parkings = []
for...:
if rando.depart not in parkings:
...
return parkings
Par exemple, get_parking([Rando(1, 1, 1), Rando(2, 2, 1), Rando(3, 1, 2)]) renvoie [1, 2].
9.
Recopier et compléter la ligne 4 de la fonction get_nb_rando qui prend en paramètres un identifiant de parking et une liste de randonnées, et qui renvoie le nombre de randonnées qui partent de ce parking.
def get_nb_rando(parking, randos):
nb = 0
for rando in randos:
if...:
nb = nb + 1
return nb
Par exemple, get_nb_rando(1, [Rando(1, 1, 1), Rando(2, 2, 1), Rando(3, 1, 2)]) renvoie 2.
10.
Écrire une fonction nb_rando_par_parking qui prend en paramètre une liste de randonnées et qui renvoie un dictionnaire qui associe à chaque identifiant de parking le nombre de randonnées qui partent de ce parking.
Par exemple, nb_rando_par_parking([Rando(1, 1, 1), Rando(2, 2, 1), Rando(3, 1, 2)]) renvoie {1: 2, 2: 1}.
def nb_rando_par_parking(randos):

Corrigé
Corrigé proposé par AprenAI (non officiel)
8. Ligne 3 de la fonction get_parking
Réponse : ```python for rando in randos: ```
8. Ligne 5 de la fonction get_parking
Réponse : ```python parkings.append(rando.depart) ```
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 1 - Programmation orientée objet · Nouvelle-Calédonie 2025 (jour 1) · Exercice 5 · Nouvelle-Calédonie 2022 (jour 1) ›