C#程序设计教程第4章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《C#程序设计教程第4章课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# 程序设计 教程 课件
- 资源描述:
-
1、2022-9-261第四章第四章 面向对象程序设计入门面向对象程序设计入门1.总体要求总体要求l理解面向对象的基本概念,正确区分类和对象,对象的声明理解面向对象的基本概念,正确区分类和对象,对象的声明和对象的创建。和对象的创建。l掌握类的定义与使用方法,正确定义类的数据成员、属性和掌握类的定义与使用方法,正确定义类的数据成员、属性和方法。方法。l理解类的可访问性、正确使用访问修饰符控制对类成员的访理解类的可访问性、正确使用访问修饰符控制对类成员的访问。问。l掌握类的方法的定义、调用与重载,理解方法的参数传递的掌握类的方法的定义、调用与重载,理解方法的参数传递的工作机制。工作机制。l理解值类型和
2、引用类型的区别。理解值类型和引用类型的区别。l理解构造函数与析构函数的作用,掌握其使用方法。理解构造函数与析构函数的作用,掌握其使用方法。l方法的重载和参数传递方法的重载和参数传递2.相关知识点相关知识点l熟悉熟悉C#中数据类型、表达式、运算符、常量与变量等基础中数据类型、表达式、运算符、常量与变量等基础知识。知识。l熟悉熟悉C#中数据类型转换。中数据类型转换。3.学习重点学习重点lC#中类的定义、类的数据成员、属性和方法中类的定义、类的数据成员、属性和方法l类的构造函数类的构造函数l方法的重载和参数传递方法的重载和参数传递第四章第四章 面向对象程序设计入门面向对象程序设计入门 4.学习难点学
3、习难点l类和对象的关系类和对象的关系l方法的重载和参数传递方法的重载和参数传递l值类型和引用类型及对象的生命周期值类型和引用类型及对象的生命周期第四章第四章 面向对象程序设计入门面向对象程序设计入门 第四章第四章 面向对象程序设计入门面向对象程序设计入门面向对象的基本概念面向对象的基本概念 类的定义类的定义类的方法类的方法构造函数构造函数2022-9-266l4.1.1 对象对象l4.1.2 事件与方法事件与方法l4.1.3 类与对象类与对象l4.1.4 抽象、封装、继承与多态抽象、封装、继承与多态 2022-9-267对象对象l客观世界中任何一个事物都可以看成一个对象客观世界中任何一个事物都
4、可以看成一个对象(object),对象可以是自然物体(如汽车、房屋、狗),也可以是社对象可以是自然物体(如汽车、房屋、狗),也可以是社会生活中一种逻辑结构(如班级、部门、组织),甚至一会生活中一种逻辑结构(如班级、部门、组织),甚至一篇文章、一个图形、一项计划等都可以视作对象。对象是篇文章、一个图形、一项计划等都可以视作对象。对象是构成系统的基本单位,在实际社会生活中,人们都是在不构成系统的基本单位,在实际社会生活中,人们都是在不同的对象中活动的。同的对象中活动的。l任何一个对象都应当具有这两个要素,即属性任何一个对象都应当具有这两个要素,即属性(attribute)和行为和行为(behavi
5、or),一个对象往往由一组属性和一组行为,一个对象往往由一组属性和一组行为构成,一辆汽车是一个对象,它的属性是生产厂家、品牌、构成,一辆汽车是一个对象,它的属性是生产厂家、品牌、型号、颜色、价格等,它是行为是它的功能,如发动、停型号、颜色、价格等,它是行为是它的功能,如发动、停止、加速等,一般来说,凡是具备属性和行为这两个要素止、加速等,一般来说,凡是具备属性和行为这两个要素的,都可以作为对象,的,都可以作为对象,对象对象l对象是问题域中某些事物的一个抽象,反映事物对象是问题域中某些事物的一个抽象,反映事物在系统中需要保存的必要信息和发挥的作用,是在系统中需要保存的必要信息和发挥的作用,是包含
6、一些特殊属性(数据)和服务(行为方法)包含一些特殊属性(数据)和服务(行为方法)的封装实体。具体来说,他应有唯一的名称,有的封装实体。具体来说,他应有唯一的名称,有一系列状态(表示为数据),有表示对象行为的一系列状态(表示为数据),有表示对象行为的一系列行为(方法),简言之:一系列行为(方法),简言之:l对象对象=属性属性+行为(方法、操作)行为(方法、操作)4.1.2 事件与方法事件与方法l事件(事件(Event)又称为消息()又称为消息(Message),表示向),表示向对象发出的服务请求。方法(对象发出的服务请求。方法(Method)表示对象)表示对象能完成的服务或执行的操作功能。能完成
7、的服务或执行的操作功能。l在一个系统中的多个对象之间通过一定的渠道相在一个系统中的多个对象之间通过一定的渠道相互联系,要使某一个对象实现某一种行为或操作互联系,要使某一个对象实现某一种行为或操作,应当向他传送相应的消息。例如想让汽车行驶,应当向他传送相应的消息。例如想让汽车行驶,必须由人去踩油门,向汽车发出相应的信号。,必须由人去踩油门,向汽车发出相应的信号。对象之间就是这样通过发送和接收消息互相联系对象之间就是这样通过发送和接收消息互相联系的。的。l在面向对象的概念中,一个对象可以有多个方法,提供多在面向对象的概念中,一个对象可以有多个方法,提供多种服务,完成多种操作功能。但这些方法只有在另
8、外一个种服务,完成多种操作功能。但这些方法只有在另外一个对象向他发出请求之后(发生事件)才会被执行。对象向他发出请求之后(发生事件)才会被执行。4.1.3 类与对象类与对象l普通逻辑意义上的类是现实世界中各种实体的抽普通逻辑意义上的类是现实世界中各种实体的抽象概念,而对象是现实生活中的一个个实体,例象概念,而对象是现实生活中的一个个实体,例如,在现实世界中大量具体一辆辆汽车、摩托车如,在现实世界中大量具体一辆辆汽车、摩托车、自行车等实体是对象,而交通工具则是这些对、自行车等实体是对象,而交通工具则是这些对象的抽象,交通工具就是一个类。象的抽象,交通工具就是一个类。l在面向对象的概念中,类(在面
9、向对象的概念中,类(Class)表示具有相同)表示具有相同属性和行为的一组对象的集合,为该类的所有对属性和行为的一组对象的集合,为该类的所有对象提供统一的抽象描述。象提供统一的抽象描述。l类是对相似对象的抽象,而对象是该类的一个特类是对相似对象的抽象,而对象是该类的一个特例,类与对象的关系是抽象与具体的关系。例,类与对象的关系是抽象与具体的关系。4.1.4 抽象、封装、继承与多态抽象、封装、继承与多态l面向对象的最基本的特征是抽象性、封装性、继承性和多面向对象的最基本的特征是抽象性、封装性、继承性和多态性。态性。l1抽象抽象l抽象(抽象(abstraction)是处理事物复杂性的方法,只关注与
10、)是处理事物复杂性的方法,只关注与当前目标有关的方面,而忽略与当前目标无关的那些方面当前目标有关的方面,而忽略与当前目标无关的那些方面,例如在学生成绩管理中,张三、李四、王五作为学生,例如在学生成绩管理中,张三、李四、王五作为学生,我们只关心他们和成绩管理有关的属性和行为,如学号、我们只关心他们和成绩管理有关的属性和行为,如学号、姓名、成绩、专业等特性。抽象的过程是将有关事物的共姓名、成绩、专业等特性。抽象的过程是将有关事物的共性归纳、集中的过程,例如凡是有轮子、能滚动并前进的性归纳、集中的过程,例如凡是有轮子、能滚动并前进的陆地交通工具统称为陆地交通工具统称为“车子车子”,把其中用汽油发动机
11、驱动,把其中用汽油发动机驱动的抽象为的抽象为“汽车汽车”,把用马拉的抽象为,把用马拉的抽象为“马车马车”。4.1.4 抽象、封装、继承与多态抽象、封装、继承与多态l抽象能表示同一类事物的本质,如果你会使用自己家里的抽象能表示同一类事物的本质,如果你会使用自己家里的电视机,在别人家里看到即便是不同的牌子的电视机,你电视机,在别人家里看到即便是不同的牌子的电视机,你也能对它进行操作。因这它具有所有电视机所共有的特征也能对它进行操作。因这它具有所有电视机所共有的特征,而,而C#中的数据类型就是对一系列具体的数的抽象,例如中的数据类型就是对一系列具体的数的抽象,例如:int是对所有整数的抽象,是对所有
12、整数的抽象,double是对所有双精度浮点型是对所有双精度浮点型数的抽象。数的抽象。l2封装和信息隐藏封装和信息隐藏l封装(封装(encapsulation)有两个方面的含义:一是将)有两个方面的含义:一是将有关的数据和操作代码封装在一个对象中,形成一个有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不干扰。二是基本单位,各个对象之间相对独立,互不干扰。二是将对象中某些部份对外隐藏,即隐藏其内部细节,只将对象中某些部份对外隐藏,即隐藏其内部细节,只留下少量接口,以便与外界联系,接收外界的消息。留下少量接口,以便与外界联系,接收外界的消息。这种对外界隐藏的做法称为
13、信息隐藏(这种对外界隐藏的做法称为信息隐藏(information hiding)。信息隐藏还有利于数据安全,防止无关的)。信息隐藏还有利于数据安全,防止无关的人了解和修改数据。人了解和修改数据。4.1.4 抽象、封装、继承与多态抽象、封装、继承与多态l封装把对象的全部属性和全部行为结合在一起形成一个不封装把对象的全部属性和全部行为结合在一起形成一个不可分割的独立单位。而通过信息隐蔽技术,用户只能见到可分割的独立单位。而通过信息隐蔽技术,用户只能见到对象封装界面上的信息,对象内部对用户是隐蔽的。对象封装界面上的信息,对象内部对用户是隐蔽的。l例如,一台电视机就是一个封装体。从设计者的角度来讲例
14、如,一台电视机就是一个封装体。从设计者的角度来讲,不仅需要考虑内部的各种元器件,还要考虑主机板、显,不仅需要考虑内部的各种元器件,还要考虑主机板、显像管等元器件的连接与组装;从使用者的角度来讲,只关像管等元器件的连接与组装;从使用者的角度来讲,只关心其型号、颜色、重量等属性,只关心电源开关按钮、音心其型号、颜色、重量等属性,只关心电源开关按钮、音量开关、调频按钮、视频输入输出接口等用起来是否方便量开关、调频按钮、视频输入输出接口等用起来是否方便,根本不用关心其内部构造。,根本不用关心其内部构造。l因此,封装的目的在于将对象的使用者与设计者分开,使因此,封装的目的在于将对象的使用者与设计者分开,
15、使用者不必了解对象行为的具体实现,只需要用设计者提供用者不必了解对象行为的具体实现,只需要用设计者提供的消息接口来访问该对象。的消息接口来访问该对象。4.1.4 抽象、封装、继承与多态抽象、封装、继承与多态4.1.4 抽象、封装、继承与多态抽象、封装、继承与多态l3继承继承l汽车制造厂要生产新型号的汽车,如果全部从头开始设计汽车制造厂要生产新型号的汽车,如果全部从头开始设计,将耗费大力的人力、物力和财力。但如果选择已有的某,将耗费大力的人力、物力和财力。但如果选择已有的某一型号的汽车为基础,再增加一些新的功能,就能快速研一型号的汽车为基础,再增加一些新的功能,就能快速研发出新型号的汽车。这是提
16、高生产效率的常用方法。发出新型号的汽车。这是提高生产效率的常用方法。l如果在软件开发中已建立了一个名为如果在软件开发中已建立了一个名为A的类,又想建立一的类,又想建立一个名为个名为B的类,而后者与前者内容基本相同,只是在前者的类,而后者与前者内容基本相同,只是在前者基础上增加一些新的属性和行为,显然不必再从头设计一基础上增加一些新的属性和行为,显然不必再从头设计一个新类,只需在个新类,只需在A类的基础上增加一些新的内容即可,而类的基础上增加一些新的内容即可,而B类的对象拥有类的对象拥有A类的全部属性与方法,称作类的全部属性与方法,称作B类对类对A类的继类的继承,在承,在B类中不必重新定义已在类
17、中不必重新定义已在A类中定义过的属性和方法类中定义过的属性和方法,这种特性在面向对象中称作对象的继承性。继承在,这种特性在面向对象中称作对象的继承性。继承在C#中中称为派生,其中,称为派生,其中,A类称为基类或父类,类称为基类或父类,B类称为派生类或类称为派生类或子类。子类。4.1.4 抽象、封装、继承与多态抽象、封装、继承与多态l继承机制的优势在于降低了软件开发的复杂性和继承机制的优势在于降低了软件开发的复杂性和费用,使软件系统易于扩充,大大缩短了软件开费用,使软件系统易于扩充,大大缩短了软件开发周期,对于大型软件的开发具有重要的意义。发周期,对于大型软件的开发具有重要的意义。4.1.4 抽
18、象、封装、继承与多态抽象、封装、继承与多态l4多态多态l多态性(多态性(polymorphism)是指在基类中定义的属性或方)是指在基类中定义的属性或方法被派生类继承后,可以具有不同的数据类型或表现出不法被派生类继承后,可以具有不同的数据类型或表现出不同的行为。其对象对同一消息会做出不同的响应,如张三同的行为。其对象对同一消息会做出不同的响应,如张三、李四和王五是分别是属于三个班的三个学生,在听到上、李四和王五是分别是属于三个班的三个学生,在听到上课铃声后,他们会分别走进课铃声后,他们会分别走进3个不同的教室,同样,个不同的教室,同样,“启动启动”是所有交通工具都具有的操作,但不同的具体交通工
19、具是所有交通工具都具有的操作,但不同的具体交通工具其其“启动启动”操作的具体实现是不同的,如汽车的启动是操作的具体实现是不同的,如汽车的启动是“发动机点火,启动引擎发动机点火,启动引擎”,启动轮船时要,启动轮船时要“起锚起锚”,气球,气球飞艇启动是飞艇启动是“充气,解缆充气,解缆”,为了实现多态性,需要在派,为了实现多态性,需要在派生类中更改从基类中自动继承来的数据类型或方法。这种生类中更改从基类中自动继承来的数据类型或方法。这种为了替换基类的部分内容而在派生类中重新进行定义的操为了替换基类的部分内容而在派生类中重新进行定义的操作,在面向对象的概念中称为覆盖。这样一来,不同类的作,在面向对象的
20、概念中称为覆盖。这样一来,不同类的对象可以响应同名的消息(方法)来完成特定的功能,但对象可以响应同名的消息(方法)来完成特定的功能,但其具体的实现方法却可以不同。其具体的实现方法却可以不同。4.2 类的定义类的定义l4.2.1 类的声明和实例化类的声明和实例化 l4.2.2 类的数据成员和属性类的数据成员和属性l4.2.3 类的可访问性类的可访问性l4.2.4 值类型与引用类型值类型与引用类型4.2.1 类的声明和实例化类的声明和实例化 l1类的声明类的声明l类的声明一般形式如下:类的声明一般形式如下:访问修饰符访问修饰符 class 类名类名:基类基类 类的成员类的成员;l其中,访问修饰符用
21、来限制类的作用范围或访问级别,可其中,访问修饰符用来限制类的作用范围或访问级别,可省略;类名是一个合法的省略;类名是一个合法的C#标识符,推荐使用标识符,推荐使用Pascal命名命名规范,规范,Pascal命名规范要求名称的每个单词的首字母要大命名规范要求名称的每个单词的首字母要大写;基类表明所定义的类是一个派生类,可省略;类的成写;基类表明所定义的类是一个派生类,可省略;类的成员放在花括号中,构成类的主体,用来定义类的属性和行员放在花括号中,构成类的主体,用来定义类的属性和行为。类的成员包括常量、字段、属性、索引器、方法、事为。类的成员包括常量、字段、属性、索引器、方法、事件、构造函数等。件
22、、构造函数等。4.2.1 类的声明和实例化类的声明和实例化l2类的实例类的实例l定义类之后,可以用定义的类声明对象,然后再通过这个定义类之后,可以用定义的类声明对象,然后再通过这个对象来访问其数据或调用其方法。对象来访问其数据或调用其方法。l(1)对象的声明与创建。对象的声明与创建。l声明对象的格式与声明基本数据类型的格式相同,其语法声明对象的格式与声明基本数据类型的格式相同,其语法格式为:格式为:l类名类名 对象名对象名l例如:例如:lStudent stu1;/声明一个声明一个Student对象对象stu14.2.1 类的声明和实例化类的声明和实例化l但是,对象声明后需要用但是,对象声明后
23、需要用“new”关键字将对象实例化,这关键字将对象实例化,这样才能为对象在内存中分配保存数据空间,实例化的语法样才能为对象在内存中分配保存数据空间,实例化的语法格式为:格式为:对象名对象名=new 类名类名();例如:例如:stu1=new Student();/为为stu1分配内存空间分配内存空间l也可以在声明对象同时实例化对象。语法格式为:也可以在声明对象同时实例化对象。语法格式为:类名类名 对象名对象名=new 类名类名();例如:例如:Student stu2=new Student();/声明同时创建对象声明同时创建对象4.2.1 类的声明和实例化类的声明和实例化l(2)类成员的访问
24、。类成员的访问。l类成员有两种访问方式:一种是在类的内部访问,另一种类成员有两种访问方式:一种是在类的内部访问,另一种是在类的外部访问。是在类的外部访问。l在类的内部访问类的成员,表示一个类成员要使用当前类在类的内部访问类的成员,表示一个类成员要使用当前类中的其他成员,可以直接使用成员名称,有时为了避免引中的其他成员,可以直接使用成员名称,有时为了避免引起混淆,也可采用如下形式:起混淆,也可采用如下形式:lthis.类成员类成员l其中,其中,this表示当前对象,是表示当前对象,是C#的关键字。的关键字。4.2.1 类的声明和实例化类的声明和实例化l【实例实例4-1】定义定义Student类并
25、实例化类的对象。类并实例化类的对象。4.2.2 类的数据成员和属性类的数据成员和属性l类的成员包括类的常量、字段、属性、索引器、方法、事类的成员包括类的常量、字段、属性、索引器、方法、事件、构造函数等,其中,常量、字段和属性都是与类的数件、构造函数等,其中,常量、字段和属性都是与类的数据有关的成员。据有关的成员。l1常量常量l常量的值是固定不变的。类的常量成员是一种符号常量,常量的值是固定不变的。类的常量成员是一种符号常量,符号常量是由用户根据需要自行创建的常量,在程序设计符号常量是由用户根据需要自行创建的常量,在程序设计过程中可能需要反复使用到某个数据,如圆周率过程中可能需要反复使用到某个数
展开阅读全文