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