《面向对象程序设计实验安排》由会员分享,可在线阅读,更多相关《面向对象程序设计实验安排(13页珍藏版)》请在金锄头文库上搜索。
1、面向对象程序设计实验实验11. 了解Visual Studio2005集成开发环境;2. 开发一个简单的控制台应用程序,能够从键盘输入用户姓名,然后输出“用户姓名” + “欢 迎使用C#!”。3. 分别定义一个描述时钟(时、分、秒)的结构体和类,结构体和类都包含公有成员方法 Set(int h,int m,int、)用于设置时钟,Print ()显示时钟(显示格式为HH:MM:SS)。然后在主 方法中进行演示,并了解结构体和类的区别。实验21. 定义一个课程类和一个学生类,这两个类包含的成员如下:class Courseint Cno;/课程号string Cname;/课程名int Scor
2、e;/成 绩public void InputCourse()输入课程号、课程名和成绩public override string ToString()return Cname+(+Cno+);public int GetScore()/返回课程成绩class Studentint SnoJ/学号string Sname;/姓名int Cnums;/课程门数Course Courses;/所 修课程public void SetStudent(int sno,string sname,int coursenums)设置学生的学号、姓名和修读课程门数public void InputScore(
3、)输入所修读课程的课程名、课程号和成绩public string GetStudent()/返回学号号和姓名public void ShowDegree()输出各门课程对应的课程号、课程名和对应的成绩public int GetAvgDegree()计算并返回各门课程的平均成绩请把上面的类补充完整,然后在Main方法中定义一个Sutdent对象,然后进行演示。实验31.定义一个学生类(班级人数、总入学成绩、学号、姓名、入学成绩),其中班级人数、总 入学成绩是静态成数据,如下:class Studentstatic int NumofStudents,SumofDegree;int Sno;st
4、ring Sname;decimal Degree;请定义静态构造函数用于初始化NumofStudents=0,SumofDegree=0请定义无参构造函数,把Sno初始化为0, Sname初始化为null, Degree初始化为0.0,并使学生人数加1请定义有三个参数的构造函数初始化学生的Sno, Sname和Degree,并使学生人数加1,总成绩+Degree定义实例方法显示学生的Sno、Sname和Degree定义静态方法定义静态方法显示当前学生人数定义静态方法,计算并返回所有学生的平均入学成绩定义析构函数,使学生人数减1,SumofDegree= Degree请把类Student补充完
5、整,然后在Main方法中演示。要求掌握构造函数、析构函数、静态 成员、静态构造函数。实验41.定义一个复数类ComplexNumber,类的主要成员如下,请把按要求实现所有成员方法,并 在程序的主方法中编写程序进行演示。class ComplexNumberprivate double real, image;public ComplexNumber(double r, double i)real = r; image = i;public static ComplexNumber operator +(ComplexNumber c1, ComplexNumber c2)/重载加法运算符;p
6、ublic static ComplexNumber operator -(ComplexNumber c1, ComplexNumber c2)/重载减法运算符;public static ComplexNumber operator *(ComplexNumber c1, ComplexNumber c2)/重载乘法运算符;public static ComplexNumber operator /(ComplexNumber c1, ComplexNumber c2)/重载除法运算符;public static ComplexNumber Parse(string s)定义方法Parse
7、能够解析“a+bi”,“a-bi”,“-a+bi”,“-a-bi”,其中a、b为正数;public static bool TryParse(string s,out ComplexNumber c)定义方法TryParse用于解析“a+bi”,“a-bi”,“-a+bi”,“-a-bi”,其中a、b为正数;/若字符串格式不正确返回false,否则返回truepublic override string ToString()/重写该方法返回复数对象的字符串表示,要注意显示虚部的符合位;实验目的:运算符重载、字符串解析和格式化。实验51.定义一个图形类Shape,Shape类的派生类圆类Circ
8、le,Circle类的派生类球体Ball。类 的成员如下,请实现没有实现的方法,然后再Main方法中编程进行演示。class Shapeprotected string name;public Shape(string s)name=s;public virtual double GetArea()return 0;public virtual double GetVolume()return 0;public virtual void Show()输出图形的名称、面积和体积class Circle : Shapeprotected double radio;/圆的半径下面请定义构造函数初始化
9、圆类下面请重载GetArea方法求圆的面积下面请重载Show方法显示圆的名称、面积、体积class Ball : Circle下面请定义构造函数初始化圆类下面请重载GetArea方法求圆的表面积下面请重载GetVolume方法求圆的体积下面请重载Show方法显示圆的名称、面积、体积2. 把1中的Shape类改成如下的抽象类,然后再实现。Abstract class Shapeprotected string name;public Shape(string s)name=s;public abstract double GetArea();public abstract double GetV
10、olume();public virtual void Show()输出图形的名称、面积和体积实验61.定义铃声类、学生类和教师类,学生和教师可以订阅或取消订阅铃声事件,并对铃声作出 正确的相应(上课铃响,输出字符串“XX回教室上课,xx分钟后休息”下课铃响,输 出字符串“乂乂自由活动,xx分钟后回教室上课”。要求分别使用:委托的发布和订阅、 事件的发布和订阅、EventHandler实现。实验71.定义一个三角形类Triangle,并派生出直角三角形类VTriangle,类的成员如下。要求在三 角形类的构造函数中判断三条边能否构成三角形,如果不能构成三角形主动引发异常 ArgumentOut
11、ofRangeException,异常消息为“三条边不能构成三角形”;直角三角形的构造 函数要能判断三条边能否构成直角三角形,若不能主动引发异常ArgumentOutofRangeException,异常消息为“三条边不能构成直角三角形”。并实现没有实 现的成员方法。然后在Main方法中进行演示。class Triangleprotected double a, b, c;public Triangle(double x, double y, double z)public double GetCircle()求周长public double GetArea()求面积class VTriang
12、le : Triangle public VTriangle(double x, double y, double z):base(x, y, z)2.定义一个整数数列IntNumberSequence,然后派生出等差数列DCSequence和等比数列 DBSequence,并自定义异常类型IntNumberSequenceException。类的结构如下,请实现没有 实现的方法,并在Main方法中演示。public class NumberSequenceException : ApplicationExceptionprivate int item = -1;public int Item
13、get return item; public NumberSequenceException(int item):base(string.Format(”数列第0项异常”,item) this.item = item; public NumberSequenceException(string msg, int item):base(msg) this.item = item; public class IntNumberSequence/整数数列类public delegate int Recur(int a);protected Recur recur;protected int a0
14、= -1;public int A0 get return a0; public IntNumberSequence(int a0, Recur recur)this.a0 = a0;this.recur = recur;public virtual int GetNumber(int n)int a = a0;for (int i = 1; i n; i+)a = recur(a);return a;public virtual int GetNumbers(int n)int numbers = new intn;numbers0 = a0;for (int i = 1; i n; i+)numbersi = recur(numbersi - 1);return numbers;public class DCNumberSequence : IntNumberSequence/派生类等差数列int step;/等差数列的步长public DCNumberSequence(int a0,int step, Recur recur):