一、探索面向对象编程
面向对象程序设计(Obhect Oriented Programming
),其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的,任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。
(一)采用面向对象方式求三角形面积
1、采用面向过程的思路
定义一个计算三角形面积的函数CalculateTriangleArea(double a, double b, double c)
,输入abc
,将abc
作为参数传入CalculateTriangleArea()
函数,得到计算结果。
public class CalculateTriangleArea {
public static void main(String[] args) {
double a, b, c, s;
Scanner sc=new Scanner(System.in);
System.out.print("a=");
a=sc.nextDouble();
System.out.print("b=");
b=sc.nextDouble();
System.out.print("c=");
c=sc.nextDouble();
//调用三角形的方法
s=getTriangIeArea(a,b,c);//实际参数 acttual parameter,简称实参
//根据返回值判断能否构成三角形
if (s!=-1) {
System.out.println("s=" + s);
}else {
System.out.println("提示构不成三角形");
}
}
/**
* 三角形面积计算方法
*
* @param a 形式参数(formal parameter),简称形参
* @param b 形式参数(formal parameter),简称形参
* @param c 形式参数(formal parameter),简称形参
* @return三角形面积
*/
private static double getTriangIeArea(double a,double b,double c){
double s ,p;
//判断能否构成三角形
if(a+b>c&& b+c>a&&c+a>b){
p=(a+b+c)/2;
s=Math.sqrt(p*(p-a)*(p-b)*(p-c));//square root
}else {
s=-1;
}
return s;
}
}
结果如下:
2、采用面向对象的思路
创建Triangle
类,包含a、b、c
私有属性,提供无参与有参构造方法,提供getters和setters,重写toString()方法,提供getArea()
方法;创建TestTriangle
类,创建Triangle
对象,设置对象属性a、b、c,调用对象方法,计算出三角形面积。 定义三个缺省权限
的双精度属性a,b,c,定义计算三角形面积的方法getArea(),返回值是双精度。 代码如下:
public class Triangle {
// 缺省权限属性
double a, b, c;
/**
* @return 三角形面积
*/
public double getArea() {
double s = 0, p;
// 判断a、b、c能否构成三角形
if (a + b > c && b + c > a && c + a > b) {
p = (a + b + c) / 2;
s = Math.sqrt(p * (p - a) * (p - b) * (p -c));
} else {
s = -1;
}
return s;
}
}
创建一个测试类TestTriangle
,在其主方法里创建Triangle对象,设置其属性,调用其方法,计算得到三角形面积。 代码如下:
public class TestTriangle {
public static void main(String[] args) {
double a, b, c, s ;
Scanner sc = new Scanner(System.in);
// 利用无参构造方法创建三角形
Triangle triangle = new Triangle();
System.out.print("a = ");
a = sc.nextDouble();
System.out.print("b = ");
b = sc.nextDouble();
System.out.print("c = ");
c = sc.nextDouble();
// 设置三角形对象属性
triangle.setA(a);
triangle.setB(b);
triangle.setC(c);
// 调用三角形对象方法
s = triangle.getArea();
// 打印三角形对象
System.out.println(triangle);
// 判断是否构成三角形
if (s != -1) {
System.out.println("s = " + String.format("%.2f", s)); //遮尾法
} else {
System.out.println("温馨提示:构不成三角形!");
}
}
}
运行结果如下: 创建TestTriangle2测试有参构造方法 代码如下:
public class TestTriangle2 {
public static void main(String[] args) {
double a, b, c, s;
Scanner sc = new Scanner(System.in);
System.out.print("a = ");
a = sc.nextDouble();
System.out.print("b = ");
b = sc.nextDouble();
System.out.print("c = ");
c = sc.nextDouble();
//基于有参构造方法来创建三角形对象
Triangle triangle = new Triangle(a,b,c);
// 调用三角形对象方法
s = triangle.getArea();
// 打印三角形对象
System.out.println(triangle);
// 判断是否构成三角形
if (s != -1) {
System.out.println("s = " + String.format("%.2f", s)); //遮尾法
} else {
System.out.println("温馨提示:构不成三角形!");
}
}
}
运行结果如下: