04.类和对象编程练习.doc

上传人:ni****g 文档编号:558391337 上传时间:2023-07-12 格式:DOC 页数:12 大小:75.50KB
返回 下载 相关 举报
04.类和对象编程练习.doc_第1页
第1页 / 共12页
04.类和对象编程练习.doc_第2页
第2页 / 共12页
04.类和对象编程练习.doc_第3页
第3页 / 共12页
04.类和对象编程练习.doc_第4页
第4页 / 共12页
04.类和对象编程练习.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《04.类和对象编程练习.doc》由会员分享,可在线阅读,更多相关《04.类和对象编程练习.doc(12页珍藏版)》请在金锄头文库上搜索。

1、C#面向对象程序设计实验指导及报告书姓 名:_学 号:_班 级:_指导教师:_计算机与电子信息工程系2013实验四 类和对象编程练习一、实验目的1. 掌握C#中类的定义、对象的创建方法;1. 理解封装性及其意义;2. 掌握构造函数的含义与作用、定义方式和实现,能够根据要求正确定义和重载构造函数。3. 能够根据给定的要求定义类并实现类的成员函数;4. 理解类的成员的访问控制的含义,公有、私有和保护成员的区别二、实验内容1. 定义一个学生类,其中有学号、姓名、年龄3个数据成员,以及若干成员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。要求:使用构造函数实现对数据的输入,使用成员函数实

2、现对数据的输出。 调试下列的参考代码。class Studentprivate string id;private string name;private int age;public Student(string id,string name,int age)this.id = id;this.name = name;this.age = age;public void Display()Console.WriteLine(id=0,name=1,age=2,id,name,age);public static void Main()Student s1 = new Student(001,

3、zhangshan,16);s1.Display();Console.ReadKey();以上程序使用了构造方法,请回答(1)构造方法何时被调用?(2)关键字this有何作用?(3)在实例化了s1对象后,如要将s1对象的id改为002,程序将如何修改。2. 实现交通工具Vehicle类版本一:(1)没有数据隐藏的类创建一个Vehicle 类实现上面的UML类图。 a) 含有两个public属性:load “车辆当前的载货量” maxLoad “车辆的最大载货量”。 b) 含有一个公有的构造函数用于初始化最大载货量属性maxLoad。 c) 含有两个公有的函数:public llldouble

