Esercizio 3: Creazione della classe cone

In questo esercizio, verrà creata la classe cone mediante l'editor visivo. La classe cone rappresenta un cono a 3 dimensioni.

Nell'esercizio precedente, sono stati utilizzati gli strumenti di modellamento UML per estendere le classi circle e sphere. In questo esercizio, gli strumenti di modellamento UML vengono utilizzati per aggiungere la classe cone al progetto. La classe cone, che eredita dalla classe shape3d, calcola e visualizza il volume e l'area di superficie in base al raggio ed all'altezza del cono. E' possibile utilizzare gli strumenti di modellamento UML per aggiungere una classe al progetto e per aggiungere un attributo ad una classe. Per modificare il corpo del metodo, fare doppio clic sul metodo nel diagramma e modificare il codice origine dell'editor del codice.

Aggiunta della classe cone al progetto Shapes

E' possibile aggiungere la classe al progetto utilizzando la vista Esplora progetti C/C++. E' possibile identificare le relazioni di ereditarietà utilizzando la procedura guidata Nuova classe C++.

Per aggiungere la classe cone al progetto Shapes:
  1. Nella vista Esplora progetti C/C++, fare clic con il tastino destro sul progetto Shapes; quindi, fare clic su Nuovo > Classe.
  2. Nella finestra Nuova classe C++, nel campo Nome, digitare cone e fare clic su Sfoglia.
  3. Nella finestra Seleziona classe di base, dall'elenco Tipi corrispondenti fare doppio clic su shapes3d.
  4. Nella vista Esplora progetti C/C++, espandere cone.h, fare clic sull'elemento della classe cone e trascinarlo nell'editor dei diagrammi.

La classe cone è stata aggiunta al progetto Shapes. E' ora possibile utilizzare gli strumenti di modellamento UML per aggiungere classi ed attributi alla nuova classe. Il diagramma dovrebbe essere simile alla seguente illustrazione:

Il progetto shapes contiene la nuova classe cone.

Aggiunta dei metodi getColor e setColor alla classe cone

La classe cone implementa i metodi getColor e setColor definiti dalla classe shape di base.

Per aggiungere i metodi getColor e setColor alla classe cone:
  1. Nell'editor dei diagrammi, nel diagramma the classdiagram.dnx, fare clic con il tastino destro sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Campo.
  2. Nella finestra Crea campo C++, nel campo Nome, digitare color.
  3. Nell'elenco Tipo, digitare string e fare clic su Fine.
  4. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  5. Nella finestra Crea metodo C++, nel campo Nome, digitare getColor.
  6. Nell'elenco Tipo di restituzione, digitare string e fare clic su Fine.
  7. Nella classe cone, fare doppio clic sul metodo getColor e nell'editor del codice, specificare il corpo del metodo getColor come riportato di seguito: {return color;};
  8. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  9. Nella finestra Crea metodo C++, nel campo Nome, digitare setColor e fare clic su Fine.
  10. Nella classe cone, fare doppio clic sul metodo setColor e nell'editor del codice specificare la firma del metodo come: void setColor(string c) ed il corpo del metodo setColor come {color = c;};

I metodi getColor e setColor sono stati aggiunti alla classe cone.

Aggiunta dei metodi getSize e setSize alla classe cone

La classe cone implementa i metodi getSize e setSize definiti dalla classe shape di base. Il campo size memorizza l'altezza del cono.

Per aggiungere i metodi getSize e setSize alla classe cone:
  1. Nell'editor dei diagrammi, nel diagramma the classdiagram.dnx, fare clic con il tastino destro sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Campo.
  2. Nella finestra Crea campo C++, nel campo Nome, digitare size.
  3. Dall'elenco Tipo, selezionare double e fare clic su Fine.
  4. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  5. Nella finestra Crea metodo C++, nel campo Nome, digitare getSize.
  6. Nell'elenco Tipo di restituzione, fare clic sulla freccia rivolta verso il basso visualizzata accanto a void, selezionare double e fare clic su Fine.
  7. Nella classe cone, fare doppio clic sul metodo getSize e nell'editor del codice specificare il corpo del metodo getSize come riportato di seguito: {return size;};
  8. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  9. Nella finestra Crea metodo C++, nel campo Nome, digitare setSize e fare clic su Fine.
  10. Nella classe cone, fare doppio clic sul metodo setSize e nell'editor del codice specificare il corpo del metodo setSize come riportato di seguito: {size = s < 0 ? 0:S;};

I metodi getSize e setSize sono stati aggiunti alla classe cone.

Aggiunta dei metodi getRadius e setRadius alla classe cone

La classe cone implementa i metodi getRadius e setRadius definiti dalla classe shape di base. Il campo radius memorizza il raggio della base del cono. L'applicazione utilizza il raggio per calcolare la circonferenza ed il volume del cono.

