第章面向对象的程序设计ppt课件_第1页
第章面向对象的程序设计ppt课件_第2页
第章面向对象的程序设计ppt课件_第3页
第章面向对象的程序设计ppt课件_第4页
第章面向对象的程序设计ppt课件_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第7章章 面向对象的程序设计面向对象的程序设计 本章要点: 面向对象的根本概念 类的定义与对象的声明 构造函数和析构函数 类的静态成员和实例成员 方法重载及运算符重载的编程实现 类的承继与多态性的编程实现 类的属性的实现7.1 循序渐进学实际 7.1.1 面向对象程序设计概述面向对象程序设计概述 1面向对象程序设计的由来面向对象程序设计的由来 面向对象的程序设计是一种基于构造分面向对象的程序设计是一种基于构造分析的、以数据为中心的程序设计方法。析的、以数据为中心的程序设计方法。面向对象的程序设计方法总体思绪是:面向对象的程序设计方法总体思绪是:将数据及处置这些数据的操作都封装将数据及处置这些

2、数据的操作都封装Encapsulation到一个称为类到一个称为类Class的数据构造中,在程序中运用的数据构造中,在程序中运用的是类的实例的是类的实例对象。对象是代码与对象。对象是代码与数据的集合,是封装好了的一个整体,数据的集合,是封装好了的一个整体,对象具有一定的功能。也就是说对象是对象具有一定的功能。也就是说对象是具有一定功能的程序实体。程序是由一具有一定功能的程序实体。程序是由一个个对象构成的,对象之间经过一定的个个对象构成的,对象之间经过一定的“相互操作传送音讯,在音讯的作用下,相互操作传送音讯,在音讯的作用下,完成特定的功能。完成特定的功能。 2面向对象程序设计的根本概念 1类和

3、对象 通常把具有同样性质和功能的东西所构成的集合叫作类。 2属性、方法与事件 属性是对象的形状和特点。 方法是对象可以执行的一些操作,它表达了对象的功能。 事件是对象可以识别和呼应的某些操作 。3封装 所谓的封装,就是将用来描画客观事物的一组数据和操作组装在一同,构成一个类。 4承继 类之间除了有相互交流或访问的关系以外,还能够存在着一种特殊的关系,这就是承继。在Visual C#中只支持单承继,即一个派生类只能有一个基类。5重载 重载指的是方法称号一样,但假设参数不同,就会有不同的详细实现。重载主要有两类:方法重载及运算符重载。 6多态性 所谓多态性就是在程序运转时,面向对象的言语会自动判别

4、对象的派生类型,并调用相应的方法。 7.1.2 7.1.2 类和对象的声明类和对象的声明 1类的声明格式:类修饰符 class 类名:基类类名成员定义列表; 【例7-1】 定义一个Student类,用来对学生的信息和功能进展描画。假设学生具有学号、姓名、年龄、性别、平均成果等特征,并且具有设置学生特征和显示学生特征的功能。2对象的声明 格式:类名实例名=new 类名(参数); 3类的成员1类成员的分类 类的详细成员如下。 常量:用来定义与类相关的常量值。 字段:类中的变量,相当于C+中的成员变量。 类型:用来定义只能在类中运用的部分类型。 方法:完成类中各种计算或功能的操作。 属性:定义类的特

5、征,并对它们提供读、写操作。 事件:由类产生的通知,用于阐明发生了什么事情。 索引器:允许编程人员在访问数组时,经过索引器访问类的多个实例。又称下标指示器。 运算符:定义类的实例能运用的运算符。 构造函数:在类被实例化时首先执行的函数,主要是完成对象初始化操作。 析构函数:在对象被销毁之前最后执行的函数,主要是完成对象终了时的收尾操作。2类成员的可访问性 在编写程序时,可以对类的成员运用不同的访问修饰符,从而定义它们的访问级别,即类成员的可访问性(Accessibility)。 在C#中,根据类成员的可访问性可以把类成员分成四类,分别是公有成员(public)、私有成员(private)、维护

