练习 3:创建圆锥类

在此练习中,您可通过使用可视化编辑器来创建圆锥类。 圆锥类表示 3 维圆锥。

在上一练习中,您使用了 UML 建模工具来扩展圆和球体类。在此练习中,您将使用 UML 建模工具将圆锥类添加到项目中。继承自 shape3d 类的圆锥类根据圆锥的半径和高度来计算和显示体积和面积。 您可以使用 UML 建模工具将类添加到项目并将属性添加到类。 要编辑方法的主体,请双击图中的方法,并在代码编辑器中编辑源代码。

将圆锥类添加到 Shapes 项目

您可以使用 C/C++ Project Explorer 视图将类添加到项目。通过使用新建 C++/类向导,您可以确定所有继承关系。

要将圆锥类添加到 Shapes 项目:
  1. C/C++ Project Explorer 视图中,右键单击 Shapes 项目;然后单击新建 > 类
  2. 新建 C++ 类窗口中,在名称字段中输入 cone,然后单击浏览
  3. 选择基类窗口中,从匹配类型列表中双击 shapes3d
  4. C/C++ Project Explorer 视图中,展开 cone.h,然后单击圆锥类元素,再将其拖到图编辑器中。

现在您已将圆锥类添加到 Shapes 项目中。您可以使用 UML 建模工具来添加类并将属性添加到新类。 您的图看上去应该与下图相似:

Shapes 项目包含新的圆锥类。

将 getColor 和 setColor 方法添加到圆锥类

圆锥类实施基本形状类定义的 getColor 和 setColor 方法。

要将 getColor 和 setColor 方法添加到圆锥类:
  1. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 字段。
  2. 创建 C++ 字段窗口中,在名称字段中输入 color
  3. 类型列表中输入 string,并单击完成
  4. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  5. 创建 C++ 方法窗口中,在名称字段中输入 getColor
  6. 返回类型列表中输入 string,然后单击完成
  7. 圆锥类中,双击 getColor 方法,然后在代码编辑器中,指定 getColor 方法的主体,如下所示:{return color;};
  8. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  9. 创建 C++ 方法窗口中,在名称字段中输入 setColor,然后单击完成
  10. 在圆锥类中,双击 setColor 方法,并在代码编辑器中指定方法签名 void setColor(string c),以及 setColor 方法主体 {color = c;};

现在您已将 getColor 和 setColor 方法添加到圆锥类。

将 getSize 和 setSize 方法添加到圆锥类

圆锥类实施基本形状类定义的 getSize 和 setSize 方法。 大小字段存储了圆锥的高度。

要将 getSize 和 setSize 方法添加到圆锥类:
  1. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 字段。
  2. 创建 C++ 字段窗口中,在名称字段中输入 size
  3. 类型列表中选择双精度型,然后单击完成
  4. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  5. 创建 C++ 方法窗口中,在名称字段中输入 getSize
  6. 返回类型列表中,单击旁的向下箭头,然后选择双精度型,再单击完成
  7. 在圆锥类中,双击 getSize 方法,并在代码编辑器中指定 getSize 方法的主体,如下所示:{return size;};
  8. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  9. 创建 C++ 方法窗口中,在名称字段中输入 setSize,然后单击完成
  10. 在圆锥类中,双击 setSize 方法,并在代码编辑器中指定 setSize 方法的主体,如下所示:{size = s < 0 ?0:S;};

您已将 getSize 和 setSize 方法添加到圆锥类。

将 getRadius 和 setRadius 方法添加到圆锥类

圆锥类实施基本形状类定义的 getRadius 和 setRadius 方法。 半径字段存储圆锥底面的半径。 应用程序使用半径来计算圆锥的圆周和体积。

要添加 getRadius 和 setRadius 方法:
  1. 在图编辑器中,右键单击圆锥类;然后单击添加 C/C++ > 字段。
  2. 创建 C++ 字段窗口中,在名称字段中输入 radius
  3. 在“类型”列表中,单击双精度型,然后单击完成
  4. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  5. 创建 C++ 方法窗口中,在名称字段中输入 getRadius
  6. 返回类型列表中选择双精度型,然后单击完成
  7. 在圆锥类中,双击 getRadius 方法,然后在代码编辑器中指定 getRadius 方法的主体,如下所示:{return radius;};
  8. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  9. 创建 C++ 方法窗口中,在名称字段中输入 setRadius,然后单击完成
  10. 在圆锥类中,双击 setRadius 方法,然后在代码编辑器中指定 setRadius 方法的主体,如下所示:{radius = r < 0 ? 0:r;};

