Ejercicio 3: Creación de la clase cone

En este ejercicio se crea la clase cone por medio del editor visual. La clase cone representa un cono tridimensional.

En el ejercicio anterior se han utilizado las herramientas de modelado de UML para ampliar las clases circle y sphere. En este ejercicio va a utilizar las herramientas de modelado de UML para añadir la clase cone al proyecto. La clase cone, que hereda de la clase shape3d, calcula y muestra el área de superficie y el volumen en base al radio y la altura del cono. Puede añadir las herramientas de modelado de UML para añadir una clase al proyecto, y para añadir un atributo a una clase. Para editar el cuerpo del método, efectúe una doble pulsación en el método en el diagrama y edite el código fuente en el editor de código.

Adición de la clase cone al proyecto Shapes

Puede añadir la clase al proyecto por medio de la vista Explorador de proyectos de C/C++. Puede identificar cualquier relación de herencia utilizando el asistente de Nueva clase/C++.

Para añadir la clase cone al proyecto Shapes:
  1. En la vista Explorador de proyectos de C/C++, pulse el botón derecho del ratón sobre el proyecto Shapes y, a continuación, pulse Nueva > Clase.
  2. En la ventana Nueva clase C++, en el campo Nombre, escriba cone y pulse Examinar.
  3. En la ventana Elegir clase básica, en la lista tipos coincidentes efectúe una doble pulsación en shapes3d.
  4. En la vista Explorador de proyectos de C/C++, expanda cone.h, pulse el elemento de clase cone y arrástrelo al editor de diagramas.

Ha añadido la clase cone al proyecto Shapes. Ahora puede utilizar las herramientas de modelado de UML para añadir clases y atributos a la nueva clase. El diagrama debe presentar un aspecto similar al de la figura siguiente:

El proyecto Shapes contiene la nueva clase cone.

Adición de los métodos getColor y setColor a la clase cone

La clase cone implementa los métodos getColor y setColor que define la clase shape básica.

Para añadir los métodos getColor y setColor a la clase cone:
  1. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Campo.
  2. En la ventana Crear campo C++, en el campo Nombre, escriba color.
  3. En la lista Tipo, escriba string y pulse Finalizar.
  4. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  5. En la ventana Crear método C++, en el campo Nombre, escriba getColor.
  6. En la lista Tipo de retorno, escriba string y pulse Finalizar.
  7. En la clase cone, efectúe una doble pulsación en el método getColor y, en el editor de código, especifique el cuerpo del método getColor tal como se indica a continuación: {return color;};
  8. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  9. En la ventana Crear método C++, en el campo Nombre, escriba setColor y pulse Finalizar.
  10. En la clase cone, efectúe una doble pulsación en el método setColor y, en el editor de código, especifique la signatura del método como: void setColor(string c) y el cuerpo del método setColor como: {color = c;};

Ha añadido los métodos getColor y setColor a la clase cone.

Adición de los métodos getSize y setSize a la clase cone

La clase cone implementa los métodos getSize y setSize que define la clase shape básica. El campo de tamaño almacena la altura del cono.

Para añadir los métodos getSize y setSize a la clase cone:
  1. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Campo.
  2. En la ventana Crear campo C++, en el campo Nombre, escriba size.
  3. En la lista Tipo, seleccione double y pulse Finalizar.
  4. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  5. En la ventana Crear método C++, en el campo Nombre, escriba getSize.
  6. En la lista Tipo de retorno, pulse la flecha abajo situada junto a void, seleccione double y, a continuación, pulse Finalizar.
  7. En la clase cone, efectúe una doble pulsación en el método getSize y, en el editor de código, especifique el cuerpo del método getSize tal como se indica a continuación:{return size;};
  8. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  9. En la ventana Crear método C++, en el campo Nombre, escriba setSize y pulse Finalizar.
  10. En la clase cone, efectúe una doble pulsación en el método setSize y, en el editor de código, especifique el cuerpo del método setSize tal como se indica a continuación: {size = s < 0 ? 0:S;};

Acaba de añadir los métodos getSize y setSize a la clase cone.

Adición de los métodos getRadius y setRadius a la clase cone

La clase cone implementa los métodos getRadius y setRadius que define la clase shape básica. El campo de radio almacena el radio de la base del cono. La aplicación utiliza el radio para calcular la circunferencia y el volumen del cono.

Para añadir los métodos getRadius y setRadius:
  1. En el editor de diagramas, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Campo.
  2. En la ventana Crear campo C++, en el campo Nombre escriba radius.
  3. En la lista Tipo, pulse double y, a continuación, pulse Finalizar.
  4. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  5. En la ventana Crear método C++, en el campo Nombre, escriba getRadius.
  6. En la lista Tipo de retorno, seleccione double y pulse Finalizar.
  7. En la clase cone, efectúe una doble pulsación en el método getRadius y, en el editor de código, especifique el cuerpo del método getRadius tal como se indica a continuación: {return radius;};
  8. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  9. En la ventana Crear método C++, en el campo Nombre, escriba setRadius y, a continuación, pulse Finalizar.
  10. En la clase cone, efectúe una doble pulsación en el método setRadius y, en el editor de código, especifique el cuerpo del método setRadius tal como se indica a continuación: {radius = r < 0 ? 0:r;};

