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

Énoncé: Exercice 2 - Programmation orientée objet · Bac Numérique et Sciences Informatiques Nouvelle-Calédonie 2025 (jour 1)

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

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