6、成员(protected)、内部成员(internal)。3类的静态成员和实例成员 类的成员又可以分成静态成员和非静态成员。在声明成员时,假设在语句前加上static保管字,那么该成员是静态成员,假设没有static保管字,那么成员是非静态成员。二者最重要的区别是:静态成员属于类一切,非静态成员属于类的实例一切,所以又称实例成员。 7.1.3 7.1.3 类的构造函数和析构函数类的构造函数和析构函数 1构造函数 构造函数主要用来为对象分配存储空间,完成初始化操作如给类的成员变量赋值等。在C#中,类的构造函数遵照以下规定。1构造函数的函数名和类的称号一样。2当某个类没有构造函数时,系统将自动为其

7、创建构造函数,这种构造函数称为默许构造函数。如例7-2中默许的构造函数为: Example1() ; 3构造函数的访问修饰符总是public。假设是private,那么表示这个类不能被实例化,这通常用于只含有静态成员的类中。 4构造函数由于不需求显式调用,因此不用声明前往类型。 5构造函数可以带参数也可以不带参数。 2析构函数 析构函数在对象销毁时被调用,常用来释放对象占用的存储空间。析构函数具有以下特点。1析构函数不能带有参数。2析构函数不能拥有访问修饰符。 3不能显式地调用析构函数。4析构函数的命名规那么是在类名前加上一个“号。如上例的Example1类的析构函数为: Example1()

8、 ;5析构函数在对象销毁时自动调用。【例7-3】 类的构造函数和析构函数的演示。程序代码详见例7-3执行结果 7.1.4 7.1.4 类的方法及方法的重载类的方法及方法的重载 1方法的定义 格式:方法修饰符 前往值类型 方法名(参数列表) 方法实现部分; 2静态方法和非静态方法 对于静态方法和非静态方法,只需抓住以下几点:1静态方法属于类一切,非静态方法属于类定义的对象一切;2非静态方法可以访问类中包括静态成员在内的一切成员,而静态方法只能访问类中的静态成员。 【例7-4】 静态方法和动态方法的演示。请察看并分析以下程序的执行结果。程序代码详见例7-4执行结果 3参数数组 关于参数数组,需掌握

9、以下几点。1假设形参表中含一个参数数组,那么该参数数组必需位于形参列表的最后;2参数数组必需是一维数组;3不允许将params修饰符与ref和out修饰符组合起来运用;4与参数数组对应的实参可以是同一类型的数组名,也可以是恣意多个与该数组的元素属于同一类型的变量;5假设实参是数组那么按援用传送,假设实参是变量或表达式那么按值传送。 【例7-5】 参数数组的演示。请察看并分析以下程序的执行结果。 程序代码详见例7-5 执行结果 4方法的重载 方法重载是指同样的一个方法名,有多种不同的实现方法。方法重载的格式是在一个类中两次或多次定义同名的方法,这些同名的方法包括从基类承继而来的方法,这些方法称号

10、一样,但每个方法的参数类型或个数不同,从而便于在用户调用方法时系统可以自动识别应调用的方法。 【例7-6】 方法重载的演示。请察看并分析以下程序的执行结果。 程序代码详见例7-6执行结果 7.1.5 7.1.5 运算符重载运算符重载 在C#中,运算符重载在类中进展声明,声明的格式如下。格式:前往值类型 operator 运算符(运算对象列表) 重载的实现部分; ;在C#中,可以重载的运算符主要有:+ - ! + - true false* / % & | = != =不能重载的运算符有: = & | ?: new typeof sizeof is【例7-7】 运算符重载的演示。请察看并分析以下

11、程序的执行结果。 程序代码详见例7-7 执行结果 7.1.6 7.1.6 域与属性域与属性 1域 域又称字段,它是类的一个成员,这个成员代表与对象或类相关的变量。域的定义格式如下。格式:域修饰符 域类型 域名; 【例7-8】 域的演示。请察看并分析以下程序的执行结果。程序代码详见例7-8执行结果 2属性 属性是对现实世界中实体特征的笼统,它提供了一种对类或对象特性进展访问的机制。属性的声明格式如下。格式:属性修饰符 类型阐明符 属性名 访问声明 【例7-9】 属性的演示。请察看并分析以下程序的执行结果。 程序代码详见例7-9执行结果 7.1.7 this7.1.7 this关键字关键字 thi

