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

Énoncé: Exercice 3 - Partie B (Questions 9 à 11) · Bac Numérique et Sciences Informatiques Centres étrangers (Afrique) 2024 (jour 1)

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