Übung 3: Kegelklasse erstellen

In dieser Übung werden Sie die Kegelklasse mit Hilfe des Visual Editor erstellen. Die Kegelklasse stellt einen dreidimensionalen Kegel dar.

In der vorherigen Übung haben Sie UML-Modellierungstools verwendet, um die Kreis- und Kugelklassen zu erweitern. In dieser Übung verwenden Sie die UML-Modellierungstools, um die Kegelklasse dem Projekt hinzuzufügen. Die Kegelklasse, die aus der Klasse shape3d übernimmt, berechnet das Volumen und den Flächeninhalt auf der Basis des Radius und der Höhe des Kegels. Sie können die UML-Modellierungstools verwenden, um dem Projekt eine Klasse und einer Klasse ein Attribut hinzuzufügen. Klicken Sie doppelt auf die Methode im Diagramm, um den Text der Methode zu bearbeiten, und bearbeiten Sie den Quellcode im Code-Editor.

Kegelklasse dem Formenprojekt hinzufügen

Sie können die Klasse dem Projekt hinzufügen, indem Sie die C/C++-Projektexplorersicht verwenden. Sie können alle Vererbungsbeziehungen mit Hilfe des Assistenten Neue C++-Klasse erkennen.

Gehen Sie wie folgt vor, um die Kegelklasse dem Formenprojekt hinzuzufügen:
  1. Klicken Sie in der C/C++-Projektexplorersicht mit der rechten Maustaste auf das Projekt Shapes. Klicken Sie anschließend auf Neu > Klasse.
  2. Geben Sie im Fenster Neue C++-Klasse im Feld Name Folgendes ein: cone. Klicken Sie anschließend auf Durchsuchen.
  3. Klicken Sie im Fenster Basisklasse auswählen in der Liste Übereinstimmende Typen doppelt auf shapes3d.
  4. Erweitern Sie in der C/C++-Projektexplorersicht den Eintrag cone.h. Klicken Sie auf das Kegelklassenelement und ziehen Sie es in den Diagrammeditor.

Sie haben nun die Kegelklasse dem Formenprojekt hinzugefügt. Sie können jetzt die UML-Modellierungstools verwenden, um Klassen und Attribute der neuen Klasse hinzuzufügen. Ihr Diagramm wird jetzt wie in der folgenden Abbildung aufgeführt dargestellt:

Das Formenprojekt enthält die neue Kegelklasse.

Die Methoden 'getColor' und 'setColor' der Kegelklasse hinzufügen

Die Kegelklasse implementiert die Methoden 'getColor' und 'setColor', die die Basisformenklasse definiert.

Gehen Sie wie folgt vor, um die Methoden 'getColor' und 'setColor' der Kegelklasse hinzuzufügen:
  1. Klicken Sie im Diagrammeditor im Diagramm classdiagram.dnx mit der rechten Maustaste auf C/C++ hinzufügen > Feld.
  2. Geben Sie im Fenster C++-Feld erstellen im Feld Name Folgendes ein: color.
  3. Geben Sie in der Liste Typ den Eintrag string ein, und klicken Sie auf Fertig stellen.
  4. Klicken Sie im Diagrammeditor classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  5. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: getColor.
  6. Geben Sie in der Liste Rückgabetyp Folgendes ein: string. Klicken Sie anschließend auf Fertig stellen.
  7. Klicken Sie in der Klasse Kegel doppelt auf die Methode getColor, und geben Sie im Code-Editor den Text der Methode 'getColor' folgendermaßen ein: {return color;};
  8. Klicken Sie im Diagrammeditor im Diagramm classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  9. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: setColor. Klicken Sie anschließend auf Fertig stellen.
  10. Klicken Sie in der Kegelklasse doppelt auf die Methode setColor, und geben Sie im Code-Editor die Signatur der Methode folgendermaßen an: void setColor(string c). Geben Sie den Text der Methode 'setColor' als {color = c;}; an.

Sie haben nun die Methoden 'getColor' und 'setColor' der Kegelklasse hinzugefügt.

Die Methoden 'getSize' und 'setSize' der Kegelklasse hinzufügen

Die Kegelklasse implementiert die Methoden 'getSize' und 'setSize', die die Basisformenklasse definiert. Das Größenfeld speichert die Höhe des Kegels.

