资源描述
《面对对象程序设计(C#)》课程教案
理论课 第5次课
讲课课题
类与类组员1
学时安排
4学时
备 注
1. 教学目标
(1) 掌握类和对象的概念
(2) 掌握字段
(3) 掌握类中的常量
(4) 掌握类的措施组员
2. 教学重点
(1) 掌握字段
(2) 掌握类中的常量
(1) 掌握类的措施组员
3. 教学难点
(1) 掌握字段
(2) 掌握类中的常量
(3) 掌握类的措施组员
4. 教学措施(请打√):讲授√□ 讨论□ 指引□ 其他□
5. 教学伎俩(请打√):多媒体√□ 模型□ 实物□ 挂图□
音像□ 其他□
6. 教学过程
6.1引入 ( 5 分钟)
。
6.2教学内容
C#中没有存在于类型(类、结构、接口、枚举等)之外的全局变量和全局函数,所有的程序逻辑和数据都必须放在一个类型定义中,一般情况下是一个类中。
一、 类和对象
类是C#应用程序的基本组成单元,是在编写应用程序时对系统中的有关概念进行抽象并深入封装的产物。
1. 类的申明
类是C#中最重要的类型,它是一个数据结构,将状态(数据组员)和操作(函数组员)封装在一个独立的单元中。
申明一个类使用核心字class,格式如下:
[访问修饰符] class 类名
{
//类的组员定义;
}
访问修饰符能够用来修饰类和类的组员,它指出了类或类的组员是否能够被其他类的代码合法引用。C#中的5种访问修饰符,见P51表4-1。省略了访问修饰符,默认的访问权限是internal。
2. 对象
类在申明之后,一般情况下是不能直接使用的,需要创建这个类的对象(实例),并且申明对这个对象的引用。
申明对象引用的格式如下:
类名 对象名;
C#中使用核心字new来创建一个对象,其申明格式如下:
new 类名();
一般情况下,同时申明对象引用和创建对象,格式如下:
类名 对象(引用)名 = new 类名();
内存分派情况见P52 图4-1、4-2
对象组员的访问,使用运算符“.”,其格式如下:
对象名.组员名
类与对象的关系:类是相对抽象的概念,对象是相对详细的概念;类为生成对象提供模板,有了模板就能够用new运算符生成众多具备相同结构(不过组员值能够不一样)的对象。
3. 类的组员
类的意义和作用通过类的组员来体现。类的组员类型见P53表4-2.
二、 字段
字段用来表示在类中定义的类与对象有关联的变量组员。依照字段是跟实例对象还是和类有关,能够分为实例字段和静态字段,另外尚有只读字段。
1. 实例字段
实例字段是与类的实例对象有关的字段,在该类的每个实例中都有它的数据副本。变化其中一个实例的某个实例字段,不会影响到其他实例中的相同字段。
实例字段的申明格式如下:
[访问修饰符] 数据类型 字段名[=初始值];
假如省略访问修饰符,默认的组员访问权限为private;假如省略初值赋值,则字段会依照其数据类型的不一样而具备对应的默认值。
实例字段的访问:在类内,能够直接以字段名访问;在类外,就必须先创建一个该类的实例对象,然后通过“对象名.组员名”方式来访问(前提是该字段的访问权限允许该操作)。
2. 静态字段
静态,表白该字段是属于类自身而不是属于详细某一个实例对象,它被所有的实例共享。类的字段默认都是实例字段,只有在申明时尤其阐明才为静态的。静态字段的申明格式如下:
[访问修饰符] static 数据类型 字段名[=初始值];
在类外使用静态字段时,无须创建类的实例,访问格式为:
类名.静态字段名
在类内,能够用上述访问方式,也能够直接省略类名直接访问。不过,任何时候都不能以“对象名.静态组员名”的方式来访问静态字段组员。
静态字段和实例字段内存分派情况见P58图4-8
3. 只读字段
只读字段只能在申明或者在结构函数中进行赋值,而在其他地方无法修改其值。申明格式如下:
[访问修饰符] readonly 数据类型 字段名[=初始值];
能够用static和readonly同时修饰组员,这么就具备两种访问限制条件。
三、 常量
类中,常量是具备常数值的类的数据组员。在申明常量时就要确定它们的值,而之后该值是不能再被修改的。常量数据组员的申明格式为:
[访问修饰符] const 数据类型 常量名 = 初始值;
常量相称于是类的组员,不是对象的组员,因此访问常量的方式和访问静态字段的同样:
类名.常量名
只读字段 VS. 常量字段
(1)常量字段只能在申明时赋值;只读字段可在申明时或结构函数中对其赋值。
(2)常量字段在编译时就必须确定其值;只读字段能够在程序运行时确定(这是其赋值是放在结构函数中的)。
(3)常量字段默认是static的,即是类级别的组员;只读字段能够是类的组员,也能够是对象的组员。
四、 措施
一般情况下,措施包括措施申明和措施体。措施申明用来指定措施名称、措施参数等;措施体用来描述该措施使用何种算法和结构来完成操作。
1. 措施申明
措施申明的一般格式如下 :
[访问修饰符] 返回值类型 措施名称([参数列表]);
2. 措施体
措施体是用来描述措施所要执行的语句序列,包括在一对大括号“{}”中。
(1)局部变量
在措施体中定义的变量,一般称为局部变量。定义格式如下:
数据类型 变量名称[=初始值];
局部变量VS.实例字段
a)实例字段如未赋值,有默认初始值,而局部变量没有默认初值。
b)局部变量不能用访问修饰符修饰。
c)生存周期不一样
(2)return语句
假如措施有返回值,则必须在措施中使用return语句从措施中返回一个值,使用return语句的格式如下:
return 体现式;
3. 实例措施与静态措施
用static修饰的措施就是静态措施。实例措施属于实例对象,静态措施属于类自身。
实例措施 VS. 静态措施
(1)静态措施中不能引用类的实例组员,只能访问静态组员。
(2)调用格式不一样。
4. 措施调用
在类的外部,调用类的组员措施有两种方式。
实例措施的调用格式:
对象名.实例措施名(参数列表);
静态措施的调用格式:
类名.静态措施名(参数列表);
而在类内部,无论是否是静态措施,都能够用
措施名(参数列表);
方式来调用。
5. 参数传递
参数传递是指实参把数据传递给形参的方式,或是说措施调用方与措施之间传递信息的一个方式。
(1)值传递
C#程序中,所有的参数默认都是通过值来传递的,除非尤其阐明。按值传递分为两种形式:值类型的按值传递和引用类型的按值传递。
值类型的按值传递本质是:实参将值复制一份传递给形参,形参接收了实参的值后与实参不再有任何联系。这种传递是单向的,即形参值的变化不会影响到实参。
当引用类型按值传递时,也许会更改所引用对象的数据,如某类对象组员的值,不过无法更改引用(变量)自身的值,因为引用自身是按值来传递的。
(2)引用传递
当使用“引用传递”方式传递参数时,在措施中对形参进行的任意修改都会反应在对应的实参中,这种方式又称为双向传递。在C#中,能够用ref和out核心字来实现引用传递。
当希望措施返回多个值时,能够将参数按引用来传递。
a)ref参数
使用措施:
在定义措施时,在需要按引用传递的参数的类型阐明符前加上核心字ref。
在调用措施时,在按引用传递的实参之前也加上核心字ref。
另外,使用ref进行引用传递之前,实参必须初始化。
阐明:引用传递和值传递的区分,当将实参的值传递给形参的时候,并没有为形参在栈中另外开辟存储空间,而是相称于实参的一个“别名”。这么一来,在措施体中对形参进行操作就相称于是对实参进行的操作,所有的变化都会被带出措施。
b)out参数
和ref类似,若要使用out参数,措施定义和调用措施都必须显式使用out核心字。
核心字ref VS. 核心字out
两个核心字的区分在于哪个措施负责初始化参数。用ref标识的参数,需要在调用该措施前,由调用措施就初始化好;用out标识的参数,调用代码在调用该措施之前能够不初始化该参数,即便初始化了,也会被被调用措施忽视掉。一言蔽之,out参数不能将值带进措施体,而只能将值带出措施体。
(3)params参数(参数数组)
params核心字,为措施提供一个可接收可变数目参数的能力。
params参数定义格式如下:
措施修饰符 返回类型 措施名(params 类型[] 变量名)
{
//措施体
}
6. 措施重载
措施署名:措施的名称和参数列表。
同一个类中,每个措施的署名必须是唯一的。
假如类中有两个或更多个措施具备相同的名称和不一样的参数列表,则称这些同名措施实现了措施重载(overload)。
注意辨别组成重载的条件和不组成重载的情况。
7. 措施递归
在措施体中调用自身就形成了措施的递归调用。
注意:任何递归都必须最少具备一个能够返回的条件,当满足这个条件时,递归就进行回溯,这个条件叫做递归出口。
在使用递归时注意,假如递归的层次结构很深,将会占用大量的内存,回事的性能减少。
6.3课程小结
掌握类和对象的概念
掌握字段
掌握类中的常量
掌握类的措施组员
6.4思考与练习
课后练习4.1、4.2、4.4、4.7
7. 参考资料
[1] C#应用程序设计,张伟、韦鹏程、朱盈贤主编,铁道出版社,.7
[2] 深入了解C#,Jon Skeet,人民邮电出版社,.1.
8. 教学后记
展开阅读全文