Exercice 3 - Partie B (Questions 9 à 11) · Bac Numérique et Sciences Informatiques Centres étrangers (Afrique) 2024 (jour 1)
Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Jour 1 (2024)
Énoncé
EXERCICE 3 (8 points)
Cet exercice porte sur la programmation Python, la programmation orientée objet, les bases de données relationnelles et les requêtes SQL.
L'objectif est de faciliter la gestion du système d'information d'un camping municipal. Les informations nécessaires sont stockées dans une base de données relationnelle composée de trois relations. On pourra utiliser les mots-clés SQL suivants: AND, FROM, INSERT, INTO, JOIN, ON, SELECT, SET, UPDATE, VALUES, WHERE.
Voici le schéma des deux premières relations:
Client ( id_client, nom, prenom, adresse, ville, pays, telephone)
Reservation ( id_reservation, #id_client, #id_emplacement, nombre_personne, date_arrivee, date_depart)
Dans ce schéma:
la clé primaire de chaque relation est définie par son attribut souligné;
les attributs précédés de # sont les clés étrangères.
La troisième relation est appelée Emplacement et elle contient tous les emplacements du camping. Le tableau ci-dessous en donne un extrait.
Partie B
Dans cette partie, on souhaite éditer une facture correspondant au séjour d'un client. Pour cela, on dispose d'une fonction Python qui récupère auprès de la base de données, à la manière de la question 8, les informations concernant la réservation voulue et renvoie le résultat sous forme d'un tuple contenant trois objets respectivement des classes Client, Reservation et Emplacement.
from datetime import datetime
class Client:
def __init__(self, nom, prenom, adresse, ville, pays,
telephone):
self.nom = nom
self.prenom = prenom
self.adresse = adresse
self.ville = ville
self.pays = pays
self.telephone = telephone
class Reservation:
def __init__(self, id_reservation, nombre_personne,
date_arrivee, date_depart):
self.id_reservation = id_reservation
self.nombre_personne = nombre_personne
self.date_arrivee = date_arrivee
self.date_depart = date_depart
def nb_jours(self):
""" renvoie, à l'aide de l'attribut days de la classe
timedelta, un entier correspondant
au nombre de jours passés au camping."""
return (self.date_depart - self.date_arrivee).days
class Emplacement:
def __init__(self, nom, tarif_journalier):
self.nom = nom
self.tarif_journalier = tarif_journalier
9.
Expliquer pourquoi le terme self est utilisé comme paramètre pour les méthodes des classes Client, Reservation et Emplacement.
10.
Instancier une variable client01 de la classe Client représentant un client se nommant CODD Edgar habitant au 28 rue des Capucines à Lyon, France, ayant pour numéro de téléphone le 0555555555.
On considère un tuple constitué de trois objets, respectivement dans cet ordre, des classes Client, Reservation et Emplacement. On souhaite écrire une fonction qui renvoie le montant dû par ce client pour cet emplacement et pour cette durée de séjour. Sachant qu'au tarif journalier de location de l'emplacement il faut ajouter une taxe de séjour de 2,20 € par jour et par personne.
Exemple de calcul du montant à régler pour un client ayant réservé pour 4 personnes pendant 12 jours un emplacement à 30 € la journée:
>>> 30 * 12 + 4 * 2.20 * 12
465.6
11.
Compléter la ligne 5 de la fonction montant_a_regler.
def montant_a_regler(triplet):
""" renvoie le montant en euros
à régler pour cette réservation """
client, reservation, emplacement = triplet
return...
return

Corrigé
Corrigé proposé par AprenAI (non officiel)
9. Expliquer pourquoi le terme self est utilisé comme paramètre pour les méthodes des classes Client, Reservation et Emplacement.
Réponse : Le paramètre self représente l'instance courante de la classe (l'objet sur lequel la méthode s'applique). Il permet d'accéder aux attributs et méthodes propres à cette instance et de les modifier.
10. Instancier une variable client01 de la classe Client représentant un client se nommant CODD Edgar habitant au 28 rue des Capucines à Lyon, France, ayant pour numéro de téléphone le 0555555555.
Réponse : ```python client01 = Client('CODD', 'Edgar', '28 rue des Capucines', 'Lyon', 'France', '0555555555') ```
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 · Centres étrangers (Afrique) 2026 (jour 2) · Exercice 1 - Partie A · Centres étrangers (Afrique) 2024 (jour 2) ›
Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes
- Exercice 1 - Programmation orientée objet · Centres étrangers (Afrique) 2026 (jour 1)
- Exercice 3 - Programmation orientée objet · Centres étrangers (Afrique) 2026 (jour 1)
- Exercice 1 - Partie A · Centres étrangers (Afrique) 2026 (jour 2)
- Exercice 1 - Partie A · Centres étrangers (Afrique) 2024 (jour 2)
- Exercice 4 - Programmation orientée objet · Centres étrangers (Afrique) 2022 (jour 2)
- Exercice 1 · Centres étrangers (Afrique) 2021 (jour 1)
- Exercice 5 · Centres étrangers (Afrique) 2021 (jour 2)