1)设计一个Triangle类,该类包括: 三个名为side1、side2、和side3的double类型数据域,表示三角形的三条边,默认值是1.0。 所有三个数据域的访问器方法。一个无参构造方法,用于创建一个默认的三角形。 一个创建指定side1、side2、和side3值的三角形的构造方法(三条边的值由用户输入,要判断三条边可以构成三角形才能用此构造方法初始化三角形对象)。 提供getArea()方法,返回该三角形的面积。 提供getPerimeter()的方法,返回该三角形的周长。
时间: 2024-02-24 19:59:48 浏览: 111
以下是实现Triangle类的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Triangle {
private:
double side1, side2, side3;
public:
// 默认构造方法
Triangle() {
side1 = 1.0;
side2 = 1.0;
side3 = 1.0;
}
// 有参构造方法
Triangle(double s1, double s2, double s3) {
if (isValid(s1, s2, s3)) {
side1 = s1;
side2 = s2;
side3 = s3;
} else {
cout << "无法构成三角形!默认使用边长为1.0的三角形。" << endl;
side1 = 1.0;
side2 = 1.0;
side3 = 1.0;
}
}
// 访问器方法
double getSide1() const {
return side1;
}
double getSide2() const {
return side2;
}
double getSide3() const {
return side3;
}
// 计算面积
double getArea() const {
double s = getPerimeter() / 2.0;
return sqrt(s * (s - side1) * (s - side2) * (s - side3));
}
// 计算周长
double getPerimeter() const {
return side1 + side2 + side3;
}
private:
// 判断是否能构成三角形
bool isValid(double s1, double s2, double s3) {
if (s1 <= 0 || s2 <= 0 || s3 <= 0) {
return false;
}
if (s1 + s2 > s3 && s1 + s3 > s2 && s2 + s3 > s1) {
return true;
} else {
return false;
}
}
};
```
代码解释:
1. Triangle类有三个私有数据域,分别为side1、side2、side3,表示三角形的三条边。
2. 有两个构造方法,一个是默认构造方法,另一个是有参构造方法,可以根据输入的边长创建一个三角形对象。在有参构造方法中,需要调用isValid()方法判断输入的三个边长是否能构成三角形。
3. getArea()方法用于计算三角形的面积,公式为海伦公式。getPerimeter()方法用于计算三角形的周长。
4. Triangle类中还包括getSide1()、getSide2()和getSide3()方法,用于访问三角形的三条边的值。
5. isValid()方法用于判断输入的三个边长是否能构成三角形,如果不能,则默认创建边长为1.0的三角形。
6. 所有数据域都是私有的,需要通过公有的访问器方法来访问。
阅读全文