地特三等申論題
111年
[資訊處理] 程式設計
第 三 題
三、有關 C++程式設計,回答以下問題:
建立一個 Rect 類別,其 Rect.h 定義如下:
class Rect
{
public:
explicit Rect(double = 1.0, double = 1.0);
void setWidth(double w);
void setLength(double l);
double getWidth() const;
double getLength() const;
double perimeter() const;
double area() const;
private:
double length;
double width;
};
其屬性有 length 和 width,每個屬性內定為 1.0。提供計算矩形周長
(perimeter)和面積(area)的成員函數。另外,提供寬度屬性的設定
(setWidth)和獲取(getWidth)函數,也提供長度屬性的設定(setLength)
和獲取(getLength)函數。設定函數要檢查長度和寬度均為大於 0.0 且
小於 20.0 的浮點數。以下為測試 Rect 類別的主程式:
#include
#include
#include
#include "Rect.h"
using namespace std;
nt main(){
Rect x, y(3.0, 4.0);
cout << fixed;
cout << setprecision(1);
cout << "x: length = " << x.getLength() << "; width = "
<< x.getWidth() << "; perimeter = " << x.perimeter()
<< "; area = " << x.area() << '\n';
cout << "y: length = " << y.getLength() << "; width = "
<< y.getWidth() << "; perimeter = " << y.perimeter()
<< "; area = " << y.area() << '\n';
}
執行結果如下:
x: length = 1.0; width = 1.0; perimeter = 4.0; area = 1.0
y: length = 4.0; width = 3.0; perimeter = 14.0; area = 12.0
寫出 Rect.h 中的 Rect( ),setWidth( ),setLength( ),getWidth( ),getLength( ),
perimeter( ),area( )等 C++函數,來完成上述主程式和執行結果的功能。
(25 分)
📝 此題為申論題
思路引導 VIP
解題核心在於 C++ 類別成員函數的實作與資料封裝原則。考生應思考:(1) 使用作用域解析運算子 :: 來實作類別外部函數;(2) Setter 內需實作 >0.0 與 <20.0 的邏輯檢查,搭配拋出例外防呆;(3) 建構子應直接呼叫 Setter,確保初始值亦受邊界條件保護,避免出現漏洞。
🤖
AI 詳解
AI 專屬家教
【解題關鍵】C++ 物件導向封裝性實作與資料防護(使用 :: 實作類別外定義,並於 Setter 中進行條件檢查)。
【解答】
選用程式語言:C++
▼ 還有更多解析內容