任务描述
定义一个形状(sharpe)的抽象类,具有求面积的抽象方法。再分别定义sharpe类的实现类:三角形(triangel)。
编程要求
-
定义一个描述形状(sharpe)的抽象类,包括公有的成员属性PI(常量),求面积的抽象方法getArea(),该方法的返回值类型是double类型,输出面积的抽象方法printArea(),该方法没有返回值;
-
定义三角形类(triangle)继承抽象类sharpe并实现了其抽象方法getArea()和printArea()。
-
三角形类具有私有的属性:a、b、c,用于存放三角形三条边长,数据类型为int。还定义了带三个参数的构造方法,用于给三边赋初值。
-
在getArea()方法中,求面积之前先判断三边是否构成三角形,如果构成三角形,返回三角形的面积,如果不构成三角形,返回值为0。 注:求三角形面积使用海伦公式:s=sqrt(p*(p-a)(p-b)(p-c)),求平方根应调用Math类的sqrt()方法,见书183页。
-
在输出面积的printArea()方法中,调用getArea()方法求三角形面积。若面积为0,输出“不构成三角形”,否则输出三角形的面积; 注:判实数aera是否等于0,应采用如下方法:if(Math.abs(area)<1e-10)。
-
创建测试类TriangleTest,在测试类中创建一个Triangle类的实例,通过构造方法给Triangle类的对象属性赋初值,然后通过该对象调用类的printArea()方法输出三角形的面积。
注: 以上各个类的定义,均各自定义在一个单独的.java文件中。
package case6;
/*******在下面定义抽象类Sharpe*****/
public class Sharpe {
abstract class Area{
public abstract void getArea();
}
}
package case6;
/*******在下面定义三角形类Triangle继承自抽象类Sharpe,并实现其所有的抽象方法*****/
public class Triangle extends Sharpe{
private int sideA;
private int sideB;
private int sideC;
double area;
boolean bool;
public Triangle(int a, int b, int c) {
setSide(a,b,c);
}
public void setSide(int a, int b,int c){
sideA=a;
sideB=b;
sideC=c;
if(a+b>c&&a+c>b&&b+c>a) {
bool=true;
}else {
bool=false;
}
}
double getArea() {
if(bool) {
double n=(sideA+sideB+sideC)/2.0;
area=Math.sqrt(n*(n-sideA)*(n-sideB)*(n-sideC));
return area;
}
else
{
return 0;
}
}
}
package case6;
import java.util.Scanner;
public class TriangleTest {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int a=scan.nextInt();
int b=scan.nextInt();
int c=scan.nextInt();
/*******在下面创建三角形类Triangle的一个实例,并输出该对象的面积*****/
Triangle triangle=new Triangle(a,b,c);
triangle.getArea();
if(Math.abs(triangle.area)<1e-10)
System.out.print("不构成三角形");
else
System.out.println("三角形的面积是:"+triangle.area);
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)