4、getLoad(); / 用于得到当前的载货量public double getMaxLoad()/ 用于取得最大载货量(注意:所有的数据都是假定以千克(kilograms)作为单位的。在这个版本的Vehicle类中,你将把所有成员的属性设置为public,这样在下面测试程序TestVehicle1中可以直接访问这些成员。(2)编写下面的程序对Vehicle类进行测试,代码如下: public class TestVehicle1public static void Main(String args)Vehicle vehicle = new Vehicle(10000.0); Console

5、.WriteLine(Add box #1 (500kg); vehicle.load = vehicle.load + 500.0; Console.WriteLine (Add box #2 (250kg); vehicle.load = vehicle.load + 250.0;Console.WriteLine (Add box #3 (5000kg);vehicle.load = vehicle.load + 5000.0;Console.WriteLine (Add box #4 (4000kg);vehicle.load = vehicle.load + 4000.0;Conso

6、le.WriteLine (Add box #5 (300kg);vehicle.load = vehicle.load + 300.0;Console.WriteLine (Vehicle load is +vehicle.getLoad()+ kgn);应该得到以下的结果: Add box #1 (500kg)Add box #2 (250kg) Add box #3 (5000kg) Add box #4 (4000kg) Add box #5 (300kg) Vehicle load is 10050.0 kg从程序的运行结果来看,你发现了什么问题?思考如何才能避免?版本二:(1)基本

7、数据隐藏 为了解决第一个版本中的问题,你应该隐藏类中的数据成员(load 和 maxLoad) 并且提供一个方法addBox, 来检查车辆是否会发生超载。 创建一个Vehicle 类实现上面的UML类图。 A) 把load和maxLoad属性修改为private(私有的)。B) 添加addBox方法。public boolean addBox(double weight); /参数为所加箱子重量这个方法必须检查加上一个箱子后是否会超过车辆的最大载货量。如果超过了,应该拒绝装载这个箱子并返回false;否则把箱子加到车上并返回true。 注意:所有的数据都是假定以千克(kilograms)作为单

8、位的。(2)编写下面的程序对新版本的Vehicle类进行测试,代码如下: public class TestVehicle2public static void Main(String args)Vehicle vehicle=new Vehicle(10000.0); Console.WriteLine (Add box #1 (500kg):+ vehicle.addBox(500.0); Console.WriteLine (Add box #2 (250kg):+ vehicle.addBox(250.0); Console.WriteLine(Add box #3 (5000kg):

9、+ vehicle.addBox(5000.0); Console.WriteLine(Add box #4 (4000kg):+ vehicle.addBox(4000.0); Console.WriteLine (Add box #5 (300kg):+ vehicle.addBox(300.0); Console.WriteLine (Vehicle load is +vehicle.getLoad()+ kg);阅读并运行下面的测试程序段。注意代码中不能直接修改load属性的值,现在我们可以使用addBox()方法。这个方法将返回true或false并打印到屏幕上。 应该得到以下的结果

10、: Add box #1 (500kg) : trueAdd box #2 (250kg) : trueAdd box #3 (5000kg) : trueAdd box #4 (4000kg) : trueAdd box #5 (300kg) : falseVehicle load is 9750.0 kg 版本三:(1)改变重量的内部表示单位为牛顿 现在假设你将要作一些关于车辆发动机和轮胎等磨损的计算,这些计算使用用牛顿表示的重量。 创建一个Vehicle 类实现上面的UML类图。 修改构造方法,getLoad(), getMaxLoad(), 和addBox() 方法,使它们使用一个从千

11、克到牛顿的相互转换。你可以定义下面的私有方法: private double kiloToNewts(double weight) . private double newtsToKilo(double weight) . 注意vehicle 对象的内部数据是以牛顿为单位的,而外部数据(在方法中传递的参数)还是以千克为单位 。(2)编写下面的程序对新版本的Vehicle3类进行测试,注意它和版本2中的测试代码是相同的,代码如下: public class TestVehicle3public static void Main(String args)Vehicle3 vehicle=new V

12、ehicle3(10000.0); Console.WriteLine (Add box #1 (500kg):+ vehicle.addBox(500.0); Console.WriteLine (Add box #2 (250kg):+ vehicle.addBox(250.0); Console.WriteLine(Add box #3 (5000kg):+ vehicle.addBox(5000.0); Console.WriteLine(Add box #4 (4000kg):+ vehicle.addBox(4000.0); Console.WriteLine (Add box #

13、5 (300kg):+ vehicle.addBox(300.0); Console.WriteLine (Vehicle load is +vehicle.getLoad()+ kg);应该得到以下的结果: Creating a vehicle with a 10,000kg maximum load.Add box #1 (500kg) : trueAdd box #2 (250kg) : trueAdd box #3 (5000kg) : trueAdd box #4 (4000kg) : trueAdd box #5 (300kg) : falseVehicle load is 975

14、0.0 kg 对Vehicle类的第二个和第三个版本采用相同的测试代码,输出的结果有没有发生变化?从代码可维护性的角度谈谈封装的好处。3. 如果已知一个日期为2007/3/8,求10天后是哪一天,367天后呢?设计思路:(1)定义一个MyDate类(版本一),成员有:class MyDate /数据成员private int day;private int month; private int year; /方法成员public MyDate(int y,int m,int d) /构造一个日期 public MyDate DayInc() /返回下一天的日期 public MyDate DayInc(int x) /返回x天后的日期 public void Display () /显示当前日期信息(2)对MyDate类进行测试,测试代码如下:public

展开阅读全文
相关资源
相关搜索

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

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号