練習 3:建立 cone 類別

在此練習中,您要使用視覺化編輯器建立 cone 類別。Cone 類別代表 3D 圓錐。

在前一個練習中,您是使用 UML 建模工具,來延伸圓圈與球形類別。在此練習中,您要使用 UML 視覺化工具,新增 cone 類別到專案中。Cone 類別是繼承自 shape3d 類別,它會依據圓錐的半徑與高度,計算並顯示面積及表面區域。您可以使用 UML 建模工具,新增類別至專案,以及新增屬性至類別。若要編輯方法的主體,在圖型中,按兩下該方法,並在程式碼編輯器中編輯原始碼。

新增 cone 類別至「形狀」專案

您可以使用 C/C++ 專案瀏覽器視圖,新增類別至專案。您可以透過新增 C++/類別精靈,定義任何繼承關係。

若要新增 cone 類別至「形狀」專案:
  1. C/C++ 專案瀏覽器視圖中, 用滑鼠右鍵按一下形狀專案; 然後按一下新增 > 類別
  2. 新增 C++ 類別視窗中, 於名稱欄位輸入 cone, 再按一下瀏覽
  3. 選擇基礎類別視窗中, 從相符類型清單中,按兩下 shapes3d
  4. C/C++ 專案瀏覽器視圖中, 展開 cone.h,並按一下 cone 類別元素, 然後將其拖曳至圖型編輯器。

現在您已經新增 cone 類別至形狀專案。您現在可以使用 UML 建模工具, 新增類別和屬性至新的類別。您的圖型看起來應該與下圖類似:

形狀專案包含新的 cone 類別。

新增 getColor 及 setColor 方法至 cone 類別

Cone 類別會實作由基礎形狀類別定義的 getColor 和 setColor 兩個方法。

若要新增 getColor 及 setColor 方法至 cone 類別:
  1. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 欄位。
  2. 建立 C++ 欄位視窗中, 於名稱欄位輸入顏色
  3. 類型清單中,輸入 string, 再按一下完成
  4. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  5. 建立 C++ 方法視窗中, 於名稱欄位輸入 getColor
  6. 傳回類型清單中,輸入 string, 再按一下完成
  7. cone 類別中,按兩下 getColor 方法, 並在程式碼編輯器中,指定 getColor 方法的主體,如下所示:{return color;};
  8. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  9. 建立 C++ 方法視窗中, 於名稱欄位輸入 setColor, 然後按一下完成
  10. 在 cone 類別中,按兩下 setColor 方法, 並且在程式碼編輯器中,指定方法的簽章為 void setColor(string c),setColor 方法的主體為 {color = c;};

現在您已經新增 getColor 及 setColor 方法至 cone 類別。

新增 getSize 及 setSize 方法至 cone 類別

Cone 類別會實作由基礎形狀類別定義的 getSize 和 getSize 兩個方法。大小欄位會儲存圓錐的高度。

若要新增 getSize 及 setSize 方法至 cone 類別:
  1. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 欄位。
  2. 建立 C++ 欄位視窗中, 於名稱欄位輸入大小
  3. 類型清單中, 選取 double,再按一下完成
  4. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  5. 建立 C++ 方法視窗中, 於名稱欄位輸入 getSize
  6. 傳回類型清單中,按一下 void 旁的下移鍵,選取 double, 再按一下完成
  7. 在 cone 類別中,按兩下 getSize 方法, 並在程式碼編輯器中,指定 getSize 方法的主體,如下所示:{return size;};
  8. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  9. 建立 C++ 方法視窗中, 於名稱欄位輸入 setSize, 然後按一下完成
  10. 在 cone 類別中,按兩下 setSize 方法, 並在程式碼編輯器中,指定 setSize 方法的主體,如下所示:{size = s < 0 ? 0:S;};

現在您已經新增 getSize 及 setSize 方法至 cone 類別。

新增 getRadius 及 setRadius 方法至 cone 類別

Cone 類別會實作由基礎形狀類別定義的 getRadius 和 setRadius 兩個方法。半徑欄位會儲存基礎圓錐的半徑。應用程式會使用半徑來計算圓錐的圓周和面積。