Gehen Sie wie folgt vor, um die Methoden 'getSize' und 'setSize' der Kegelklasse hinzuzufügen:
  1. Klicken Sie im Diagrammeditor im Diagramm classdiagram.dnx mit der rechten Maustaste auf C/C++ hinzufügen > Feld.
  2. Geben Sie im Fenster C++-Feld erstellen im Feld Name Folgendes ein: size.
  3. Wählen Sie in der Liste Typ die Option double aus, und klicken Sie auf Fertig stellen.
  4. Klicken Sie im Diagrammeditor classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  5. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: getSize.
  6. Klicken Sie in der Liste Rückgabetyp auf den Abwärtspfeil neben void, wählen Sie double aus, und klicken Sie auf Fertig stellen.
  7. Klicken Sie in der Kegelklasse doppelt auf die Methode getSize, und geben Sie im Code-Editor den Text der Methode 'getSize' folgendermaßen an: {return size;};
  8. Klicken Sie im Diagrammeditor classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  9. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: setSize. Klicken Sie anschließend auf Fertig stellen.
  10. Klicken Sie in der Kegelklasse auf die Methode setSize, und geben Sie im Code-Editor den Text der Methode 'setSize' folgendermaßen an: {size = s < 0 ? 0:S;};

Sie haben nun die Methoden 'getSize' und 'setSize' der Kegelklasse hinzugefügt.

Die Methoden 'getRadius' und 'setRadius' der Kegelklasse hinzufügen

Die Kegelklasse implementiert die Methoden 'getRadius' und 'setRadius', die die Basisformenklasse definiert. Das Radiusfeld speichert den Radius an der Basis des Kegels. Die Anwendung verwendet den Radius, um den Umfang und das Volumen des Kegels zu berechnen.

Gehen Sie wie folgt vor, um die Methoden 'getRadius' und 'setRadius' hinzuzufügen:
  1. Klicken Sie im Diagrammeditor mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Feld.
  2. Geben Sie im Fenster C++-Feld erstellen im Feld Name Folgendes ein: radius.
  3. Klicken Sie in der Typliste auf double, und klicken Sie auf Fertig stellen.
  4. Klicken Sie im Diagrammeditor classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  5. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: getRadius.
  6. Wählen Sie in der Liste Rückgabetyp die Option double aus, und klicken Sie auf Fertig stellen.
  7. Klicken Sie in der Kegelklasse doppelt auf die Methode 'getRadius', und geben Sie im Code-Editor den Text der Methode 'getRadius' folgendermaßen an: {return radius;};
  8. Klicken Sie im Diagrammeditor classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  9. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: setRadius. Klicken Sie anschließend auf Fertig stellen.
  10. Klicken Sie in der Kegelklasse doppelt auf die Methode 'setRadius', und geben Sie im Code-Editor den Text der Methode 'setRadius' folgendermaßen an: {radius = r < 0 ? 0:r;};

Sie haben nun die Methoden 'getRadius' und 'setRadius' der Kegelklasse hinzugefügt.

Die Methoden 'surfaceArea' und 'volume' der Kegelklasse hinzufügen

Die Kegelklasse implementiert die Methoden zum Flächeninhalt und Volumen, die die Klasse shapes3d definiert. Die zur Berechnung des Flächeninhalts eines Kegels verwendete Formel ist Pi * r * (r + (r2 + h2)1/2). Die Formel zur Berechnung des Volumens eines Kegels ist 1/3 x Pi x r2 h.

Gehen Sie wie folgt vor, um die Methoden 'surfaceArea' und 'volume' der Kegelklasse hinzuzufügen:
  1. Klicken Sie im Diagrammeditor classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  2. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: surfaceArea.
  3. Wählen Sie in der Liste Rückgabetyp die Option double aus, und klicken Sie auf Fertig stellen.
  4. Klicken Sie in der Kegelklasse doppelt auf die Methode surfaceArea, und geben Sie im Code-Editor den Text der Methode 'surfaceArea' folgendermaßen ein: {return pi * radius * (radius + (pow(pow(radius,2) + pow(size,2),0.5)));};
  5. Klicken Sie im Diagrammeditor im Diagramm classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  6. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: volume. Klicken Sie anschließend auf Fertig stellen.
  7. Klicken sie in der Kegelklasse doppelt auf die Methode volume, und geben Sie im Code-Editor den Text der Methode 'volume' folgendermaßen an: {return 0.333 * pi * (pow(radius,2) * size);};

