《实验二面向对象程序设计.docx》由会员分享,可在线阅读,更多相关《实验二面向对象程序设计.docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、实验二 面向对象程序设计 实验二、面向对象程序设计 2.1 C#面向对象程序设计(一) 一、实验目的 1.理解C#语言是如何体现面向对象编程基本思想。 2.掌握类对象的定义。 3.了解类的封装方法,以及如何创建类和对象。 4.了解成员变量和成员方法的特性。 5.掌握静态成员的用法。 二、实验要求 1. 分析程序,上机验证结果。 2. 写出程序,并调试程序,要给出测试数据和实验结果。 3. 整理上机步骤,总结经验和体会。 4. 完成实验日志和上交程序。 三、实验内容 题目一:程序分析 (1)分析下面两个程序,确定那个程序好,说明理由。 程序要求:定义一个圆类,计算圆的面积和周长。 程序1: pu
2、blic class circle public static void Main() double radium, delimeter, square; const double pai = 3.1415926; radium = Convert.ToInt32(Console.ReadLine(); delimeter = 2 * pai * radium; square = pai * pai * radium; Console.WriteLine(delimeter=0,square=1, delimeter, square); Console.ReadLine(); 程序2: pub
3、lic class circle double delimeter, square; const double pai = 3.1415926; public void calculate(double rad) delimeter = 2 * pai * rad; square = pai * pai * rad; Console.WriteLine(delimeter=0,square=1,delimeter,square); public static void Main() double radium; circle cir = new circle(); radium = Conve
4、rt.ToInt32(Console.ReadLine(); cir.calculate(radium); Console.ReadLine(); (2)分析程序,写出程序的运行结果,并上机进行验证。 Using System; public class students string id,name; int age; public students(string id,string name,int age ) this.id = id; = name; this.age = age; public void Display() Console.WriteLine(id=0,name=1,
5、age=2,id,name,age); public static void Main() /string id, name; /int age; students stu = new students(0001,zhangsan,16); stu.Display(); Console.ReadLine(); (3)分析程序,写出程序的运行结果,并上机进行验证。 public class Date private int Year, Month, Day; public Date(int Year, int Month,int Day) this.Year=Year; this.Month=M
6、onth; this.Day=Day; public Date(System.DateTime dt) Year = dt.Year; Month = dt.Month; Day = dt.Day; public void DisplayDate() Console.WriteLine(0年1月2日,Year,Month,Day); public class Tester public static void Main() System.DateTime currentTime=System.DateTime.Now; Date dt=new Date(2022,7,18); dt.Displ
7、ayDate(); Date dt2 = new Date(currentTime); dt2.DisplayDate(); Console.ReadLine(); 题目二:程序编写 (1)实现一个包含类属性方法的简单加法程序,并能显示结果。 (2)实现一个Person类,要求:属性包含姓名、年龄、身份证号、工作、工资等,并显示各属性的值。 2.2 C#面向对象程序设计(二) 一、实验目的 1.掌握构造函数和析构函数的含义与作用、定义方式和实现,能够根据要求正确定义 和重载构造函数。能够根据给定的要求定义类并实现类的成员函数。 2.理解类的成员的访问控制的含义,公有、私有和保护成员的区别。 3
8、.掌握参数传递的用法。 4.掌握属性的作用和使用。 二、实验要求 1. 分析程序,上机验证结果。 2. 写出程序,并调试程序,要给出测试数据和实验结果。 3. 整理上机步骤,总结经验和体会。 4. 完成实验日志和上交程序。 三、实验内容 题目一:程序分析 (1)分析程序,写出程序的运行结果,并上机进行验证,然后回答后面问题。 public class BankAccount static int totalAccountNumber=0; string BankAccountId; double initialDepositAmount = 0.00; public BankAccount(s
9、tring myId) this.BankAccountId = myId; this.initialDepositAmount = 0.00; totalAccountNumber+; public void displayid() Console.WriteLine(mbaid=0,initialDepositAmount=1,this.BankAccountId,this. initialDepositAmount); public static void display() Console.WriteLine(totalAccountNumber=0, totalAccountNumb
10、er); public class Tester public static void Main() BankAccount mba = new BankAccount(37000001); BankAccount mba2 = new BankAccount(3700002); BankAccount mba3 = new BankAccount(); BankAccount mba4 = new BankAccount(3700004); / Console.WriteLine(mba2ID=0, mba2.BankAccountId); mba2.displayid(); BankAcc
11、ount.display(); Console.ReadLine(); 请回答问题: (1)按你自己的算法修改以上程序,比如可只输出生成的账户数。 (2)把注释去掉后会怎样,为什么? (3)为什么display用类名直接引用,可以用对象来引用么?尝试输出结果。 (4)类的静态变量和非静态变量的引用区别。判断一下语句的正确性: 静态方法只能使用静态变量,不能使用实例变量。因为对象实例化之前,实例变量不可用。这个观点真确么?() 类的静态变量只有一个版本,所有实例对象引用的都是同一个版本。() 对象实例化后,每个实例变量都被制作了一个副本,它们之间互不影响。() 题目二:程序编写 1.编写一个传值
12、调用的程序。 程序功能要求:程序首先给整型变量x 和y 赋初值3,5,然后使用传值调用方式调用方法对x 和y 做乘方并及输出x 和y 的乘方值,最后输出x和y得值。再将此方法给为对象调用加ref修饰查看输出结果差异。 1方法的参数传递有哪些方式?区别时什么? 2. 什么是构造方法。 2.3 2.1 C#面向对象程序设计(三) 一、实验目的 1.掌握继承的工作机制和意义。 2.掌握派生类的定义方法和实现。 3.掌握base关键字的使用。 4. 编写体现类的继承性(成员变量,成员方法,成员变量隐藏)的程序。 二、实验要求 1. 写出程序,并调试程序,要给出测试数据和实验结果。 2. 整理上机步骤,
13、总结经验和体会。 3. 完成实验日志和上交程序。 三、实验内容 1.进一步理解继承的含义 新类可从现有的类中产生,并保留现有类的成员变量和方法并可根据需要对它们加以修改。新类还可添加新的变量和方法。这种现象就称为类的继承。当建立一个新类时,不必写出全部成员变量和成员方法。只要简单地声明这个类是从一个已定义的类继承下来的,就可以引用被继承类的全部成员。被继承的类称为父类或超类(superclass),这个新类称为子类。 2. 进一步理解继承的意义 C# 提供了一个庞大的类库让开发人员继承和使用。设计这些类是出于公用的目的,因此,很少有某个类恰恰满足你的需要。你必须设计自己的能处理实际问题的类,如
14、果你 设计的这个类仅仅实现了继承,则和父类毫无两样。所以,通常要对子类进行扩展,即添加新的属性和方法。这使得子类要比父类大,但更具特殊性,代表着一组更具体的对象。继承的意义就在于此。 题目一:类的继承和基类构造方法的应用 程序功能要求如下: 编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班级和成绩,教师数据有编号、姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类student和教师类数据操作类teacher的基类。 题目二:类的继承和构造函数的灵活应用 编写一个程序计算出球、圆柱和圆锥的表面积和体积。要求: 定义一个基类圆,至少含有一个数据成员半径;定义基类的派生类球、圆柱、圆锥,都含有求体积函数,可以都在构造函数中实现,也可以将求体积和输出写在一个函数中,或者写在两个函数中,请比较使用。 定义主函数,求球、圆柱、圆锥的和体积。