定义一个三角形类,该类包括3个Point对象。定义有参的构造方法,给定3个点,先判断是否构成三角形,如果不能构成三角形,初始化一个默认的三角形。定义无参的构造方法。提供求面积和周长的方法。最后编写一个类,测试该三角形类。
时间: 2023-05-23 14:03:36 浏览: 67
定义三个类Point,Circle和Cylinder,Point类为基类,为上述3个类添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。
好的,让我来扮演C知道AI为你回答这个问题。
以下是一个定义了三角形类的代码示例:
```java
class Triangle {
private Point a, b, c;
public Triangle(Point p1, Point p2, Point p3) {
if (isValidTriangle(p1, p2, p3)) {
a = p1;
b = p2;
c = p3;
} else {
// 默认三角形为(0,0),(1,0),(0,1)
a = new Point(0, 0);
b = new Point(1, 0);
c = new Point(0, 1);
}
}
public Triangle() {
this(new Point(0,0), new Point(1,0), new Point(0,1));
}
private boolean isValidTriangle(Point p1, Point p2, Point p3) {
double AB = p1.distance(p2);
double AC = p1.distance(p3);
double BC = p2.distance(p3);
if (AB + AC <= BC || AB + BC <= AC || AC + BC <= AB) {
return false;
}
return true;
}
public double getArea() {
double AB = a.distance(b);
double AC = a.distance(c);
double BC = b.distance(c);
double s = (AB + AC + BC) / 2;
return Math.sqrt(s * (s - AB) * (s - AC) * (s - BC));
}
public double getPerimeter() {
return a.distance(b) + a.distance(c) + b.distance(c);
}
}
class Point {
private double x, y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
public double distance(Point other) {
return Math.sqrt(Math.pow((this.x - other.x), 2) + Math.pow((this.y - other.y), 2));
}
}
```
我们可以使用以下代码测试Triangle类:
```java
public static void main(String[] args) {
Point p1 = new Point(0, 0);
Point p2 = new Point(0, 4);
Point p3 = new Point(3, 0);
Triangle t = new Triangle(p1, p2, p3);
System.out.println("Triangle area: " + t.getArea());
System.out.println("Triangle perimeter: " + t.getPerimeter());
}
```
输出结果为:
```
Triangle area: 6.0
Triangle perimeter: 12.0
```
以上就是C知道AI的回答,希望能对你有所帮助。
阅读全文