任务拓展:计算三角形面积

一、探索面向对象编程

  • 面向对象程序设计(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("温馨提示:构不成三角形!");
        }
    }
}

  • 运行结果如下:
    在这里插入图片描述
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值