




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
个人精品文档计算机科学与技术系 实 验 报 告专业名称 软 件 工 程 课程名称 面向对象程序设计 项目名称 实验三 类和对象 班 级 15软工2班 学 号 1504092006 姓 名 孙魏东 同组人员 无 实验日期 2016.9.27 一、实验目的与要求 (简述本次实验要求达到的目的,涉及到的相关知识点,实验的具体要求。)目的:1.掌握Java类的结构、类的定义、方法和属性的定义以及对象的实现。2.掌握类及其成员修饰符的使用;掌握构造函数的使用;方法的参数传递和返回值的用法。3.掌握类变量与实例变量,以及类方法与实例方法的区别。要求: 1. 正确地定义类、方法和属性,要求属性均定义成私有的(private)2. 学会方法的参数传递和返回值的用法3. 熟练使用类及其成员修饰符4. 使用构造函数创建类的对象,掌握默认构造函数和自定义构造函数的区别5. 类变量与实例变量,以及类方法与实例方法的使用(静态方法常常为应用程序中的其它类提供一些实用工具所用,在Java的类库中大量的静态方法正是出于此目的而定义的。)6. 程序应包括各个被调用方法的执行结果的显示。7. 写出实验报告。要求记录编译和执行Java程序当中的系统错误信息提示,并给出解决办法。(附运行界面、源代码)。二、实验内容(根据本次实验项目的具体任务和要求,完成相关内容,可包括:实验目的、原理、算法描述或流程图、源代码、实验运行步骤、关键技术分析、测试数据与实验结果、其他 ) 实验目的1: 定义一个高校人员类School_Property,包含姓名、出生年月、性别、身份证号、手机号码,所在学校,入校时间,家庭地址等私有属性,以及访问属性的方法。编写程序,创建一个高校人员类的对象,设置属性值,然后打印出该对象的各项属性信息。 原理: 编写一个高校学生类School_Property,类里存放姓名name、出生年月dateofbirth、性别sex、身份证号id、手机号码tel,所在学校school,入校时间entertime,家庭地址address等私有属性,以及访问属性的方法getName(),getSex()等。 算法描述: 由于在类的内部,属性的访问权限是透明的,所以可以在类的内部定义访问私有属性的方法,在类的外部只需要调用公有的方法就可以访问私有的属性变量,例如在类的内部定义一个设置并访问名字的方法: public void setName(String name) This name = name; public String getName(String name) return name; 这样就可以在一个类中访问它的私有属性,其他的私有属性的访问方式相同。 实验运行步骤: 打开dos界面,进入代码的路径,输入javac School.java,未打印出错的信息,继续输入java School后打印出成员的属性信息如下: 实验目的2:在上题的基础上,重载构造方法,分别用重载的构造方法实例化对象,并对对象的各属性赋值。并完成以下功能的编写:1)将高校人员对象传入print,可以直接打印出高校人员各属性值。(提示:重写toString方法即可)2)比较当前对象和输入参数中的对象的年龄大小,输出比较结果形式:如张三比李四大。(提示:日期类型比较大小)3)比较当前对象和输入参数中的对象是不是同一个人,是的话返回true,否则false。(提示:比较身份证号)4)编写一个sayHello方法,打印输出:“大家好,我是XXXX学校的XXX!”编写一个测试类,在该类的main方法调用以上方法测试。 原理: 1.首先定义一个高校人员的类class School_Property,里面再定义许多私有属性变量,包含姓名、出生年月、性别、身份证号、手机号码,所在学校,入校时间,家庭地址等。然后重写构造函数School_Property()使其具有可以传递若干个形参,传递从主启动类实例化对象时传递过来的实参,由于在类的内部成员属性的访问权限是透明的,所以可以在测试类的内部写一个方法print(),用于访问输出高效人员的内部私有属性的值,在输出时可以调用高校人员类中的toString()方法,在调用toString()方法之前要对其进行重写。 算法描述: public School_Persion(String name, int dateofbirth, String sex, String id,String tel, String school, String entertime, String address) = name;this.dateofbirth = dateofbirth;this.sex = sex;this.id = id;this.tel = tel;this.school = school;this.entertime = entertime;this.address = address;在重写类的构造方法的时候, = name;来将传递过来的形参直接赋值给我们的当前类的对象的私有成员的属性值。Overridepublic String toString() System.out.println(姓名: + name + , + 出生日期: + dateofbirth + ,+ 性别: + sex + , + 身份证号: + id + , + 联系电话: + tel + ,+ 所在学校: + school + , + 入校时间: + entertime + , + 家庭住址:+ address);return 6;在重写toString()方法时,有许多种方法,其中最常用的是在方法中直接返回属性的值,或者直接在方法中打印出属性的值,以达到题目的要求,这里我用的是直接打印出属性的值的方式。 2.在比较成员对象的年龄的时候,有多种方法,可以将出生日期定义为Date类型的成员属性,然后利用java的库函数里的比较日期的方法来比较,但是比较麻烦,这里采用的是将8位数的日期的整型变量转化为年月日分别进行比较,public void compare(School_Persion s) int date = s.dateofbirth;int b, c, d, b1, c1, d1;int sum;b = date / 10000;c = (date - (b * 10000) / 100;d = date - b * 10000 - c * 100;b1 = dateofbirth / 10000;c1 = (dateofbirth - (b1 * 10000) / 100;d1 = dateofbirth - b1 * 10000 - c1 * 100;sum = (b - b1) * 365 + (c - c1) * 31 + (d - d1);System.out.println(s比s1大:%d天 + sum);然后计算其日期之差,然后输出其大小的值就可以完成比较了。 3.比较当前对象和输入参数中的对象是不是同一个人,可以对传入的对象获取它的身份证属性,然后比较其属性值是否相同,如果相同则返回ture,否则返回false。4.编写一个sayHello方法,打印输出:“大家好,我是XXXX学校的XXX!”,只需要在高校人员类中写一个sayHello方法,然后调用,用输出打印语句打印出其值即可。 实验运行步骤: 1. 在eclipse环境下编译运行: 直接鼠标点击eclipse上的run按钮就可以直接打印输出所需要的信息。2. 在dos环境下编译运行: 打开dos窗口,进入包的src目录下,输入javac +类1.java +类2.java 没有打印提示错误信息便说明程序没有错误。 继续输入java test3.test.Test即可输出结果程序运行结束。三、实验分析与小结(1实验过程中的问题分析、产生的原因以及解决方法;2实验结果分析; 3有待优化思路)遇到的问题:1. 在比较两个出生年月日期时,算法设计上开始存在问题,因为年月日有一个换算关系,所以比较起来非常的不方便,最初想利用java库函数里自带的方法来写,将日期定义为Date型,但是后来在查阅帮助文档时发现很多的比较日期的库方法已经过时不能用了,但是新版的用法找不到,于是就换了一种思路,将成员属性中的出生日期直接定义为整型变量,然后自己对传入的8位数数据进行运算处理,分解为年月日三个属性,然后分别计算,输出两个日期的大小,完成了比较。2. 在将带有包名的程序在dos环境下运行的时候总是提示错误,最后可以编译,但是无法运行,解决方案是,编译的时候将两个类带上路径一起编译出来,然后运行时需要输入包名.类名即可运行。总结:我们在编写程序的时候难免会遇到许多问题,此时我们不应该死脑经的停留在某一种算法上,适当的我们可以采用其他的解决方案,以达到我们需要的目的。同时也应该学会经常查看语言的帮助文档或者其他的资料来辅助我们解决问题。4、 源代码1、class School_Propertyprivate String name;private int dateofbirth;private String sex;private String id;private String tel;private String school;private String entertime;private String address;public void setName(String name) = name; public void setDateofbirth(int dateofbirth)this.dateofbirth = dateofbirth; public void setSex(String sex)this.sex = sex;public void setId(String id)this.id = id;public void setTel(String tel)this.tel = tel;public void setSchool(String school)this.school = school;public void setEntertime(String entertime)this.entertime = entertime;public void setAddress(String address)this.address = address;public String getName()return name; public int getDateofbirth()return dateofbirth; public String getSex()return sex;public String getId()return id;public String getTel()return tel;public String getSchool()return school;public String getEntertime()return entertime;public String getAddress()return address;public class Schoolpublic static void main(String args)School_Property s = new School_Property();s.setName(张三);s.setDateofbirth(19971124);s.setSex(男);s.setId(342422199620123654);s.setTel;s.setSchool(合肥学院);s.setEntertime(20160201);s.setAddress(合肥);System.out.println(姓名:+s.getName()+,+出生日期:+s.getDateofbirth()+,+性别:+s.getSex()+,+身份证号:+s.getId()+,+电话:+s.getTel()+,+学校:+s.getSchool()+,+入学时间:+s.getEntertime()+,+地址:+s.getAddress();2.package test3.po;public class School_Persion private String name;private int dateofbirth;private String sex;private String id;private String tel;private String school;private String entertime;private String address;public School_Persion(String name, int dateofbirth, String sex, String id,String tel, String school, String entertime, String address) = name;this.dateofbirth = dateofbirth;this.sex = sex;this.id = id;this.tel = tel;this.school = school;this.entertime = entertime;this.address = address;Overridepublic String toString() System.out.println(姓名: + name + , + 出生日期: + dateofbirth + ,+ 性别: + sex + , + 身份证号: + id + , + 联系电话: + tel + ,+ 所在学校: + school + , + 入校时间: + entertime + , + 家庭住址:+ address);return 6;public void print() System.out.println(姓名: + name + , + 出生日期: + dateofbirth + ,+ 性别: + sex + , + 身份证号: + id + , + 联系电话: + tel + ,+ 所在学校: + school + , + 入校时间: + entertime + , + 家庭住址:+ address);public void compare(School_Persion s) int date = s.dateofbirth;int b, c, d, b1, c1, d1;int sum;b = date / 10000;c = (date - (b * 10000) / 100;d = date - b * 10000 - c * 100;b1 = dateofbirth / 10000;c1 = (dateofbirth - (b1 * 10000) / 100;d1 = dateofbirth - b1 * 10000 - c1 * 100;sum = (b - b1) * 365 + (c - c1) * 31 + (d - d1);System.out.println(s比s1大:%d天 + sum);public void comparePerson(School_Persi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国全自动圆筒机行业市场发展前景及发展趋势与投资战略研究报告
- 2022-2027年中国林业及木材加工行业发展监测及投资战略研究报告
- 2024-2030年中国互联网卫星制造行业市场竞争格局及投资前景展望报告
- “健康运动活力无限”青少年健康运动俱乐部商业计划书
- 2020-2025年中国肉夹馍行业市场前景预测及投资战略研究报告
- 培训课件内容反馈
- 中国印刷用纸行业市场深度调查及发展前景研究预测报告
- 村级妇联培训课件
- 少儿财商培训课件
- 2024年全球及中国一次性使用负压引流敷料行业头部企业市场占有率及排名调研报告
- 四川省宜宾县2024届语文八下期末联考试题含解析
- 医务人员手卫生规范培训课件预防医院感染的手卫生措施
- 电缆敷设专项施工方案
- 儿童下支气管肺炎护理查房课件
- 仓库搬迁安全须知培训培训课件
- 机车高压电器-高压连接器
- 【课件】Unit+1Reading+and+thinking说课课件人教版必修第二册
- ic封装公司运营管理方案
- 软件项目管理 复习题(附参考答案)
- 有机电子学课件
- 我国煤机装备制造业发展现状与展望
评论
0/150
提交评论