Exercice 3 : Création de la classe cone

Dans cet exercice, vous créez la classe cone à l'aide de l'éditeur visuel. Cette classe représente un cône tridimensionnel.

Dans l'exercice précédent, vous avez utilisé les outils de modélisation UML pour étendre les classes circle et sphere. Dans cet exercice, vous allez utiliser les outils de modélisation UML pour ajouter la classe cone au projet. La classe cone, qui hérite de la classe shape3d, calcule et affiche le volume et la surface en fonction du rayon et de la hauteur du cône. Vous pouvez utiliser les outils de modélisation UML pour ajouter une classe au projet et pour ajouter un attribut à une classe. Pour modifier le corps de la méthode, cliquez deux fois sur la méthode dans le diagramme, puis modifiez le code source dans l'éditeur de code.

Ajout de la classe cone au projet Shapes

Vous pouvez ajouter la classe au projet à l'aide de la vue Explorateur de projet C/C++. Vous pouvez identifier toutes les relations d'héritage à l'aide de l'assistant Nouvelle classe C++.

Pour ajouter la classe cone au projet Shapes, procédez comme suit :
  1. Dans la vue Explorateur de projet C/C++, cliquez à l'aide du bouton droit de la souris sur le projet Shapes, puis cliquez sur Nouveau > Classe.
  2. Dans la zone Nom de la fenêtre Nouvelle classe C++, tapez cone, puis cliquez sur Parcourir.
  3. Dans la fenêtre de sélection de classe de base, cliquez deux fois sur shapes3d dans la liste des types correspondants.
  4. Dans la vue Explorateur de projet C/C++, développez cone.h, cliquez sur l'élément de classe cone, puis faites-le glisser vers l'éditeur de diagramme.

Vous venez d'ajouter la classe cone au projet Shapes. A présent, vous pouvez utiliser les outils de modélisation UML pour ajouter des classes et des attributs dans la nouvelle classe. Votre diagramme doit ressembler à celui-ci :

La projet Shapes contient la nouvelle classe cone.

Ajout des méthodes getColor et setColor dans la classe cone

La classe cone implémente les méthodes getColor et setColor qui sont définies par la classe shape de base.

Pour ajouter les méthodes getColor et setColor dans la classe cone, procédez comme suit :
  1. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Champ.
  2. Dans la zone Nom de la fenêtre Créer le champ C++, tapez color.
  3. Dans la liste Type, tapez string et cliquez sur Terminer.
  4. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  5. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez getColor.
  6. Dans la liste Type de retour, tapez string et cliquez sur Terminer.
  7. Dans la classe cone, cliquez deux fois sur la méthode getColor et, dans l'éditeur de code, définissez le corps de la méthode getColor comme suit : {return color;};
  8. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  9. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez setColor et cliquez sur Terminer.
  10. Dans la classe cone, cliquez deux fois sur la méthode setColor et, dans l'éditeur de code, indiquez void setColor(string c) pour la signature de la méthode, et {color = c;}; pour le corps de la méthode SetColor.

Vous venez d'ajouter les méthodes getColor et setColor dans la classe cone.

Ajout des méthodes getSize et setSize dans la classe cone

La classe cone implémente les méthodes getSize et setSize qui sont définies par la classe shape de base. La zone de taille contient la hauteur du cône.

Pour ajouter les méthodes getSize et setSize dans la classe cone, procédez comme suit :
  1. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Champ.
  2. Dans la zone Nom de la fenêtre Créer le champ C++, tapez size.
  3. Dans la liste Type, sélectionnez double et cliquez sur Terminer.
  4. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  5. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez getSize.
  6. Dans la liste Type de retour, cliquez sur la flèche vers le bas qui se trouve en regard de void, sélectionnez double et cliquez sur Terminer.
  7. Dans la classe cone, cliquez deux fois sur la méthode getSize et, dans l'éditeur de code, définissez le corps de la méthode getSize comme suit : {return size;};
  8. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  9. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez setSize et cliquez sur Terminer.
  10. Dans la classe cone, cliquez deux fois sur la méthode setSize et, dans l'éditeur de code, définissez le corps de la méthode setSize comme suit : {size = s < 0 ? 0:S;};

Vous venez d'ajouter les méthodes getSize et setSize dans la classe cone.

Ajout des méthodes getRadius et setRadius dans la classe cone

La classe cone implémente les méthodes getRadius et setRadius qui sont définies par la classe shape de base. La zone de rayon contient le rayon de la base du cône. L'application utilise le rayon pour calculer la circonférence et le volume du cône.

Pour ajouter les méthodes getRadius et setRadius, procédez comme suit :
  1. Dans l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Champ.
  2. Dans la zone Nom de la fenêtre Créer le champ C++, tapez radius.
  3. Dans la liste Type, cliquez sur double, puis sur Terminer.
  4. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  5. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez getRadius.
  6. Dans la liste Type de retour, sélectionnez double et cliquez sur Terminer.
  7. Dans la classe cone, cliquez deux fois sur la méthode getRadius et, dans l'éditeur de code, définissez le corps de la méthode getRadius comme suit : {return radius;};
  8. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  9. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez setRadius et cliquez sur Terminer.
  10. Dans la classe cone, cliquez deux fois sur la méthode setRadius et, dans l'éditeur de code, définissez le corps de la méthode setRadius comme suit :{radius = r < 0 ? 0:r;};

