您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > C#实验报告-类与对象
实验项目名称:类与对象一、实验目的和要求1.C#程序编写的过程和基本要求;2.面向对象的程序设计思维(基本思想);3.类的组成、声明和定义;4.对象的定义(类的实例化);5.理解字段和属性,属性的定义以及相对应的访问修饰符;6.方法以及方法的重载;7.构造函数的使用;8.类的继承(重点);9.类的多态性(难点)二、实验内容和过程1.上机实验1:问题描述:编写一个学生类,其中包括3个数据成员:学号、姓名、年龄,以及若干成员函数。同时编写主函数使用这个类,实现对学生数据的赋值和输出。要求:使用成员函数实现对数据的输出(显示学生的相关信息);使用构造函数实现对数据的输入(可以重载多个构造函数并使用)。提示:三个成员变量使用什么访问控制符?提高要求:将三个成员变量定义为属性,并且学号和姓名只能读不能写,年龄可写,但是要符合18—26之间。解决方法说明:①在学生类中,定义学号、姓名、年龄相关的字段以及属性;②编写带三个参数的构造函数,实现对学生学号、姓名、年龄数据的输入;③重载构造函数,带两个参数,实现对学生学号、姓名的输入;④编写成员函数print(),实现对数据的输出;⑤编写主函数,使用这个类,实现对学生数据的赋值和输出;实例化学生类;使用对象.print()方法。关键代码及注释:classstudent{protectedstringstuNum;protectedstringstuName;protectedintstuAge;publicstringStuNum//定义属性:学号{get{returnstuNum;}}publicstringStuName//定义属性:姓名{get{returnstuName;}}publicintStuAge//定义属性:年龄{get{returnstuAge;}set{if(value=18||value=26)//限制年龄{stuAge=value;}}}publicstudent(stringnumber,stringname,intage)//构造函数1,实现对数据的输入{stuNum=number;stuName=name;stuAge=age;Console.WriteLine(请输入学号);stuNum=Console.ReadLine();Console.WriteLine(请输入姓名);stuName=Console.ReadLine();Console.WriteLine(请输入年龄);stuAge=Convert.ToInt32(Console.ReadLine());}publicstudent(stringnumber,stringname)//构造函数2,实现对数据的输入{stuNum=number;stuName=name;Console.WriteLine(请输入学号);stuNum=Console.ReadLine();Console.WriteLine(请输入姓名);stuName=Console.ReadLine();}publicvoidprint()//print方法,输出学生信息{if(stuAge!=0){Console.WriteLine(stuName+的学号是:+stuNum+,年龄是:+stuAge);Console.ReadLine();}else{Console.WriteLine(stuName+的学号是:+stuNum);Console.ReadLine();}}publicstaticvoidMain()//主函数,使用学生类{studentA=newstudent(209,A,18);A.print();studentB=newstudent(11,B);B.print();}}出错调试说明:排除错误的数据类型数据的输入,没有出错。运行结果说明(附运行界面图)图1实验1运行结果图2.上机实验2问题描述:①定义一个电话Telephone类,有两个公有字段numbers(号码)和attributi(归属区),还有一个拔号dial()和响铃ring()方法;②创建一个Telephone类的子类Mobilephone,它继承父类的两个字段和方法,新增一个私有字段brand(品牌)以及一个方法playmp3();③创建以下两个类并实例化,调用相应的方法(方法内容用Messagebox显示提示即可,比如点击电话的“来电”按钮,显示“你的电话响了”之类的提示)。解决方法说明:①创建基类Telephone类,在类里定义两个字段numbers(号码)和attributi(归属区);②声明虚成员拔号dial()方法,声明响铃ring()方法,方法内都用引用MessageBox.Show()方法;③创建子类Mobilephone类继承于Telephone类,定义字段brand(品牌)以及一个方法playmp3(),方法内引用MessageBox.Show()方法;④子类Mobilephone类用override重写拔号dial()方法,使用关键字base访问基类的dial()方法;⑤界面设计;⑥实例化Telephone类和Mobilephone类;⑦编写事件代码,调用相应的方法以及在MessageBox.Show()方法里的“内容”这一参数里调用相应的字段;⑧调试;⑨把步骤④里的override关键字改成new关键字;⑩调试并与步骤⑧的结果比较。程序界面设计:图2实验2接界面设计图关键代码及注释:publicpartialclassForm1:Form{Telephonetelephone=newTelephone();//实例化Telephone类Mobilephonemobilephone=newMobilephone();//实例化Mobilephone类publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){MessageBox.Show(telephone.numbers,号码,MessageBoxButtons.OK);}privatevoidbutton2_Click(objectsender,EventArgse){MessageBox.Show(telephone.attribution,所在地,MessageBoxButtons.OK);}privatevoidbutton3_Click(objectsender,EventArgse){telephone.dial();}privatevoidbutton4_Click(objectsender,EventArgse){telephone.ring();}privatevoidbutton5_Click(objectsender,EventArgse){MessageBox.Show(mobilephone.numbers,号码,MessageBoxButtons.OK);}privatevoidbutton6_Click(objectsender,EventArgse){MessageBox.Show(mobilephone.attribution,所在地,MessageBoxButtons.OK);}privatevoidbutton7_Click(objectsender,EventArgse){mobilephone.dial();}privatevoidbutton8_Click(objectsender,EventArgse){mobilephone.ring();}privatevoidbutton9_Click(objectsender,EventArgse){mobilephone.playmp3();}}publicclassTelephone{publicstringnumbers=13800138000;//字段numberspublicstringattribution=梅州;//字段attributionpublicvirtualvoiddial()//虚成员dial()方法{MessageBox.Show(电话,拨号方式,MessageBoxButtons.OK);}publicvoidring()//ring()方法{MessageBox.Show(电话响了,来电,MessageBoxButtons.OK);}}publicclassMobilephone:Telephone{privatestringbrand;//字段brandpublicoverridevoiddial()//用override重写dial()方法{base.dial();//base关键字访问基类dial()方法MessageBox.Show(手机,拨号方式,MessageBoxButtons.OK);}publicvoidplaymp3(){MessageBox.Show(谁动了我的琴弦--周笔畅,来电铃声,MessageBoxButtons.OK);}}运行界面图(其一):实验2运行界面图上机实验3:问题描述:①创建抽象类Shape,声明求面积的抽象方法GetArea();②创建子类,矩形Rectangle,重写基类的GetArea()方法,实现求面积(长X宽);③创建子类,圆Circle,重写基类的GetArea()方法,实现求面积(PIX半径^2);④创建窗体应用程序,进行相应的实例化,显示计算结果。解决方法说明:①用abstract关键字,创建抽象类Shape以及声明求面积的抽象方法GetArea();②创建子类——矩形Rectangle,定义属性长Lenth和宽Weight,重写基类的GetArea()方法,方法内容是返回长与宽的乘积;③创建子类——圆Circle,定义属性半径R,重写基类的GetArea()方法,方法内容是返回面积(PIX半径^2);④界面设计及属性设置;⑤编写相应的事件内容,在button1_Click(objectsender,EventArgse)事件中,根据单选按钮,分别实例化Rectangle类和Circle类,并判断文本框所输入的是否是数字,调用相应的方法;⑥调试。程序界面设计:图3实验3界面设计图关键代码及注释:publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){textBox1.Text=输入长:;textBox2.Text=输入宽:;textBox3.Text=输入半径:;}privatevoidtextBox1_Enter(objectsender,EventArgse){textBox1.SelectAll();}privatevoidtextBox2_Enter(objectsender,EventArgse){textBox2.SelectAll();}privatevoidtextBox3_Enter(objectsender,EventArgse){textBox3.SelectAll();}privatevoidbutton1_Click(objectsender,EventArgse){if(radioButton1.Checked==true){Rectanglerectangle=newRectangle();floataa=1;if(Single.TryParse(textBox1.Text,outaa)==false||Single.TryParse(textBox2.Text,outaa)==false){MessageBox.Show(请重新输入,提示,MessageBoxButtons.OK);}else{rectangle.Length=Convert.ToSingle(textB
本文标题:C#实验报告-类与对象
链接地址:https://www.777doc.com/doc-8151416 .html