Exercice 2 - Partie A · Bac Numérique et Sciences Informatiques Métropole 2024 (sujet 2)
Thème : Programmation orientée objet : classes, attributs, méthodes · Tiré du sujet Métropole France 2 (2024)
Énoncé
EXERCICE 2 (6 points)
Cet exercice porte sur la programmation orientée objets, les tris, les algorithmes gloutons, la récursivité et les assertions.
Cet exercice est composé de trois parties dont les deux dernières sont indépendantes entre elles.
Dans cet exercice, l'entête des fonctions est décrit avec le type des objets en paramètre et le type de l'objet renvoyé. Ainsi la fonction puissance qui prend un paramètre flottant x et un entier n puis qui renvoie le flottant x**n, a pour entête puissance(x: float, n: int) -> float.
Une entreprise transporte des marchandises. Elle souhaite maximiser son profit en optimisant le remplissage de ses moyens de transport. On considère qu'un moyen de transport est limité par son volume (exprimé en litres). Chaque marchandise est caractérisée par son prix (en euros) et son volume indivisible (en litres).
Supposons qu'on ait trois marchandises caractérisées par les couples (prix, volume) suivants: , et . Si le moyen de transport peut encore charger 25 litres, il vaut mieux charger la marchandise numéro 3 qui rapporte 250 € à l'entreprise plutôt que charger les marchandises numéros 2 et 3 qui rapportent 200 € au total pour le même espace utilisé.
Partie A – Quelques outils
Nous souhaitons définir une classe Marchandise dont chaque instance définit une marchandise possédant deux attributs entiers prix et volume.
1.
Compléter le constructeur qui renvoie un objet Marchandise. Utiliser le mot-clé assert afin qu'une exception soit levée si le paramètre v n'est pas strictement positif.
On rappelle que si condition est une expression Python booléenne s'évaluant à True ou False, l'instruction assert condition déclenche une exception quand la condition s'évalue à False.
class Marchandise:
def __init__(self, p: int, v: int) -> 'Marchandise':
...
2.
Donner une instruction qui permet de créer une variable m1 représentant une marchandise d'un volume de 7 litres coûtant 20 €.
3.
Proposer une méthode ratio(self) -> float qui renvoie le ratio prix/volume d'une marchandise.
4.
Proposer une fonction prixListe(tab: list) -> int qui renvoie le prix cumulé de l'ensemble des marchandises formant le tableau tab.

Corrigé
Corrigé proposé par AprenAI (non officiel)
1. Compléter le constructeur qui renvoie un objet Marchandise. Utiliser le mot-clé assert afin qu'une exception soit levée si le paramètre v n'est pas strictement positif.
Réponse : class Marchandise: def __init__(self, p: int, v: int) -> 'Marchandise': assert v > 0, "Le volume doit être strictement positif" self.prix = p self.volume = v
2. Donner une instruction qui permet de créer une variable m1 représentant une marchandise d'un volume de 7 litres coûtant 20 €.
Réponse : m1 = Marchandise(20, 7)
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 - Programmation orientée objet · Métropole 2024 (sujet 1) · Exercice 3 - Partie A · Métropole 2024 (sujet 2) ›
Plus d’exercices de Programmation orientée objet : classes, attributs, méthodes
- Exercice 1 - Programmation orientée objet · Métropole 2026 (sujet 2)
- Exercice 2 - Programmation orientée objet · Métropole 2025 (sujet 1)
- Exercice 2 - Partie C · Métropole 2 remplacement 2025
- Exercice 3 - Programmation orientée objet · Métropole 2024 (sujet 1)
- Exercice 3 - Partie A · Métropole 2024 (sujet 2)
- Exercice 3 · Métropole 2023 (sujet 1)
- Exercice 5 · Métropole 2022 (sujet 1)
- Exercice 2 - POO · Métropole 1 remplacement 2022
- Exercice 5 - Questions 1 à 4 : Programmation orie… · Métropole 2022 (sujet 2)
- Exercice 4 · Métropole 1 remplacement 2021