Vous venez d'ajouter les méthodes getRadius et setRadius dans la classe cone.

Ajout des méthodes surfaceArea et volume dans la classe cone

La classe cone implémente les méthodes surfaceArea et volume qui sont définies par la classe shapes3d. La formule qui permet de calculer la surface d'un cône est pi * r * (r + (r2 + h2)1/2). Celle qui permet de calculer le volume d'un cône est 1/3 x pi x r2 h.

Pour ajouter les méthodes surfaceArea et volume dans la classe cone, procédez comme suit :
  1. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  2. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez surfaceArea.
  3. Dans la liste Type de retour, sélectionnez double et cliquez sur Terminer.
  4. Dans la classe cone, cliquez deux fois sur la méthode surfaceArea et, dans l'éditeur de code, définissez le corps de la méthode surfaceArea comme suit :{return pi * radius * (radius + (pow(pow(radius,2) + pow(size,2),0.5)));};
  5. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  6. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez volume et cliquez sur Terminer.
  7. Dans la classe cone, cliquez deux fois sur la méthode volume et, dans l'éditeur de code, définissez le corps de la méthode volume comme suit : {return 0.333 * pi * (pow(radius,2) * size);};

Vous venez d'ajouter les méthodes surfaceArea et volume dans la classe cone.

Ajout des méthodes set et print dans la classe cone

La classe cone implémente les méthodes set et print qui sont définies par la classe shape de base.

Pour ajouter les méthodes set et print dans la classe cone, procédez comme suit :
  1. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  2. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez print et cliquez sur Terminer.
  3. Dans la classe cone, cliquez deux fois sur la méthode print et, dans l'éditeur de code, définissez le corps de la méthode print comme suit :
    { cout  << "Cone:"
    			<< "\n\tLength = " << getSize()
    			<< "\n\tArea   = " << surfaceArea()
    			<< "\n\tVolume = " << volume()
    			<< "\n\tColor  = " << getColor()
    			<< "\n\n";
    };
  4. Dans le diagramme classdiagram.dnx de l'éditeur de diagramme, cliquez à l'aide du bouton droit de la souris sur la classe cone, puis cliquez sur Ajouter C/C++ > Méthode.
  5. Dans la zone Nom de la fenêtre Créer la méthode C++, tapez set et cliquez sur Terminer.

Vous venez d'ajouter les méthodes print et set dans la classe cone.

Edition du fichier cone.cpp

Le fichier classe cone.cpp contient l'implémentation de la méthode set, ainsi que le constructeur et le destructeur. Vous modifiez le corps de la méthode set pour inviter l'utilisateur à entrer la taille et le rayon du cône. Vous devez également modifier le constructeur par défaut afin de définir les valeurs initiales de la nouvelle classe cone.

Pour éditer le fichier cone.cpp, procédez comme suit :
  1. Dans la vue Explorateur de projet C++, cliquez deux fois sur la classe cone.cpp.
  2. Dans la classe cone.cpp de l'éditeur de code, définissez le corps du constructeur par défaut comme suit : {color="Transparent"; radius=0; size=0;}
  3. Dans la section de déclaration de méthode, définissez le corps de la méthode set comme suit :
    void cone::set()	{
    	double size;
    	double radius;
    	string color;
    	
    	cout << "Entrez la hauteur du cône : ";
    	cin >> size;
    	setSize(size);
    	
    	cout << "Entrez le rayon de la base du cône : ";
    	cin >> radius;
    	setRadius(radius);
    	
    	cout << "Entrez la couleur du cône : ";
    	cin >> color;
    	setColor(color);
    }
  4. Pour sauvegarder le projet, cliquez sur Fichier > Enregistrer.

Vous venez de terminer le projet Shapes en ajoutant la méthode set dans le fichier classe cone.cpp.

Exécution de l'application étendue

Avant de lancer l'application, vous devez ajouter l'instruction include dans la classe main.cpp de sorte que celle-ci contienne la nouvelle classe cone. Vous pouvez lancer l'application et instancier la nouvelle classe cone en modifiant la classe main.cpp.

Pour lancer l'application, procédez comme suit :
  1. Dans la vue Explorateur de projet C++, cliquez deux fois sur la classe main.cpp.
  2. Dans la section de déclaration de la classe, sous #include "tetrahedron.h", ajoutez l'instruction include suivante : #include "cone.h"
  3. Dans l'éditeur de code, ajoutez le code suivant dans le corps principal de la classe :
    //instanciation et exécution de la classe cone
    		cone c;
    		c.print();
    		c.set();
    		c.print();
  4. Pour sauvegarder et générer le projet, cliquez sur Fichier > Enregistrer.
  5. Cliquez sur Exécuter.

Le programme affiche la taille, la couleur, la surface et le volume de la forme conique et vous invite à entrer des valeurs pour la nouvelle instance de cone.