Per aggiungere i metodi getRadius e setRadius:
  1. Nell'editor dei diagrammi, fare clic con il tastino destro sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Campo.
  2. Nella finestra Crea campo C++, nel campo Nome, digitare radius.
  3. Nell'elenco Tipo, fare clic su double e fare clic su Fine.
  4. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  5. Nella finestra Crea metodo C++, nel campo Nome, digitare getRadius.
  6. Dall'elenco Tipo di restituzione, selezionare double e fare clic su Fine.
  7. Nella classe cone, fare doppio clic sul metodo getRadius e nell'editor del codice, specificare il corpo del metodo getRadius come riportato di seguito: {return radius;};
  8. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  9. Nella finestra Crea metodo C++, nel campo Nome, digitare setRadius e fare clic su Fine.
  10. Nella classe cone, fare doppio clic sul metodo setRadius e nell'editor del codice specificare il corpo del metodo setRadius come riportato di seguito: {radius = r < 0 ? 0:r;};

I metodi getRadius e setRadius sono stati aggiunti alla classe cone.

Aggiunta dei metodi surfaceArea e volume alla classe cone

La classe cone implementa i metodi surfacearea e volume definiti dalla classe shapes3d. La formula utilizzata per calcolare l'area di superficie di un cono è pi * r * (r + (r2 + h2)1/2). La formula per calcolare il volume di un cono è 1/3 x pi x r2 h.

Per aggiungere i metodi surfaceArea e volume alla classe cone:
  1. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  2. Nella finestra Crea metodo C++, nel campo Nome, digitare surfaceArea.
  3. Dall'elenco Tipo di restituzione, selezionare double e fare clic su Fine.
  4. Nella classe cone, fare doppio clic sul metodo surfaceArea e nell'editor del codice specificare il corpo del metodo surfaceArea come riportato di seguito: {return pi * radius * (radius + (pow(pow(radius,2) + pow(size,2),0.5)));};
  5. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  6. Nella finestra Crea metodo C++, nel campo Nome, digitare volume e fare clic su Fine.
  7. Nella classe cone, fare doppio clic sul metodo volume e nell'editor del codice specificare il corpo del metodo volume come riportato di seguito: {return 0.333 * pi * (pow(radius,2) * size);};

I metodi surfaceArea e volume sono stati aggiunti alla classe cone.

Aggiunta dei metodi set e print alla classe cone

La classe cone implementa i metodi set e print definiti dalla classe shape di base.

Per aggiungere i metodi set e print alla classe cone:
  1. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  2. Nella finestra Crea metodo C++, nel campo Nome, digitare print e fare clic su Fine.
  3. Nella classe cone, fare doppio clic sul metodo print e nell'editor del codice specificare il corpo del metodo print come riportato di seguito:
    { cout  << "Cone:"
    			<< "\n\tLength = " << getSize()
    			<< "\n\tArea   = " << surfaceArea()
    			<< "\n\tVolume = " << volume()
    			<< "\n\tColor  = " << getColor()
    			<< "\n\n";
    };
  4. Nell'editor dei diagrammi, nel diagramma classdiagram.dnx, fare clic sulla classe cone; quindi, fare clic su Aggiungi C/C++ > Metodo.
  5. Nella finestra Crea metodo C++, nel campo Nome, digitare set e fare clic Fine.

I metodi print e set sono stati aggiunti alla classe cone.

Modifica del file cone.cpp

Il file di classe cone.cpp contiene l'implementazione del metodo set ed il costruttore ed il decostruttore. Il corpo del metodo set viene modificato per richiedere all'utente di immettere le dimensioni ed il raggio del cono. Inoltre, è necessario modificare il costruttore predefinito per impostare i valori iniziali della nuova classe cone.

Per modificare il file cone.cpp:
  1. Nella vista Esplora progetti C++, fare doppio clic sulla classe cone.cpp.
  2. Nell'editor del codice, nella classe cone.cpp, specificare il corpo del costruttore predefinito come riportato di seguito: {color="Transparent"; radius=0; size=0;}
  3. Nella sezione relativa alla dichiarazione del metodo, specificare il corpo del metodo set come riportato di seguito:
    void cone::set()	{
    	double size;
    	double radius;
    	string color;
    	
    	cout << "Immettere l'altezza del cono: ";
    	cin >> size;
    	setSize(size);
    	
    	cout << "Immettere il raggio della base del cono:";
    	cin >> radius;
    	setRadius(radius);
    	
    	cout << "Immettere il colore del cono: ";
    	cin >> color;
    	setColor(color);
    }
  4. Per salvare il progetto, fare clic su File > Salva.

Il progetto Shapes è stato completato aggiungendo il metodo set al file di classe cone.cpp.

Esecuzione dell'applicazione estesa

Prima di poter eseguire l'applicazione, è necessario aggiungere l'istruzione include nella classe main.cpp, in modo da includere la nuova classe cone. E' possibile eseguire l'applicazione e creare un'istanza della nuova classe cone modificando il file main.cpp.

Per eseguire l'applicazione:
  1. Nella vista Esplora progetti C++, fare doppio clic sulla classe main.cpp.
  2. Nella sezione relativa alla dichiarazione della classe, dopo l'istruzione #include "tetrahedron.h", aggiungere la seguente istruzione include: #include "cone.h"
  3. Nell'editor del codice, nel corpo principale della classe, aggiungere il codice riportato di seguito:
    //creare un'istanza ed eseguire la classe cone
    		cone c;
    		c.print();
    		c.set();
    		c.print();
  4. Per salvare e generare il progetto, fare clic su File > Save.
  5. Fare clic su Esegui.

Il programma visualizza le dimensioni, il colore, l'area della superficie ed il volume del cono e richiede di specificare i valori per la nuova istanza del cono.