java 实验三 面向对象程序设计(无脑实验系列)

1.三角形、梯形和圆形的类封装

²  实验要求:

编写一个Java应用程序,该程序中有3个类:Trangle、Leder和Circle,分别用来刻画“三角形”、“梯形”和“圆形”。具体要求如下:

a)  Trangle类具有类型为double的三个边,以及周长、面积属性,Trangle类具有返回周长、面积以及修改三个边的功能。另外,Trangle类还具有一个boolean型的属性,该属性用来判断三个属能否构成一个三角形。

b)  Lader类具有类型double的上底、下底、高、面积属性,具有返回面积的功能。

c)  Circle类具有类型为double的半径、周长和面积属性,具有返回周长、面积的功能。

package lzy;
class Trangle
{
   double sideA,sideB,sideC,area,length;
   boolean boo;
   public  Trangle(double a,double b,double c)
   {
    sideA=a;sideB=b;sideC=c;  //参数a,b,c分别赋值给sideA,sideB,sideC
     if(a+b>c&&a+c>b&&c+b>a) //a,b,c构成三角形的条件表达式
     {
       boo=true;  //给boo赋值。
     }
    else
     {
        boo=false;  //给boo赋值。
     }
   }
   double getLength()
   {
        if(boo)
        {
          length=sideA+sideB+sideC;
          return length;
        }
         else
        {
          System.out.println("不是一个三角形,不能计算周长");
          return 0;
         }     //方法体,要求计算出length的值并返回
  }
   public double  getArea()
   {
      if(boo)
        {
          double p=(sideA+sideB+sideC)/2.0;
          area=Math.sqrt(p*(p-sideA)*(p-sideB)*(p-sideC)) ;
          return area;
        }
      else
        {
          System.out.println("不是一个三角形,不能计算面积");
          return 0;
        }
   }
   public void setABC(double a,double b,double c)
   {
    sideA=a;sideB=b;sideC=c;//参数a,b,c分别赋值给sideA,sideB,sideC
     if(a+b>c&&a+c>b&&c+b>a) //a,b,c构成三角形的条件表达式
     {
      boo=true; //给boo赋值。
     }
    else
     {
        boo=false; //给boo赋值。
     }
   }
}
class Lader
{
    double above,bottom,height,area;
    Lader(double a,double b,double h)
    {
      above=a; bottom=b;height=h; //方法体,将参数a,b,c分别赋值给above,bottom,height
    }
    double getArea()
    {
      area=(above+bottom)/2*height;
           return area; //方法体,,要求计算出area返回
    }
}
class Circle
{
    double radius,area;
    Circle(double r)
    {
        radius=r; //方法体
    }
    double getArea()
    {
       return 3.14*radius*radius; //方法体,要求计算出area返回
    }
    double getLength()
    {
      return 3.14*2*radius; //getArea方法体的代码,要求计算出length返回
    }
    void setRadius(double newRadius)
    {
       radius=newRadius;
    }
    double getRadius()
    {
        return radius;
    }
}
public class AreaAndLength
{
    public static void main(String args[])
    {
       double length,area;
       Circle circle=null;
       Trangle trangle;
       Lader lader;
       circle=new Circle(10); //创建对象circle
       trangle=new Trangle(3,4,5); //创建对象trangle。
       lader=new Lader(3,4,10);//创建对象lader
       length=circle.getLength(); // circle调用方法返回周长并赋值给length
       System.out.println("圆的周长:"+length);
       area=circle.getArea();// circle调用方法返回面积并赋值给area
       System.out.println("圆的面积:"+area);
       length=trangle.getLength(); // trangle调用方法返回周长并赋值给length
       System.out.println("三角形的周长:"+length);
       area=trangle.getArea(); // trangle调用方法返回面积并赋值给area
       System.out.println("三角形的面积:"+area);
       area=lader.getArea(); // lader调用方法返回面积并赋值给area
       System.out.println("梯形的面积:"+area);
       trangle.setABC(12,34,1); // trangle调用方法设置三个边,要求将三个边修改为12,34,1。
       area=trangle.getArea(); // trangle调用方法返回面积并赋值给area
       System.out.println("三角形的面积:"+area);
       length=trangle.getLength(); // trangle调用方法返回周长并赋值给length
       System.out.println("三角形的周长:"+length);
    }
}

2.实例成员与类成员。

²  实验要求:

按程序模板的要求编写源文件,要特别注意程序的输出结果,并能正确解释输出的结果。

package lzy;

class A
{
   float a;              //声明一个float型实例变量a
   static float b;        //声明一个float型类变量b,即static变量b
    void setA(float a)
    {
      this.a=a;         //将参数a的值赋值给成员变量a
    }
    void setB(float b)
    {
     this.b=b;      //将参数b的值赋值给成员变量b
    }
    float getA()
    {
       return a;
    }
    float getB()
    {
       return b;
    }
    void inputA()
    {
       System.out.println(a);
    }
    static void inputB()
    {
       System.out.println(b);
    }
}
public class Example
{
    public static void main(String args[])
    {
      A.b=100;           //通过类名操作类变量b,并赋值100
       A.inputB();           //通过类名调用方法inputB()
       A cat=new A();
       A dog=new A();
       cat.setA(200);    //cat象调用方法setA(int a)将cat的成员a的值设置为200
       cat.setB(400);    //cat调用方法setB(int b)将cat的成员b的值设置为400
       dog.setA(150);    //dog象调用方法setA(int a)将dog的成员a的值设置为150
       dog.setB(300);   //dog调用方法setB(int b)将dog的成员b的值设置为300
       cat.inputA();   //cat调用inputA()。
       cat.inputB(); //cat调用inputB()。
       dog.inputA();   //dog调用inputA()。
       dog.inputB();   //dog调用inputB()。
    }
}


3.使用package语句与import语句。

²  实验要求:

按实验要求使用package语句,并用import语句使用Java平台提供的包中的类以及自定义包中的类。掌握一些重要的操作步骤。

package lzy;

class SunRise
{  
    public static void main(String args[ ])
    {
        SquareEquation equation=new SquareEquation(4,5,1);
        equation.getRoots();
        equation.setCoefficient(-3,4,5);
        equation.getRoots();
    }
}

package lzy;

public class SquareEquation
{
    double a,b,c;
    double root1,root2;
    boolean boo;
    public  SquareEquation(double a,double b,double c)
    {
       this.a=a;
       this.b=b;
       this.c=c;
       if(a!=0)
       {
           boo=true;
       }
       else
       {
          boo=false;
       }
    }
    public void getRoots()
    {
       if(boo)
        {
           System.out.println("是一元2次方程");
           double disk=b*b-4*a*c;
           if(disk>=0)
             {
               root1=(-b+Math.sqrt(disk))/(2*a);
               root2=(-b-Math.sqrt(disk))/(2*a);
               System.out.printf("方程的根:%f,%f\n",root1,root2);
             }
           else
             {
                System.out.printf("方程没有实根\n");
             }

        }
        else
        {
           System.out.println("不是一元2次方程");
        }
    }
   public void setCoefficient(double a,double b,double c)
    {
       this.a=a;
       this.b=b;
       this.c=c;
       if(a!=0)
        {
            boo=true;
        }
       else
       {
            boo=false;
       }
    }
}



  • 10
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值