实验项目(二)Java中的面向对象特性09new.doc

上传人:scccc 文档编号:11251221 上传时间:2021-07-18 格式:DOC 页数:14 大小:105KB
返回 下载 相关 举报
实验项目(二)Java中的面向对象特性09new.doc_第1页
第1页 / 共14页
实验项目(二)Java中的面向对象特性09new.doc_第2页
第2页 / 共14页
实验项目(二)Java中的面向对象特性09new.doc_第3页
第3页 / 共14页
实验项目(二)Java中的面向对象特性09new.doc_第4页
第4页 / 共14页
实验项目(二)Java中的面向对象特性09new.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《实验项目(二)Java中的面向对象特性09new.doc》由会员分享,可在线阅读,更多相关《实验项目(二)Java中的面向对象特性09new.doc(14页珍藏版)》请在三一文库上搜索。

1、实验项目(二) Java中的面向对象特性一、实验目的1 掌握Java中类、对象、包、接口的创建和使用。2 掌握继承、封装、多态性的实现机制。二、实验要求: 1. 上机实验前,按照每一个实验题目的具体要求提前完成准备工作,如:查找资料、设计算法、写出全部源程序,做好预习笔记,做到有准备地上机。由实验小组组长先行检查本小组各成员的预习报告,指导教师上机前抽查50%的学生预习报告。2. 上机实验课内,积极调试及修改程序。得到正确运行结果后,积极主动要求指导教师验收程序,回答指导教师提出的问题。3. 上机实验课后,学生应根据实验数据及结果,完成实验报告。实验报告是评定实验成绩的重要组成部分。完成的实验

2、报告交给实验小组组长,实验小组组长收齐本组的实验报告后统一交课代表,课代表收齐本班的实验报告后统一交指导教师审阅评定。4. 每次上交的实验报告每个实验小组必须有1/3的成员为打印版的实验报告,其他成员可上交电子版的实验报告。由实验小组组长确定交打印版的成员。三、实验内容任务1定义一个复数类Complex,然后编写测试类测试该复数类Complex。最后参考思考题提出并回答你的探究问题。复数类Complex必须满足如下要求1 复数类Complex的属性有:两个int变量r和i(分别表示一个复数的实部与虚部)。2 复数类Complex的方法有:Complex(int r,int i):构造方法,形参

3、r赋值给复数的实部,i赋值给虚部。Complex():构造方法,将复数的实部与虚部都赋值为0。Complex complexAdd(Complex a):将当前复数对象与参数相加。String toString():把当前复数对象的实部与虚部组合成a+bi的字符串形式,其中,a和b分别为实部与虚部的数据。原代码:class Complex int i,r; Complex(int r,int i) this.r=r;this.i=i; public Complex complexAdd(Complex c) /对象作为参数, 按引用传递 return new Complex(r+c.r,i+c

4、.i); /返回值应是该类的一个实例 public String toString() String res;if(i=0)res=r+;elseif(i0)res=r+i+i; elseres=r+i+i; return res; class Test public static void main(String args) Complex c1=new Complex(1,2); Complex c2=new Complex(2,3); Complex c3=plexAdd(c2); System.out.println(c3.toString();运行结果:任务2设计一个分数类(Rati

5、onal),要求分数包括分子和分母两个变量,提供能进行分数运算的方法。然后编写一个测试类测试该类。class Rationalprivate int num,den;public Rational(int n,int d) num=n; den=(d=0?1:d);public Rational() this(1,1); public Rational(Rational r) this(r.num,r.den);private void simplify (Rational r) int g; if (r.num!=0) g=getGCD (r.num,r.den); r.num/=g; r.

6、den/=g; /处理符号 if(r.den0) r.den=- r.den; r.num=-r.num; private int getGCD(int m,int n) int t,r; if (m= 0) ? r : 0; / 设置圆的半径public double getR() return r; public double getArea() return r * r * 3.14159; / 返回圆的面积public String toString() return new String(+getX()+,+getY()+) +;+r=+r ); public boolean isI

