Collection d`ustensiles [ka02] - Exercice

Transcription

Collection d`ustensiles [ka02] - Exercice
Collection d’ustensiles [ka02] - Exercice
Karine Zampieri, Stéphane Rivière, Béatrice Amerein-Soltner
Unisciel
algoprog
Version 10 avril 2015
Table des matières
1 Collection d’ustensiles / pg-brocanteC1 (C++,
1.1 Hiérarchie de classes . . . . . . . . . . . . . . .
1.2 Chargement par fichier . . . . . . . . . . . . . .
1.3 Décompte du nombre d’objets . . . . . . . . . .
1.4 Surface des assiettes . . . . . . . . . . . . . . .
1.5 Valeur des ustensiles . . . . . . . . . . . . . . .
1
TP)
. . . .
. . . .
. . . .
. . . .
. . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
1
2
2
3
3
Collection d’ustensiles / pg-brocanteC1 (C++, TP)
Cet exercice élabore une hiérarchie de classes d’ustensiles anciens de cuisine, plus précisément des assiettes (rondes ou carrés) et des cuillères, en réalise le comptage, calcule la
surface totale des assiettes et estime la valeur totale des ustensiles.
1.1
Hiérarchie de classes
Il convient de modéliser les objets de la collection avec une hiérarchie de classes comme
indiquée ci-après.
– Chaque ustensile a une année (entier) de fabrication.
– Un Ustensile est une Assiette ou une Cuillere.
– Il n’est pas possible d’instancier la classe Ustensile.
– Une Assiette est une AssietteRonde ou une AssietteCarre.
– Il n’est pas possible d’instancier la classe Assiette.
– Chaque AssietteRonde a un rayon (réel).
– Chaque AssietteCarree a un côté (réel).
– Chaque Cuillere a une longueur (réel).
– Une Brocante est une collection d’ustensiles.
Créez une hiérarchie de classes permettant la gestion de la collection.
1
Unisciel algoprog – Collection d’ustensiles / ka02
2
Écrivez le code de cette hiérarchie de classes, y compris les variables d’instance et les
constructeurs.
1.2
Chargement par fichier
Écrivez une méthode Brocante::charger(fn) qui charge l’ensemble des ustensiles depuis un nom de fichier fn (chaine de caractères) et qui crée dynamiquement les instances.
La méthode retournera Vrai si l’opération de chargement a été réalisée, Faux sinon.
Aide détaillée Écrivez une méthode interne ajouterUstensile<T>(is) qui lit des
caractéristiques d’un ustensile depuis un flux d’entrée is et ajoute une instance dynamique de type T à la collection.
Supposez qu’il y a une ligne par ustensile et que le premier caractère définit le type
d’ustensile : ’A’ ou ’a’ (assiette carrée), ’R’ ou ’r’ (assiette ronde), ’C’ ou ’c’ (cuillère).
Écrivez un programme qui demande le nom de fichier puis charge les données et affiche
la taille de la collection.
Téléchargez le fichier des données.
@[dt-brocante1.txt]
r
c
a
c
r
1926
1881
1935
1917
1837
8.4
7.3
5.6
8.8
5.4
//
//
//
//
//
assiette ronde
cuillere
assiette carree
cuillere
assiette ronde
Testez.
1.3
Décompte du nombre d’objets
Écrivez un modèle de méthodes Brocante::decompte<T> qui calcule et renvoie le nombre
d’objets de type T qui sont stockés dans la collection d’ustensiles.
Complétez votre programme afin de décompter le nombre d’objets de type Cuillere
stockés dans la collection d’ustensiles.
Testez.
Unisciel algoprog – Collection d’ustensiles / ka02
1.4
3
Surface des assiettes
La surface des assiettes se calcule comme suit :
– AssietteRonde : π · r2 (où r dénote son rayon)
– AssietteCarre : c2 (où c dénote son côté)
Complétez la hiérarchie des classes avec une méthode surface.
Écrivez un modèle de méthodes Brocante::surface<T> qui calcule et renvoie la somme
des surfaces des objets de type T stockés dans la collection d’ustensiles.
Complétez votre programme afin d’afficher la somme des surfaces de toutes les Assiettes
(rondes ou carrées) stockées dans la collection d’ustensiles.
Testez.
1.5
Valeur des ustensiles
La valeur des ustensiles se calcule comme suit :
– Cuillere et AssietteRonde :
– Si l’ustensile a moins de 50 ans, il vaut 0 e.
– Sinon il vaut 1 e pour chaque année qu’il a de plus de 50 ans.
Par exemple, pour l’année 2005, un tel objet fabriqué en 1943 vaut :
2005 - annee - 50 = 12 euros
– AssietteCarree :
– Cinq fois la valeur qu’elle aurait eu en étant ronde (car les assiettes carrées sont plus
rares).
Ainsi pour l’année 2005, un tel objet fabriqué en 1943 vaut :
5 * 12 = 60 euros
Complétez la hiérarchie des classes avec une méthode eval(annee) qui évalue et renvoie
la valeur de l’objet relativement à une annee. Ici aussi évitez de dupliquer inutilement
des instructions.
Écrivez une méthode Brocante::valeur(annee) qui calcule et renvoie la valeur totale
de la collection d’ustensiles relativement à une annee.
Complétez votre programme afin d’afficher la valeur de la collection d’ustensiles en 2014
par exemple.
Unisciel algoprog – Collection d’ustensiles / ka02
Testez. Voici le résultat d’exécution.
Nom du fichier des donnees? dt-brocante1.txt
Taille de la collection: 5
Il y a 2 cuilleres
Surface totale des assiettes: 344.64
Valeur totale en 2014: 440 euros
4

Documents pareils

Collection d`ustensiles [ka02] - Exercice

Collection d`ustensiles [ka02] - Exercice Écrivez une méthode Brocante::charger(fn) qui charge l’ensemble des ustensiles depuis un nom de fichier fn (chaine de caractères) et qui crée dynamiquement les instances. La méthode retournera...

Plus en détail