




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C#面向对象基础实验2一、实验名称: C#面向对象基础实验2二、实验时间:三、实验地点:四、实验目的:1. 熟悉C#程序面向对象编程的基本语法、操作;2. 进行一些验证性操作,给出核心源代码和实验结果运行截图。五、实验内容:1. 构造一个Circle类,它有一个成员变量半径,它有一个带形参的构造函数,函数的参数就是半径,它还有二个成员函数,一个求圆的周长,一个求圆的面积。在主程序中测试这个圆类,并输出该类构造对象的圆的周长还有面积。using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 class Program static void Main(string args) Circle a = new Circle(4); a.zhouchang(); a.mianji (); Console.ReadKey(); using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication2 class Circle private int x; public Circle(int a) x = a; public void zhouchang() double c; c = 2 * 3.14 * x; Console.WriteLine(圆的周长为0, c); public void mianji() double s; s = 3.14 * 3.14 * x; Console.WriteLine(圆的面积为0, s); 2. 定义一个学生类,其中有学号、姓名、年龄3个数据成员,以及若干成员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。要求:使用构造函数实现对数据的输入,使用成员函数实现对数据的输出。3. 下面是一个Test类的测试程序,设计出能使用如下测试程序的类,补全整个程序。 static void Main(string args) Test a =new Test(68,56,2); a.shuchu( ); Console.ReadKey(); 该程序运行输出结果为:68-56-2=10using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace ConsoleApplication1 class Test private int x; private int y; private int z; public Test (int a,int b,int c) x = a; y = b; z = c; public void shuchu() int t; t = x - y - z; Console.WriteLine(0-1-2=3,x,y,z,t); 4. 创建时间time1类,它包含三个整形属性:Hour,Minute,Second,他们用于表示采取统一时间格式(24小时时钟格式)的一个时间。并定义一个不含参数的 ToUniversaIString 方法,该方法 采用统一时间格式返回一个字符串。它包含6格数位2个用于表示小时,2个用于表示分钟,2个表示秒。定义一构造函数它含有三个整型参数myhour,myminute,mysecond,并用他们来设置时间。属性 Hour Minute Second 的定义应包括数据检查,如果数据不合理 应给出提示信息,并将属性值设置为 0 。使用定义的构造函数创建time1类的一个实例,编译和测试time1 类并输出显示。5. 编写一个程序实现小型公司的工资管理。该公司主要有4类人员:经理(manager)、技术人员(technician)、销售员(salesman)、销售经理(salesmanager)。这些人员都是职员(employee),有编号、姓名、月工资信息。月工资的计算方法是:经理固定月薪8000元,技术人员每小时100元,销售员按当月销售额4提成,销售经理既拿固定月工资5000元也拿销售提成,销售提成为所管辖部门当月销售额的5。要求编程计算职员的月工资并显示全部信息。(定义基类employee类,定义四个派生类manager,technician,salesman,salesmanager,派生类中有的有当月销售额这个变量,还有计算工资并按一定格式输出的方法,主程序要求起码测试四类人员,并分别输出他们的姓名,职务,当月工资) 6. 定义一个虚基类shape类,里面定义一个虚函数getarea(),从基类派生出一个circle类,该类增加一个半径变量radius,重写getarea()函数实现计算面积。从基类再派生出一个rectangle类,该类有长和宽二个变量length和width,重写getarea()函数实现计算面积。主函数中测试circle类和rectangle类,并计算它们的面积输出。7. 实现交通工具Vehicle类版本一:(1)没有数据隐藏的类创建一个Vehicle 类实现上面的UML类图。 a) 含有两个public属性:load “车辆当前的载货量” maxLoad “车辆的最大载货量”。 b) 含有一个公有的构造函数用于初始化最大载货量属性maxLoad。 c) 含有两个公有的函数:public llldouble 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.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;Console.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)基本数据隐藏 为了解决第一个版本中的问题,你应该隐藏类中的数据成员(load 和 maxLoad) 并且提供一个方法addBox, 来检查车辆是否会发生超载。 创建一个Vehicle 类实现上面的UML类图。 A) 把load和maxLoad属性修改为private(私有的)。B) 添加addBox方法。public boolean addBox(double weight); /参数为所加箱子重量这个方法必须检查加上一个箱子后是否会超过车辆的最大载货量。如果超过了,应该拒绝装载这个箱子并返回false;否则把箱子加到车上并返回true。 注意:所有的数据都是假定以千克(kilograms)作为单位的。(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):+ 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并打印到屏幕上。 应该得到以下的结果: 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() 方法,使它们使用一个从千克到牛顿的相互转换。你可以定义下面的私有方法: 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 Vehicle3(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 #5 (300kg):+ vehicle.addBox(300.0); Console.WriteLine (Vehicle load is +vehicle.getLoad()+ kg);应该得到以下的结果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课件时间利用的好处
- 高压水射流清洗工协同作业考核试卷及答案
- 有色金属熔池熔炼炉工岗位操作技能考核试卷及答案
- 近代科技考试题及答案
- 金属学考试题及答案
- 蒸发浓缩结晶工适应性考核试卷及答案
- 三聚氰胺装置操作工基础知识考核试卷及答案
- 交通安全设施工测试考核试卷及答案
- 水产捕捞工工艺考核试卷及答案
- 合成洗涤剂制造工三级安全教育(公司级)考核试卷及答案
- 图解2025年9月10日第41个教师节全文
- 2025至2030年中国晶质石墨深加工行业市场调查研究及投资战略咨询报告
- 船舶电气小知识培训课件
- 普及鸽子的课件
- 2025版外墙保温涂料分包工程合同范例
- (2025秋新版)人教版八年级地理上册全册教案
- 2025版酒店租赁经营合作协议模板:2025年度版
- 湘少版(三起)(2024)三年级上册英语全册教案
- 小屁孩日记阅读课件
- 2025年新生儿误吸(呛奶)应急预案演练脚本
- 《构成设计基础》全套教学课件
评论
0/150
提交评论