7、nCircle(int x,int y) if(x*x+y*y)r*r)return true;elsereturn false;public boolean isInCircle(Point p) if(p.getX()*p.getX()+p.getY()*p.getY()r*r)return true;elsereturn false;public class TestCircle public static void main(String args) Circle circle1=new Circle(20,30,40);System.out.println(circle1. getA

8、rea();System.out.println(circle1);Circle circle2=new Circle();System.out.println(circle2. getArea();System.out.println(circle2);Point p=new Point(20,20);Circle circle3=new Circle(p,10);System.out.println(circle3);Point p2=new Point(11,12);Circle circle4=new Circle(20,30,20);if(circle4.isInCircle(p2)

9、System.out.println(在圆内);elseSystem.out.println(不再圆内);if(circle4.isInCircle(20,40)System.out.println(20,40)在圆内);elseSystem.out.println(20,40)不再圆内); 运行结果:任务4定义一个接口,声明一个方法计算长方形的面积,再定义一个具体的类实现这个接口,最后编写一个测试类使用这个接口。import javax.swing.JOptionPane;interface Shape public abstract double area(); class Square

10、implements Shape protected int xPosition, yPosition; public Square() xPosition=0; yPosition=0; public Square(int xP, int yP) xPosition = xP; yPosition = yP; public String toString() return ( + xPosition + , + yPosition + ); public double area() return xPosition*yPosition; class TestInterface public

11、static void main(String args) Square square1 = new Square(2, 15); Square square2 = new Square(4, 10); Square square3 = new Square(8, 9); Shape Shapes = new Shape3; Shapes0 = square1; Shapes1 = square2; Shapes2 = square3; String output=; for (int i = 0; i Shapes.length; i+) output += n + Shapesi.toSt

12、ring() + n 面积= + Shapesi.area() ; JOptionPane.showMessageDialog(null, output, Demo,JOptionPane.INFORMATION_MESSAGE); System.exit(0); 运行结果:任务5定义一个接口,定义有关算术的属性,并创建4个实现这个接口的类,分别进行加、减、乘、除的运算。import javax.swing.JOptionPane;interface calculate public abstract double add(); public abstract double minus();

13、public abstract double mul(); public abstract double div();class Num implements calculate protected int xPosition, yPosition; public Num() xPosition=0; yPosition=0; public Num(int xP, int yP) xPosition = xP; yPosition = yP; public String toString() return ( + xPosition + , + yPosition + ); public do

14、uble add() return xPosition+yPosition; public double minus() return xPosition-yPosition; public double mul() return xPosition*yPosition; public double div() return xPosition/yPosition; class TestInterface2 public static void main(String args) Num num1 = new Num(30, 20);Num num2 = new Num(24, 4);Num

15、num3 = new Num(22, 11); calculate calculates = new calculate3; calculates0 = num1; calculates1 = num2; calculates2 = num3; String output=; for (int i = 0; i calculates.length; i+) output += n +calculatesi.toString() + n 相加得 + calculatesi.add() + n 相减得 + calculatesi.minus()+n相乘得+calculatesi.mul()+n相除

16、得+calculatesi.div(); JOptionPane.showMessageDialog(null,output,Demo,JOptionPane.INFORMATION_MESSAGE); System.exit(0); 运行结果:任务6定义一个包,包中包含一个求面积和长度的接口。在其他文件中定义矩形类、三角形类和圆类分别实现这个接口求出各自的面积和长度。import eva.Point;class Circle extends Point private double radius=1.0; public double findArea() return radius * ra

17、dius * Math.PI; public double findPerimeter() return 2 * radius * Math.PI; class Rectangle extends Point private double width=4.0; private double height = 2.0; public double findArea() return width * height; public double findPerimeter() return 2 * (width + height); class Triangle extends Point priv

18、ate double a=2.0; private double b=3.0; private double c=4.0; private double p=(a+b+c)/2; public double findArea() return Math.sqrt(p*(p-a)*(p-b)*(p-c); public double findPerimeter() return a+b+c; public class TestAbstractClass public static void test(Point g) System.out.println(面积+g.findArea();Syst

19、em.out.println(周长+g.findPerimeter();public static void main(String args) Point g=new Point3; g 0 = new Circle();g 1 = new Rectangle();g 2 = new Triangle();for(int i=0;i找3和6的最小公倍数(6)=通分= (1*2)/(3*2)+(1*1)/(6*1) =3/6 =找分子和分母的最大公约数(3) =约分=(3/3)/(6/3) =1/2参考源程序/ Rational.javapublic class Rational /定义2个i

20、nt型实例变量private int numerator;private int denominator;/定义构造方法,初始化分子与分母public Rational(int n,int d) numerator=n; denominator=(d=0?1:d); simplify(this) ;/化成最简分数/构造方法重载public Rational() this(1,1); /构造方法重载public Rational(Rational r) this(r.numerator,r.denominator);/把分数化成最简分数private void simplify (Rationa

21、l r) int g; if (r.numerator!=0) g=getGCD (r.numerator,r.denominator); r.numerator/=g; r.denominator/=g; /处理符号 if(r.denominator 0) r.denominator=- r.denominator; r.numerator=-r.numerator; /定义找最大公约数方法private int getGCD(int m,int n) int t,r; if (mn) t=m; m=n; n=t; r=m%n; while (r!=0) m=n;n=r;r=m%n; ret

22、urn n; /定义找最小公倍数的方法private int getLCM(int m,int n) return m*n/getGCD (m,n); public Rational add(Rational r) int g; /保存最大公约数 Rational r1=new Rational(); /保存计算结果/计算分母-找分母最小公倍数 r1.denominator=getLCM (r.denominator,denominator);/计算分子r1.numerator=r1.denominator/denominator*numerator;r1.numerator+=r1.deno

23、minator/r.denominator*r.numerator;/分子分母约分 simplify (r1)return r1;public String toString()String s= new String(“”);if(numerator=0) s=“0”;else s=numerator+/+denominator;return s; public Rational minus(Rational r)/补充 完成程序 public Rational multiply(Rational r) / /补充完成程序public Rational divide(Rational r)/补充完成程序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1