Ha añadido los métodos getRadius y setRadius a la clase cone.

Adición de los métodos surfaceArea y volume a la clase cone

La clase cone implementa los métodos surfaceArea y volume que define la clase shapes3d. La fórmula que se utiliza para calcular el área de superficie de un cono es pi * r * (r + (r2 + h2)1/2), y la fórmula para calcular el volumen de un cono es 1/3 x pi x r2 h.

Para añadir los métodos surfaceArea y volume a la clase cone:
  1. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  2. En la ventana Crear método C++, en el campo Nombre, escriba surfaceArea.
  3. En la lista Tipo de retorno, seleccione double y pulse Finalizar.
  4. En la clase cone, efectúe una doble pulsación en el método surfaceArea y, en el editor de código, especifique el cuerpo del método surfaceArea tal como se indica a continuación: {return pi * radius * (radius + (pow(pow(radius,2) + pow(size,2),0.5)));};
  5. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  6. En la ventana Crear método C++, en el campo Nombre, escriba volume y pulse Finalizar.
  7. En la clase cone, efectúe una doble pulsación en el método volume y, en el editor de código, especifique el cuerpo del método volume tal como se indica a continuación: {return 0.333 * pi * (pow(radius,2) * size);};

Ha añadido los métodos surfaceArea y volume a la clase cone.

Adición de los métodos set y print a la clase cone

La clase cone implementa los métodos set y print que define la clase shape básica.

Para añadir los métodos set y print a la clase cone:
  1. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  2. En la ventana Crear método C++, en el campo Nombre, escriba print y, a continuación, pulse Finalizar.
  3. En la clase cone, efectúe una doble pulsación en el método print y, en el editor de código, especifique el cuerpo del método print tal como se indica a continuación:
    { cout  << "Cone:"
    			<< "\n\tLength = " << getSize()
    			<< "\n\tArea   = " << surfaceArea()
    			<< "\n\tVolume = " << volume()
    			<< "\n\tColor  = " << getColor()
    			<< "\n\n";
    };
  4. En el editor de diagramas, en el diagrama classdiagram.dnx, pulse el botón derecho del ratón sobre la clase cone y, a continuación, pulse Añadir C/C++ > Método.
  5. En la ventana Crear método C++, en el campo Nombre, escriba set y pulse Finalizar.

Ha añadido los métodos print y set a la clase cone.

Edición del archivo cone.cpp

El archivo de clase cone.cpp contiene la implementación del método set, así como el constructor y el destructor. El debe modificar el cuerpo del método set para solicitar al usuario que entre el tamaño y el radio del cono. También debe editar el constructor por omisión para establecer los valores iniciales de la nueva clase cone.

Para editar el archivo cone.cpp:
  1. En la vista Explorador de proyectos de C++, efectúe una doble pulsación en la clase cone.cpp.
  2. En el editor de código, en la clase cone.cpp, especifique el cuerpo del constructor por omisión tal como se indica a continuación: {color="Transparent"; radius=0; size=0;}
  3. En la sección de declaración del método, especifique el cuerpo del método set tal como se indica a continuación:
    void cone::set()	{
    	double size;
    	double radius;
    	string color;
    	
    	cout << "Entrar la altura del cono: ";
    	cin >> size;
    	setSize(size);
    	
    	cout << "Entrar el radio de la base del cone: ";
    	cin >> radius;
    	setRadius(radius);
    	
    	cout << "Entrar el color del cono: ";
    	cin >> color;
    	setColor(color);
    }
  4. Para guardar el proyecto, pulse Archivo > Guardar.

Ha completado el proyecto Shapes al añadir el método set al archivo de clase cone.cpp.

Ejecución de la aplicación ampliada

Antes de ejecutar la aplicación, debe añadir la sentencia de inclusión en la clase main.cpp para incluir la nueva clase cone. Puede ejecutar la aplicación y crear instancias de la nueva clase cone modificando la clase main.cpp.

Para ejecutar la aplicación:
  1. En la vista Explorador de proyectos de C++, efectúe una doble pulsación en la clase main.cpp.
  2. En la sección de declaración de la clase, situada debajo de #include "tetrahedron.h", añada la sentencia de inclusión siguiente: #include "cone.h"
  3. En el editor de código, en el cuerpo principal de la clase, añada el código siguiente:
    //crear una instancia y ejecutar la clase cone
    		cone c;
    		c.print();
    		c.set();
    		c.print();
  4. Para guardar y construir el proyecto, pulse Archivo > Guardar.
  5. Pulse Ejecutar.

El programa muestra el tamaño, el color, el área de superficie y el volumen de la forma de cono y le solicita que especifique valores para la nueva instancia del cono.