类的设计与封装(一)实验报告_第1页
类的设计与封装(一)实验报告_第2页
类的设计与封装(一)实验报告_第3页
类的设计与封装(一)实验报告_第4页
类的设计与封装(一)实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上浙江大学城市学院实验报告课程名称 面向对象程序设计 实验项目名称 类的设计与封装实验(一) 学生姓名 高宁雯 专业班级 计算1005 学号 一. 实验目的和要求 1.掌握使用类将对象的属性与功能封装在类中的特点2.掌握实例方法与构造方法二. 实验内容 1. 分析Time类的设计2. 分析并设计Product类3. 分析并设计Fraction类4. 设计Rectangle类5. 设计Student类及其测试类School类三. 实验结果与分析(可将程序运行结果截屏,也可分析运行结果) 1. 阅读以下关于Time类的代码,分析程序并回答相关的问题import java.t

2、ext.DecimalFormat;public class Timeprivate int hour;private int minute;private int second;Time()hour=0;minute=0;second=0;Time(int h) hour=h;minute=0;second=0;Time(int h,int m)hour=h;minute=m;second=0;Time(int h,int m,int s)hour=h;minute=m;second=s;Time(Time time)this.hour=time.getHour();this.minute=

3、time.getMinute();this.second=time.getSecond();public int getHour()return hour;public int getMinute() return minute;public int getSecond()return second;public String toUniversalString() DecimalFormat twoDigits=new DecimalFormat("00"); return twoDigits.format(getHour()+":"+ twoDigi

4、ts.format(getMinute()+":"+ twoDigits.format(getSecond();public String toStandardString() DecimalFormat twoDigits=new DecimalFormat("00"); return (getHour()=12| getHour()=0)?12:getHour()%12)+":"+、 twoDigits.format(getMinute()+":"+twoDigits.format(getSecond()+(g

5、etHour()<12?"AM":"PM");(1) Time类共有几个构造器(即构造方法),作用有什么不同?5种Time()hour=0;minute=0;second=0;无参数构造,初始化hour,minute,second;Time(int h) hour=h;minute=0;second=0;定义参数h,将其赋值给hour;Time(int h,int m)hour=h;minute=m;second=0;定义参数h和m,将其赋值给hour,minute;Time(int h,int m,int s)hour=h;minute=m;se

6、cond=s;定义参数h,m和s,将其赋值给hour,minute,second;(2) getTime(),getMinute(),getSecond()方法的作用是什么?如果去掉这些方法,程序可以完成同样的功能吗?如何修改?以实例的方法,在Time(Time time)为hour,minute,second赋值,去掉后改为Time(Time time)this.hour=hour;this.minute=minute;this.second=second;(3) 如果以下代码段出现在Time类的测试程序的main方法中,输出结果是什么? Time t1=new Time(5); Syste

7、m.out.println("The time is "+t1.toStandardString();输出“The time is 4AM”(4) 如果以下代码段出现在Time类的测试程序的main方法中,输出结果是什么? Time t2=new Time(13,59,60); System.out.println("The time is"+t2.toStandardString();输出“The time is 1:59:60PM”(5) 如果以下代码段出现在Time类的测试程序的main方

8、法中,输出结果是什么? Time t3=new Time(13,30,0); Time t4=new Time(t3); System.out.println("The time is"+t4.toUniversalString();“The time is 1:30:00PM”2. 确定以下代码段中是否存在错误,如果有错误,指出是逻辑错误还是语法错误, 请在程序中用“”标出错误的地方,并在第个练习的空白处写下正确的代码。如果代码中没有错误,则在答案中写上“没有错误”。注意:在每个程序段中可能包含多处错误。(1) 以下代码定义了Product类

9、,它有一个不带参数的构造器,将产品的名称设置为一个空的String,将price设置为0.00;该类还有一个toProductString方法,它返回一个包含产品的name和price的Stringimport java.text.*;public class Productprivate String name;private double price;private static DecimalFormat money=new DecimalFormat("$0.00");public Product() name=" " price=0.00;pu

10、blic String toProductString() return name+" costs "+money.format(price);/end class Product答案:没有错误。(2) 如下代码定义了Product类的另一个构造器,它有2个参数,并将这些参数赋给相应的实例变量public Product(String name, double price) name= name; price=price;答案:= name;this.price=price;(3) 如下代码定义了两个set方法,用于设置Product类的name和pric

11、epublic setName( ) =name;public setPrice( ) this.price=price;答案:public String setName() return name;public double setPrice() return price;(4) 如下代码位于测试Product类的应用程序的main方法中,创建一个Product对象,并显示一个包含对象的实例变量值的StringProduct p1=new Product("Milk", 5.5);System.out.println(+ " &q

12、uot;+p1.price);(5) 如下代码位于测试Product类的应用程序的main方法中,创建一个Product对象,设置其实例变量的值,并显示一个包含实例变量值的String Product p1=new Product(); p1.setName(); p1.setPrice(); System.out.println(p1.toProductString("Eggs",3);答案: 3.补充以下代码,完成对一个分数类Fraction的定义,并测试这个类public class Fraction private int nume; /分子 private int

13、 deno; /分母/无参构造器public Fraction( )this.nume=0;this.deno=1;/初始化实例变量/有参构造器public Fraction( int n, int d )/初始化实例变量/化简分数方法void FracSimp( )/求分数的分子和分母的最大公约数/化简分数/*欧几里德算法 定理:gcd(a,b) = gcd(b,a mod b),以下是c语言的代码,可以参考 void swap(int & a, int & b)       int c = a;  

14、60;     a = b;        b = c;        int gcd(int a,int b)            if(0 = a )               &#

15、160;    return b;                if( 0 = b)                    return a;         

16、0;      if(a > b)                    swap(a,b);                int c;       &

17、#160;for(c = a % b ; c > 0   c = a % b)                    a = b;            b = c;            &#

18、160;   return b;     */分数输出方法void FracOutput( )public static void main(String args) 4.构造一个Rectangle类(矩形类),它有两个浮点型属性length(长)和width(宽)。该类具有两个构造函数(无参和有参),perimeter()和area()方法分别返回矩形的周长和面积, 编写相应的main方法测试Rectangle类。程序结构如下:public class Rectangel/实例变量的声明/构造器的定义/perimeter方法定义/a

19、rea方法定义public static void main(String args)/定义Rectangle类的对象引用r/调用perimeter方法,并显示周长/调用area方法,并显示面积 5. 设计一个学生类Student, 程序框架如下:public class Student/设计一个类变量(静态变量)记录学生人数private /设计基本属性有“学号”、“班号”、“姓名”、“性别”、“年龄”、“成绩”(用数组表示6门课的成绩)private /设计构造器,传递学生的个人信息public Student( ) /设计方法“获得学号”、“获得班号”、“获得姓名”、“获得成绩”/设计方

20、法“修改年龄”、“修改班号”/设计类方法“获得学生人数” /设计一个类School,用于测试以上Student类public class School public static void main(String args)/创建新学生对象/输出学生的基本信息/测试类变量值的变化class Student/设计一个类变量(静态变量)记录学生人数private static int count=0;/设计基本属性有“学号”、“班号”、“姓名”、“性别”、“年龄”、“成绩”(用数组表示6门课的成绩)private int num;private int class_num;private Stri

21、ng name;private String sex;private int age;private int score = new int6;/设计构造器,传递学生的个人信息public Student( ) public Student( int num, int class_num , String name,String sex, int age, int score) this.num = num;this.class_num = class_num; = name;this.sex = sex;this.age = age;this.score = score;/设计方法“获得学号”、“获

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论