现在您已将 getRadius 和 setRadius 方法添加到圆锥类。

将 surfaceArea 和 volume 方法添加到圆锥类

圆锥类实施 shapes3d 类定义的计算面积和体积的方法。计算圆锥面积的公式为 pi * r * (r + (r2 + h2)1/2)。 计算圆锥的体积的公式为 1/3 x pi x r2 h。

要将 surfaceArea 和 volume 方法添加到圆锥类:
  1. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  2. 创建 C++ 方法窗口中,在名称字段中输入 surfaceArea
  3. 返回类型列表中选择双精度型,然后单击完成
  4. 在圆锥类中,双击 surfaceArea 方法,并在代码编辑器中指定 surfaceArea 方法的主体,如下所示:{return pi * radius * (radius + (pow(pow(radius,2) + pow(size,2),0.5)));};
  5. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  6. 创建 C++ 方法窗口中,在名称字段中输入 volume,然后单击完成
  7. 在圆锥类中,双击 volume 方法,并在代码编辑器中指定 volume 方法的主体,如下所示:{return 0.333 * pi * (pow(radius,2) * size);};

现在您已将 surfaceArea 和 volume 方法添加到圆锥类。

将 set 和 print 方法添加到圆锥类

圆锥类实施基本形状类定义的 set 和 print 方法。

要将 set 和 print 方法添加到圆锥类:
  1. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  2. 创建 C++ 方法窗口中,在名称字段中输入 print,然后单击完成
  3. 在圆锥类中,双击 print 方法,并在代码编辑器中指定 print 方法的主体,如下所示:
    { cout  << "Cone:"
    			<< "\n\tLength = " << getSize()
    			<< "\n\tArea   = " << surfaceArea()
    			<< "\n\tVolume = " << volume()
    			<< "\n\tColor  = " << getColor()
    			<< "\n\n";
    };
  4. 在图编辑器中,在 classdiagram.dnx 图中右键单击圆锥类;然后单击添加 C/C++ > 方法。
  5. 创建 C++ 方法窗口中,在名称字段中输入 set,然后单击完成

现在您已将 print 和 set 方法添加到圆锥类。

编辑 cone.cpp 文件

cone.cpp 类文件包含 set 方法、构造函数和析构函数的实施。 您要修改 set 方法的主体以提示用户输入圆锥的大小和半径。 同时您还必须编辑缺省构造函数来设置新圆锥类的初始值。

要编辑 cone.cpp 文件:
  1. C++ Project Explorer 视图中,双击 cone.cpp 类。
  2. 在代码编辑器中,在 cone.cpp 类中指定缺省构造函数的主体,如下所示:{color="Transparent"; radius=0; size=0;}
  3. 在方法声明部分,指定 set 方法的主体,如下所示:
    void cone::set()	{
    	double size;
    	double radius;
    	string color;
    	
    	cout << "Enter the height of the cone: ";
    	cin >> size; 
    	setSize(size);
    	
    	cout << "Enter the radius of the base of the cone: ";
    	cin >> radius; 
    	setRadius(radius);
    	
    	cout << "Enter the color of the cone: ";
    	cin >> color;
    	setColor(color);
    }
  4. 要保存项目,请单击文件 >保存

现在,通过将 set 方法添加到 cone.cpp 类文件,您已完成了 Shapes 项目。

运行扩展的应用程序

在运行应用程序之前,必须将 include 语句添加到 main.cpp 类来包括新的圆锥类。您可以通过修改 main.cpp 类来运行应用程序并实例化新的圆锥类。

要运行应用程序:
  1. C++ Project Explorer 视图中,双击 main.cpp 类。
  2. 在类的声明部分,在 #include "tetrahedron.h" 下添加以下 include 语句:#include "cone.h"
  3. 在代码编辑器中,将以下代码添加到类的 main 主体:
    //instantiate and run the cone class 
    		cone c;
    		c.print();
    		c.set();
    		c.print();
  4. 要保存和构建项目,请单击文件 > 保存
  5. 单击运行

程序显示了圆锥的大小、颜色、面积和体积,并提示您指定新圆锥实例的值。