Sie haben nun die Methoden 'surfaceArea' und 'volume' der Kegelklasse hinzugefügt.

Die Methoden 'set' und 'print' der Kegelklasse hinzufügen

Die Kegelklasse implementiert die Methoden 'set' und 'print', die die Basisformenklasse definiert.

Gehen Sie wie folgt vor, um die Methoden 'set' und 'print' der Kegelklasse hinzuzufügen:
  1. Klicken Sie im Diagrammeditor im Diagramm classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  2. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: print. Klicken Sie anschließend auf Fertig stellen.
  3. Klicken Sie in der Kegelklasse doppelt auf die Methode print, und geben Sie im Code-Editor den Text der Methode 'print' folgendermaßen ein:
    { cout  << "Kegel:"
    			<< "\n\tLänge   = " << getSize()
    			<< "\n\tFläche  = " << surfaceArea()
    			<< "\n\tVolumen = " << volume()
    			<< "\n\tFarbe   = " << getColor()
    			<< "\n\n";
    };
  4. Klicken Sie im Diagrammeditor im Diagramm classdiagram.dnx mit der rechten Maustaste auf die Kegelklasse. Klicken Sie anschließend auf C/C++ hinzufügen > Methode.
  5. Geben Sie im Fenster C++-Methode erstellen im Feld Name Folgendes ein: set. Klicken Sie anschließend auf Fertig stellen.

Sie haben nun die Methoden 'print' und 'set' der Kegelklasse hinzugefügt.

Datei cone.cpp bearbeiten

Die Klassendatei cone.cpp enthält die Implementierung der Methode 'set' sowie den Konstruktor und Destruktor. Sie modifizieren den Test der Methode 'set', um den Benutzer zur Eingabe der Größe und des Radius des Kegels aufzufordern. Sie müssen außerdem den Standardkonstruktor bearbeiten, um die Anfangswerte der neuen Kegelklasse festzulegen.

Gehen Sie wie folgt vor, um die Datei cone.cpp zu bearbeiten:
  1. Klicken Sie in der Sicht C++-Projektexplorer doppelt auf die Klasse cone.cpp.
  2. Geben Sie im Code-Editor in der Klasse cone.cpp den Text des Standardkonstruktors folgendermaßen an: {color="Transparent"; radius=0; size=0;}
  3. Geben Sie im Abschnitt zur Methodendeklaration den Text der Methode 'set' folgendermaßen an:
    void cone::set()	{
    	double size;
    	double radius;
    	string color;
    	
    	cout << "Geben Sie die Höhe des Kegels ein: ";
    	cin >> size;
    	setSize(size);
    	
    	cout << "Geben Sie den Radius des Kegels an der Basis ein: ";
    	cin >> radius;
    	setRadius(radius);
    	
    	cout << "Geben Sie die Farbe des Kegels ein: ";
    	cin >> color;
    	setColor(color);
    }
  4. Klicken Sie auf Datei > Speichern, um das Projekt zu speichern.

Sie haben nun das Formenprojekt vollständig abgeschlossen, indem Sie der Klassendatei cone.cpp die Methode 'set' hinzugefügt haben.

Erweiterte Anwendung ausführen

Bevor Sie die Anwendung ausführen können, müssen Sie die Include-Anweisung in die Klasse main.cpp hinzufügen, damit die neue Kegelklasse eingeschlossen wird. Sie können die Anwendung ausführen und die neue Kegelklasse instanziieren, indem Sie die Klasse main.cpp modifizieren.

Gehen Sie wie folgt vor, um die Anwendung auszuführen:
  1. Klicken Sie in der Sicht C++-Projektexplorer doppelt auf die Klasse main.cpp.
  2. Fügen Sie im Deklarationsabschnitt der Klasse unter #include "tetrahedron.h" die folgende Include-Anweisung hinzu: #include "cone.h"
  3. Fügen Sie im Code-Editor im Hauptteil der Klasse, den folgenden Code hinzu:
    //Kegelklasse instanziieren und ausführen
    		cone c;
    		c.print();
    		c.set();
    		c.print();
  4. Klicken Sie auf Datei > Speichern, um das Projekt zu speichern und zu erstellen.
  5. Klicken Sie auf Ausführen.

Das Programm zeigt Größe, Farbe, Flächeninhalt und Volumen der Kegelform an und fordert Sie auf, Werte für die neue Kegelinstanz anzugeben.