若要新增 getRadius 及 setRadius 方法:
  1. 在圖型編輯器中,用滑鼠右鍵按一下 cone 類別;然後按一下 新增 C/C++ > 欄位。
  2. 建立 C++ 欄位視窗中, 於名稱欄位輸入半徑
  3. 在「類型」清單中,按一下 double, 再按一下完成
  4. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  5. 建立 C++ 方法視窗中, 於名稱欄位輸入 getRadius
  6. 傳回類型清單中, 選取 double,再按一下完成
  7. 在 cone 類別中,按兩下 getRadius 方法,並在程式碼編輯器中, 指定 getRadius 方法的主體,如下所示:{return radius;};
  8. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  9. 建立 C++ 方法視窗中, 於名稱欄位輸入 setRadius, 然後按一下完成
  10. 在 cone 類別中,按兩下 setRadius 方法,並在程式碼編輯器中, 指定 setRadius 方法的主體,如下所示:{radius = r < 0 ? 0:r;};

現在您已經新增 getRadius 及 setRadius 方法至 cone 類別。

新增 surfaceArea 及 volume 方法至 cone 類別

Cone 類別會實作 shapes3d 類別定義的表面區域與面積方法。用於計算圓錐 surfaceArea 的公式是 pi * r * (r + (r2 + h2)1/2)。用於計算圓錐面積的公式是 1/3 x pi x r2 h。

若要新增 surfaceArea 及 volume 方法至 cone 類別:
  1. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  2. 建立 C++ 方法視窗中, 於名稱欄位輸入 surfaceArea
  3. 傳回類型清單中, 選取 double,再按一下完成
  4. 在 cone 類別中,按兩下 surfaceArea 方法, 並在程式碼編輯器中,指定 surfaceArea 方法的主體,如下所示:{return pi * radius * (radius + (pow(pow(radius,2) + pow(size,2),0.5)));};
  5. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  6. 建立 C++ 方法視窗中, 於名稱欄位輸入 volume, 然後按一下完成
  7. 在 cone 類別中,按兩下 volume 方法, 並在程式碼編輯器中,指定 volume 方法的主體,如下所示:{return 0.333 * pi * (pow(radius,2) * size);};

現在您已經新增 surfaceArea 及 volume 方法至 cone 類別。

新增 set 及 print 方法至 cone 類別

Cone 類別會實作由基礎形狀類別定義的 set 和 print 兩個方法。

若要新增 set 及 print 方法至 cone 類別:
  1. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  2. 建立 C++ 方法視窗中, 於名稱欄位輸入 print, 然後按一下完成
  3. 在 cone 類別中,按兩下 print 方法, 並在程式碼編輯器中,指定 print 方法的主體,如下所示:
    { cout  << "Cone:"
    			<< "\n\tLength = " << getSize()
    			<< "\n\tArea   = " << surfaceArea()
    			<< "\n\tVolume = " << volume()
    			<< "\n\tColor  = " << getColor()
    			<< "\n\n";
    };
  4. 在圖型編輯器中,用滑鼠右鍵按一下 classdiagram.dnx 圖型內的 cone 類別; 然後按一下新增 C/C++ > 方法。
  5. 建立 C++ 方法視窗中, 於名稱欄位輸入 set, 然後按一下完成

現在您已經新增 print 及 set 方法至 cone 類別。

編輯 cone.cpp 檔

cone.cpp 類別檔中包含了 set 方法的實作方式,以及建構子和解構子。修改 set 方法的主體,可以提示使用者輸入圓錐的大小和半徑。您必須編輯預設建構子,以設定新的 cone 類別之起始值。

若要編輯 cone.cpp 檔:
  1. C++ 專案瀏覽器視圖中, 按兩下 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 類別檔中,完成「形狀」專案。

執行延伸的應用程式

在執行應用程式之前,您必須在 main.cpp 類別中加入 include 陳述式,以包括新的 cone 類別。您可以藉由修改 main.cpp 類別,來執行應用程式並將新的 cone 類別實例化。

若要執行應用程式:
  1. C++ 專案瀏覽器視圖中, 按兩下 main.cpp 類別。
  2. 在類別的宣告區段中,位於 #include "tetrahedron.h" 下,加入下列 include 陳述式:#include "cone.h"
  3. 在程式碼編輯器中,於類別主體內,加入下列程式碼:
    //實例化及執行 cone 類別
    		cone c;
    		c.print();
    		c.set();
    		c.print();
  4. 若要儲存並建置專案,按一下檔案 > 儲存
  5. 按一下執行

程式會顯示圓錐形狀的大小、顏色、表面區域及面積,並提示您指定新圓錐實例的值。