T2.poo : Sujet du TP2.1
T2.poo : Sujet du TP2.1
Groupe ESIEE, Denis BUREAU, juin 2003.
Attention !
Le sujet peut être modifié jusqu'à la veille du TD.
I. Les objectifs
- Concevoir une première classe et la tester.
- Reprendre la gestion de stock du distributeur du TP1
pour en faire une classe.
- Compléter le distributeur avec une classe Monnayeur et une classe
Distributeur (en partie fournies).
II. Notions abordées dans le cours 2
- Les notions de classe et d'objet.
- Les notions d'attributs et de méthodes, de données ou fonctions
membres.
- Les notions de public et de privé, de constructeur et de destructeur.
- Les nouvelles syntaxes Class, ::, ., this
- L'initialisation, le constructeur par recopie.
- Les tableaux d'objets et les objets comportant des objets.
- Les fonctions amies, les membres statiques (données et fonctions).
- L'organisation des fichiers, les inclusions multiples,
les fonctions "constantes".
III. Références dans les documents
Le polycopié "C++ : les classes." et le corrigé du TP1.
IV. Conseils généraux
Il s'agit de créer un distributeur simple mais complet, utilisant un
monnayeur très simple.
Quatre classes donc quatre étapes seront nécessaires: Produit, Stock,
Monnayeur, et Distributeur.
Pour chacune d'entre-elles, vous écrirez un fichier .H contenant
la déclaration de la classe, un fichier .CPP contenant les
définitions des fonctions membres de la classe, et un fichier de test
(.CPP) qui vérifie le bon fonctionnement dans un maximum de cas.
Sauf indication contraire, le destructeur est toujours vide.
Appelez un intervenant dès que quelquechose ne semble pas clair dans
le sujet ou si, après avoir réfléchi, vous ne trouvez pas la solution.
Utilisez si possible les noms de variables et de fonctions donnés dans les
sujets pour rester compatible avec les solutions partielles qui vous seront
données.
Utilisez les fonctions qui accèdent aux données à chaque fois que
c'est possible, plutôt que d'accéder aux données directement.
Créez sur C: un répertoire TP2 et des sous-répertoires ex1 à
ex4.
N'oubliez pas de recopier tous les fichiers sources sur votre compte
à la fin du TP.
Empêchez systématiquement les éventuelles inclusions multiples.
V. Exercice 1
Créer une classe Point.
(à détailler)
VI. Exercice 2
- Ouvrir un nouveau projet TESTPROD (dans ex1).
File/New, Win32 Console Application,
Location: ..., Project Name:, OK,
An empty project/Finish/OK.
- Déclarer une classe Produit (dans PRODUIT.H) avec :
- le nom du produit (nom) de type char *
- le prix du produit (valeur) de type float
- un constructeur à 2 arguments (nom et prix du produit)
- un destructeur pour désallouer le nom
- deux accesseurs en lecture uniquement (acces_nom() et
acces_prix())
- Définir les 4 fonctions membres (dans PRODUIT.CPP).
- Créer un programme de test (TESTPROD.CPP) déclarant deux produits
différents et affichant pour chacun le résultat des 2 accesseurs.
- Fabriquer l'exécutable et vérifier les affichages.
File_View/+Testprod_files,
Source Files avec le bouton droit,
Add Files to Folder.
En maintenant la touche CTRL enfoncée, vous pouvez
sélectionner à la fois PRODUIT.CPP et
TESTPROD.CPP.
Vous pouvez optionnellement ajouter aux Header Files
le fichier PRODUIT.H.
- Tout sauvegarder et fermer le projet.
VII. Exercice 3
- Ouvrir un nouveau projet TESTSTOC (dans ex2).
- Recopier à partir du tp1 les fichiers STOCK.H et
STOCK.CPP. Recopier la nouvelle version de TESTSTOC.INC
(dans E:\TS2\PROF\BUREAUD\POO\TP1) en l'appelant
TESTSTOC.CPP.
Cette version teste plus de cas, donc des erreurs non détectées
au TP1 pourront apparaitre.
- Transformer STOCK.H :
- le commentaire devient "Déclaration de la classe Stock"
- ajouter les 2+1 lignes pour la prévention des inclusions
multiples
- définir le type elem comme Produit plutôt que comme char
- ajouter les 2+1 lignes de déclaration de la classe après les
constantes
- remplacer le commentaire "initialiseur" par "Constructeur"
et transformer l'initialiseur en constructeur
- remplacer les commentaires "utilitaire" par "interne"
et "données" par "données membres"
- ajouter const après l'entête des fonctions qui ne
modifient pas l'objet.
- ajouter le public et les private aux bons endroits
- Transformer STOCK.CPP :
- ne plus inclure TESTSTOC.INC
- reporter les modifications de commentaires de STOCK.H
- modifier la syntaxe de l'entête de chaque fonction sans
toucher au corps, et n'oubliant pas les 'const'
- remplacer l'initialiseur par le constructeur
- Transformer TESTSTOC.CPP :
- inclure et déclarer ce qu'il faut, puis modifier la syntaxe
de tous les appels pour que ce programme soit orienté objet.
- attention aux changements induits par le passage char
® Produit.
- Fabriquer l'exécutable et comparer les affichages avec ceux du tp1.
(la mention "ieme OK." n'apparait plus).
- Tout sauvegarder et fermer le projet.
File translated from
TEX
by
TTH,
version 2.75.
On 19 Nov 2001, 14:46.