面向对象编程 实验资料报告材料

上传人:无*** 文档编号:87859745 上传时间:2022-05-10 格式:DOC 页数:33 大小:1.19MB
返回 下载 相关 举报
面向对象编程 实验资料报告材料_第1页
第1页 / 共33页
面向对象编程 实验资料报告材料_第2页
第2页 / 共33页
面向对象编程 实验资料报告材料_第3页
第3页 / 共33页
点击查看更多>>
资源描述
word政法学院本科学生实验报告( 一 ) :学院:计算机科学学院专业:计算机科学与技术班级:实验课程名称:JAVA开发与语言基础试验时间 2011 年 9 月 28 日指导教师及职称实验成绩: 开课时间 2011 学年 第一 学期政法学院实验管理中心印制实验题目面向对象编程小组合作否姓 名唐晓梅班 级2011级专升本班学 号6一、实验目的:1、 熟悉Java面向对象程序设计的基本思想。2、 掌握类与对象的定义及使用方法。3、 掌握package语句与import语句的用法。4、 掌握java 继承中父类及其子类的定义方法。5、 掌握子类重写父类同名方法的方法。6、 掌握用法。二、实验环境:装有JDK1.6,Eclipse的的计算机一台三、实验容与步骤:(1)Java程序开发环境配置:1、 下载并安装JDK1.6,过程可参考教材P4-6。2、 配置环境变量:SDK平台提供的Java编译器(javac.exe)和Java解释器(java.exe)位于Java安装目录的bin文件夹中,为了能在任何目录中使用编译器和解释器,应在系统特性中设置Path。对于Windows2000、Windows2003、Windows XP,用鼠标右键点击“我的电脑”,弹出菜单,然后选择属性,弹出“系统特性”对话框,再单击该对话框中的高级选项,然后点击按钮“环境变量”,添加如下图所示的系统环境变量:J2SDK的安装目录的jre文件夹中包含着Java应用程序运行时所需要的Java类库,这些类库被包含在jrelib目录下的压缩文件rt.jar中 。因此,再添加如下图所示环境变量。3、 下载Eclipse3.4或以上版本,将其解压到某一目录下。使用时只需双击eclipse图标即可。4、 在记事本中编写简单的Application 程序,运用JDK命令方式在屏幕上打印输出“你好,很高兴学习Java”。5、 在记事本中编写简单的Applet 程序,运用JDK命令方式在Java Applet中绘制一行文字:“这是一个Java Applet 程序”。6、 在Eclipse环境下完成3,4所要求的任务,可参考教材P416实验1的步骤。(2)Java程序:实验3 类与对象1、三角形、梯形和圆形的类封装:分别定义三角形、梯形和圆形类,要求每个类中包含构造方法、求周长及面积的方法。最后在主方法中为三角形、梯形和圆形类创建对象并打印输出各种图形的周长及面积。该程序的模板代码如下:请将其补充完整并调试运行。AreaAndLength.javaclass Trangle double sideA,sideB,sideC,area,length; boolean boo; public Trangle(double a,double b,double c) 【代码1】 /参数a,b,c分别赋值给sideA,sideB,sideC if(【代码2】) /a,b,c构成三角形的条件表达式 【代码3】 /给boo赋值。 else 【代码4】 /给boo赋值。 double getLength() 【代码5】 /方法体,要求计算出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) 【代码6】 /参数a,b,c分别赋值给sideA,sideB,sideC if(【代码7】) /a,b,c构成三角形的条件表达式 【代码8】 /给boo赋值。 else 【代码9】 /给boo赋值。 class Lader double above,bottom,height,area; Lader(double a,double b,double h) 【代码10】 /方法体,将参数a,b,c分别赋值给above,bottom,height double getArea() 【代码11】 /方法体,,要求计算出area返回 class Circle double radius,area; Circle(double r) 【代码12】 /方法体 double getArea() 【代码13】 /方法体,要求计算出area返回 double getLength() 【代码14】 /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;【代码15】 /创建对象circle【代码16】 /创建对象trangle。【代码17】 /创建对象lader【代码18】 / circle调用方法返回周长并赋值给length System.out.println(圆的周长:+length); 【代码19】 / circle调用方法返回面积并赋值给area System.out.println(圆的面积:+area); 【代码20】 / trangle调用方法返回周长并赋值给length System.out.println(三角形的周长:+length); 【代码21】 / trangle调用方法返回面积并赋值给area System.out.println(三角形的面积:+area); 【代码22】 / lader调用方法返回面积并赋值给area System.out.println(梯形的面积:+area); 【代码23】 / trangle调用方法设置三个边,要求将三个边修改为12,34,1。【代码24】 / trangle调用方法返回面积并赋值给area System.out.println(三角形的面积:+area); 【代码25】 / trangle调用方法返回周长并赋值给length System.out.println(三角形的周长:+length); 通过编译得出如下答案:【代码1】: sideA=a;sideB=b;sideC=c;【代码2】: a+bc&a+cb&c+ba 【代码3】: boo=true; 【代码4】: boo=false; 【代码5】: if(boo) length=sideA+sideB+sideC; return length; else System.out.println(不是一个三角形,不能计算周长); return 0; 【代码6】: sideA=a;sideB=b;sideC=c;【代码7】: a+bc&a+cb&c+ba【代码8】: boo=true;【代码9】: boo=false;【代码10】:above=a; bottom=b; height=h;【代码11】: area=(above+bottom)/2*height; return area;【代码12】: radius=r;【代码13】: return 3.14*radius*radius;【代码14】: return 3.14*2*radius;【代码15】: circle=new Circle(10);【代码16】: trangle=new Trangle(3,4,5);【代码17】: lader=new Lader(3,4,10);【代码18】: length=circle.getLength();【代码19】: area=circle.getArea();【代码20】: length=trangle.getLength();【代码21】: area=trangle.getArea();【代码22】: area=lader.getArea();【代码23】: trangle.setABC(12,34,1);【代码24】: area=trangle.getArea();【代码25】: length=trangle.getLength();2、学习实例成员与类成员的区别:按照下面模板代码中的注释信息将该程序补充完整并调试运行。Example.javaclass A 【代码1】 /声明一个float型实例变量a【代码2】 /声明一个float型类变量b,即static变量b void setA(float a) 【代码3】 /将参数a的值赋值给成员变量a void setB(float b) 【代码4】 /将参数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) 【代码5】 /通过类名操作类变量b,并赋值100【代码6】 /通过类名调用方法inputB() A cat=new A(); A dog=new A();【代码7】 /cat象调用方法setA(int a)将cat的成员a的值设置为200【代码8】 /cat调用方法setB(int b)将cat的成员b的值设置为400【代码9】 /dog象调用方法setA(int a)将dog的成员a的值设置为150【代码10】 /dog调用方法setB(int b)将dog的成员b的值设置为300【代码11】 /cat调用inputA()。【代码12】 /cat调用inputB()。【代码13】 /dog调用inputA()。【代码14】 /dog调用inputB()。 通过编译得出如下答案:【代码1】: float a; 【代码2】: static float b; 【代码3】: this.a=a; 【代码4】: this.b=b;【代码5】: A.b=100; 【代码6】: A.inputB(); 【代码7】: cat.setA(200);【代码8】: cat.setB(400);【代码9】: dog.setA(150);【代码10】:dog.setB(300);【代码11】:cat.inputA();【代码12】:cat.inputB();【代码13】:dog.inputA();【代码14】:dog.inputB();3、使用package语句与import语句:上机调试下面程序,学会package与import语句的用法。SquareEquation.javapackage tom.jiafei;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,%fn,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; SunRise.javaimport tom.jiafei.*;class SunRise public static void main(String args ) SquareEquation equation=new SquareEquation(4,5,1); equation.getRoots(); equation.setCoefficient(-3,4,5); equation.getRoots(); 通过编译得出如下答案:【这是在JDK下运行的错误,因为没有在JDK下建包】如下图所示:【这个是在eclipse下运行的,因为把包的名字建错了,所以出错。】【这个就把包的名字改过来了,改成tao.jiafei,这样就对了。】实验4 继承与接口1、定义父类People,分别定义People类的子类ChinaPeople,AmericanPeople和BeijingPeople并分别重写父类中的各个方法。最后在主方法中分别创建各子类的对象并调用各自的方法打印输出信息。该程序的模板代码如下:请将其补充完整并调试运行。class People protected double weight,height; public void speakHello() System.out.println(yayawawa); public void averageHeight() height=173; System.out.println(average height:+height); public void averageWeight() weight=70; System.out.println(average weight:+weight); class ChinaPeople extends People 【代码1】 /重写public void speakHello()方法,要求输出类似“你好,吃了吗”这样的 /汉语信息【代码2】 /重写public void averageHeight()方法,要求输出类似 /“中国人的平均身高:168.78厘米”这样的汉语信息【代码3】 /重写public void averageWeight()方法, /要求输出类似“中国人的平均体重:65公斤”这样的汉语信息 public void chinaGongfu() 【代码4】/输出中国武术的信息,例如:坐如钟,站如松,睡如弓等 class AmericanPeople extends People【代码5】 /重写public void speakHello()方法,要求输出类似 /“How do you do”这样的英语信息。【代码6】 /重写public void averageHeight()方法 【代码7】 /重写public void averageWeight()方法 public void americanBoxing() 【代码8】/输出拳击的信息,例如,“直拳”、“钩拳”等 class BeijingPeople extends ChinaPeople 【代码9】 /重写public void speakHello()方法,要求输出类似“您好”这样的汉语信息 【代码10】 /重写public void averageHeight()方法 【代码11】 /重写public void averageWeight()方法 public void beijingOpera() 【代码12】/输出京剧的信息 public class Example public static void main(String args) ChinaPeople chinaPeople=new ChinaPeople(); AmericanPeople americanPeople=new AmericanPeople(); BeijingPeople beijingPeople=new BeijingPeople(); chinaPeople.speakHello(); americanPeople.speakHello(); beijingPeople.speakHello(); chinaPeople.averageHeight(); americanPeople.averageHeight(); beijingPeople.averageHeight(); chinaPeople.averageWeight(); americanPeople.averageWeight(); beijingPeople.averageWeight(); chinaPeople.chinaGongfu(); americanPeople.americanBoxing(); beijingPeople.beijingOpera() ; beijingPeople.chinaGongfu(); 通过编译得出如下答案:【代码1】: public void speakHello() System.out.println(你好,吃饭了吗?); 【代码2】: public void averageHeight() height=173; System.out.println(中国人的平均身高:+height+厘米); 【代码3】: public void averageWeight() weight=67.34; System.out.println(中国人的平均体重:+weight+公斤); 【代码4】: System.out.println(坐如钟,站如松,睡如弓);【代码5】: public void speakHello() System.out.println(How do You do); 【代码6】: public void averageHeight() height=188; System.out.println(Amerian Average height:+height+ cm); 【代码7】: public void averageWeight() weight=80.23; System.out.println(Amerian Average weight:+weight+ kg); 【代码8】: System.out.println(直拳、钩拳);【代码9】: public void speakHello() System.out.println(您好); 【代码10】: public void averageHeight() height=16; System.out.println(人的平均身高:+height+厘米); 【代码11】: public void averageWeight() weight=6; System.out.println(人的平均体重:+weight+公斤); 【代码12】: System.out.println(京剧术语);2、读懂下面模板代码,按要求补充程序并调试运行。掌握抽象类的定义及其实现方法,学习上转型对象的运用方法。abstract class Employee public abstract double earnings();class YearWorker extends Employee 【代码1】 /重写earnings()方法class MonthWorker extends Employee 【代码2】 /重写earnings()方法。class WeekWorker extends Employee 【代码3】 /重写earnings()方法。class pany Employee employee; double salaries=0; pany(Employee employee) this.employee=employee; public double salariesPay() salaries=0; 【代码4】 /计算salaries。 return salaries; public class HardWork public static void main(String args) Employee employee=new Employee20; for(int i=0;iemployee.length;i+) if(i%3=0) employeei=new WeekWorker(); else if(i%3=1) employeei=new MonthWorker(); else if(i%3=2) employeei=new YearWorker(); pany pany=new pany(employee); System.out.println(公司年工资总额:+pany.salariesPay(); 通过编译得出如下答案:【代码1】: public double earnings() return 50000.456; 【代码2】: public double earnings() return 12*2300; 【代码3】: public double earnings() return 52*500; 【代码4】: for(int i=0;iemployee.length;i+) salaries=salaries+employeei.earnings(); 3、读懂下面模板代码,按要求补充程序并调试运行。掌握接口的定义及其实现方法,学习接口回调的运用方法。interface puterWeight public double puteWeight();class Television implements puterWeight 【代码1】 /实现puteWeight()方法。class puter implements puterWeight 【代码2】 /实现puteWeight()方法。 class WashMachine implements puterWeight 【代码3】 /实现puteWeight()方法。class Car puterWeight goods; double totalWeights=0; Car(puterWeight goods) this.goods=goods; public double getTotalWeights() totalWeights=0; 【代码4】 /计算totalWeights return totalWeights; public class Road public static void main(String args) puterWeight goodsOne=new puterWeight50, goodsTwo=new puterWeight22 ; for(int i=0;igoodsOne.length;i+) if(i%3=0) goodsOnei=new Television(); else if(i%3=1) goodsOnei=new puter(); else if(i%3=2) goodsOnei=new WashMachine(); for(int i=0;igoodsTwo.length;i+) if(i%3=0) goodsTwoi=new Television(); else if(i%3=1) goodsTwoi=new puter(); else if(i%3=2) goodsTwoi=new WashMachine(); Car 大货车=new Car(goodsOne); System.out.println(大货车装载的货物重量:+大货车.getTotalWeights(); Car 小货车=new Car(goodsTwo); System.out.println(小货车装载的货物重量:+小货车.getTotalWeights(); 通过编译得出如下答案:【代码1】: public double puteWeight() return 45.5; 【代码2】: public double puteWeight() return 65.5;【代码3】: public double puteWeight() return 145; 【代码4】:for(int k=0;kgoods.length;k+) totalWeights=totalWeights+goodsk.puteWeight(); 第3部分 常用类与异常处理(1)完成教材P430实验5.1。package zuoye;import java.util.*;public class TestString public static void main(Stringargs)String data=This is a String;StringTokenizer st=new StringTokenizer(data); int count=st.countTokens(); System.out.println(原串是:+data); System.out.println(各个单词如下:); while(st.hasMoreTokens()String s=st.nextToken();System.out.println(s); System.out.println(单词总数:+count);通过编译得出如下结果:(2)完成教材P116例题5.11。import java.util.*;import java.text.*;public class TestDateFormat public static Date parseDate(String text, String format) / 格式化日期字符串try return new SimpleDateFormat(format).parse(text); catch (ParseException e) throw new RuntimeException(e.getMessage();public static void main(String args) throws ParseException Date date = new Date();SimpleDateFormat f = new SimpleDateFormat(yyyy-MM-dd-EEEE-hh-mm-ss);SimpleDateFormat f1 = new SimpleDateFormat(yyyy/MM/dd/EEEE/hh/mm/ss);System.out.println(f.format(date);System.out.println(f1.format(date);Date d1 = parseDate(12-23-2008, MM-dd-yyyy);System.out.println(d1);Date d2 = parseDate(2008/12/25 10:53:54, yyyy/MM/dd hh:mm:ss);System.out.println(d2);通过编译得出如下结果:(3)完成教材P431实验5.2。import java.io.BufferedReader;import java.io.*;import java.util.regex.*;public class EmailSpider public static void main(String args) try BufferedReader br = new BufferedReader(new FileReader(d:test.txt);String line = ;while(line=br.readLine() != null) parse(line); catch (FileNotFoundException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();private static void parse(String line) Pattern p = Pattern.pile(w.+w.+.w+); / 编译正则表达式Matcher m = p.matcher(line); / 匹配地址while(m.find() System.out.println(m.group(); / 打印匹配的地址通过编译得出如下结果:(4)完成教材P434实验6.1,6.2和6.3。6.1package di6;public class Magics public static void main(String args) int i = 0;int j = 0;int m = 0;int n = 5;j = (n + 1) / 2 - 1;int a = new intnn;aij = +m;/ 第一个数在第一行正中while (m 1) i = i + 2;j = j - 1;if (i (n - 1)/ 超出方阵右边界,则新位置取应选行的最左一个位置j = j - n;aij = +m;for (i = 0; i n; i+) for (j = 0; j n; j+) System.out.print(aij+t);System.out.println();通过编译得出如下结果:6.2package oic.circle;public class MatrixDemo public static void main(String args) inta1=1,2,3,4,5,6;intb1=1,2,3,4,5,6;intc1=new int22;for(int row=0;row2;row+)for(int col=0;col2;col+)c1rowcol=0;for(int k=0;k3;k+)c1rowcol+=a1rowk*b1kcol;for(int row=0;row2;row+)for(int col=0;col2;col+)System.out.print( +c1rowcol);System.out.println();通过编译得出如下结果:6.3package org.circle;enum SeasonSPRING,SUMMER,AUTUMN,WINTERpublic class EnumClass public static void main(Stringargs)for(Season s:Season.values()System.out.print(s+ordinal:+s.ordinal();System.out.print(s.pareTo(Season.SUMMER)+);System.out.print(s.equals(Season.SUMMER)+);System.out.print(s=Season.SUMMER);System.out.print(s.getDeclaringClass();System.out.println(s.name();System.out.println(-);for(String s:SPRING,SUMMER,AUTUMN,WINTER.split( )Season season=Enum.valueOf(Season.class,s);System.out.println(season);通过编译得出如下结果:四、实验过程与分析: 首先,安装JDK1.6 ,设置环境变量,然后到运行输入cmd,这样就可以在jdk下运行以后缀名为.java的文件了。其次是在Eclipse下运行文件,打开Eclipse。先建一个java项目,然后建一个java包,然后建一个以主类名为名的java类,然后编写一段程序,进行编译和运行。 设置好了后就可以根据程序的容,进行编译,根据Java面向对象程序设计的基本思想、类与对象的定义及使用方法、package语句与import语句的用法、java 继承中父类及其子类的定义方法、 掌握子类重写父类同名方法的方法。 在程序设计的同时,实验三的第三个程序有一个包两个类,这个在JDK里面就不好运行,到Eclipse就非常方便了。五、实验总结:通过以上两部分的实验,熟悉Java面向对象程序设计的基本思想、类与对象的定义及使用方法、package语句与import语句的用法、java 继承中父类及其子类的定义方法、 掌握子类重写父类同名方法的方法。 做程序设计题时,应该仔细观察找出程序设计的基本思想、还有这个程序用的什么方法,这样做一个程序就没有那么难了。六、指导教师评语及成绩:实验过程与结果完整,分析总结得当。教室签名成绩批阅日期33 / 33
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!