12、s关键字用来援用类的当前实例,成员经过this关键字可以知道本人属于哪一个实例。this关键字只能用在类的构造函数、类的实例方法中,在其它地方如静态方法中运用this关键字均是错误的。 7.1.8 7.1.8 类的承继类的承继 承继是面向对象程序设计中实现代码重用的重要机制之一,它来源于现实世界中事物之间的联络。 类的承继的根本格式与功能如下。 格式: class 派生类类名:基类类名 成员声明列表; 【例7-10】 类承继的演示。请察看并分析以下程序的执行结果。 程序代码详见例7-10 执行结果 7.1.9 7.1.9 多态性多态性 多态性是指同一操作作用于不同类的实例,这些类对它进展不同的

13、解释,从而产生不同的执行结果的景象。在C#中有两种多态性:编译时的多态性和运转时的多态性。 运转时的多态性是经过承继和虚成员来实现的。运转时的多态性是指系统在编译时不确定选用哪个重载方法,而是直到程序运转时,才根据实践情况决议采用哪个重载方法。编译时的多态性具有运转速度快的特点,而运转时的多态性那么具有极大的灵敏性。【例7-11】 虚函数与多态性的演示。请察看并分析以下程序的执行结果。程序代码详见例7-11执行结果 7.1.10 7.1.10 密封类与笼统类密封类与笼统类 把一个类声明为密封类的缘由是为了防止该类被其它类承继,密封类的声明方法是在类名前加上sealed修饰符。 笼统类表示一种笼

14、统的概念,普通用于为派生类提供公共接口。在声明类时,在类名前有abstract修饰符那么表示该类为笼统类。笼统类只能作为其他类的基类,不能被实例化,在笼统类中可以包含笼统方法和笼统访问器。 7.2 典型实例练才干 7.2.1 典型实例一:典型实例一:Time类的创类的创建与演示建与演示 【实例标题】【实例标题】 编写一个名为编写一个名为Time1的类,的类,该类可以存放时间信息,并且具该类可以存放时间信息,并且具有设置时间和显示时间的功能。有设置时间和显示时间的功能。然后编程对该类进展测试。测试然后编程对该类进展测试。测试界面如图界面如图7-1所示。所示。图7-1 时钟类测试界面 7.2.2

15、7.2.2 典型实例二:复数典型实例二:复数“* *运算及复数值运算及复数值设置的实现设置的实现 【实例标题】 编写一个复数类,该复数类具有以下功能:1乘法运算的功能。如a和b分别是该复数类的两个实例,那么可以进展a*b的运算,运算结果是一个复数,该复数是复数a和复数b的乘积。2对复数值进展设置的功能,有两种设置方法,分别对复数的实部虚部为0进展设置、对复数的实部和虚部同时进展设置。然后编程进展验证。验证界面如图7-2所示。 图7-2 复数“*运算及复数值设置的运转界面 7.3 上机练习重运用 7.3.1 上机练习一:栈模型的实现上机练习一:栈模型的实现 【练习标题】【练习标题】 栈是一种重要

16、的数据构造,在内存中占用栈是一种重要的数据构造,在内存中占用延续的存储单元。栈有两个端点,固定延续的存储单元。栈有两个端点,固定的栈底和浮动的栈顶。为指示栈顶位置的栈底和浮动的栈顶。为指示栈顶位置还应设一个指示成员变量称为栈顶指还应设一个指示成员变量称为栈顶指示器。栈有两种根本操作:示器。栈有两种根本操作:push压压栈和栈和pop出栈,压栈是向栈顶位出栈,压栈是向栈顶位置写入一个元素,然后使栈顶指示器加置写入一个元素,然后使栈顶指示器加1,出栈是先使栈顶指示器减出栈是先使栈顶指示器减1,再把该位置,再把该位置的元素读出来。栈及其操作模型如图的元素读出来。栈及其操作模型如图7-3所示,所示,sp代表栈顶指示器。请编程实现代表栈顶指示器。请编程实现栈的模型并对之进展测试,测试的界面栈的模型并对之进展测试,测试的界面如图如图7-4所示。所示。图

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论