VisualC#07-1面向对象和类.ppt
《VisualC#07-1面向对象和类.ppt》由会员分享,可在线阅读,更多相关《VisualC#07-1面向对象和类.ppt(70页珍藏版)》请在三一办公上搜索。
1、第7章 面向对象和类,本章要点面向对象程序设计的概念掌握命名空间的意义掌握类的声明方法掌握构造器和析构器掌握方法,私有方法,共有方法的声明掌握域、属性、索引等概念,第7章 面向对象和类,7.1 面向对象编程概述7.1.1结构化程序设计 结构化程序设计是为了解决早期计算机程序的难于阅读、理解和调试,难于维护和扩充,以及开发周期长、不易控制程序的质量等问题而提出来的,它的产生和发展奠定了软件工程的基础。结构化程序设计的基本思想是:自顶向下,逐步求精,将整个程序结构划分成若干个功能相对独立的模块,模块之间的联系尽可能简单;每个模块用顺序、选择、循环三种基本结构来实现;每个模块只有一个入口和一个出口。
2、,第7章 面向对象和类,7.1.1 结构化程序设计 结构化程序设计的优点:(1)各模块可以分别编程,使程序易于阅读、理解、调试和修改;(2)方便新功能模块的扩充;(3)功能独立的模块可以组成子程序库,有利于实现软件复用等。由于这些优点,结构化程序设计方法出现以后,很快被人们接受并得到广泛应用。,第7章 面向对象和类,7.1.1结构化程序设计 结构程序设计的问题:结构化程序设计方法以解决问题的过程作为出发点,其方法是面向过程的。它把程序定义为:“数据结构+算法”程序中数据与处理这些数据的算法(过程)是分离的。这样,对不同的数据结构作相同的处理,或对相同的数据结构作不同的处理,都要使用不同的模块,
3、降低了程序的可维护性和可复用性。同时,由于这种分离,导致了数据可能被多个模块使用和修改,难于保证数据的安全性和一致性。,第7章 面向对象和类,7.1.1结构化程序设计 对于小型程序和中等复杂程度的程序来说,结构化程序设计是一种较为有效的技术,但对于复杂的、大规模的软件的开发来说,它就不尽如人意了。可以看出:结构化程序设计的核心思想是功能的分解,特点是将数据结构与过程分离,着重点在过程。用这种方法开发的软件可维护性和可复用性差。,第7章 面向对象和类,7.1.2 面向对象程序设计面向对象的程序设计(Object-Oriented Programming)是一种基于结构分析的、以数据为中心的程序设
4、计方法。它的主要思想是:将数据及处理这些数据的操作都封装(Encapsulation)到一个称为类(Class)的数据结构中。使用这个类时,只需要定义一个类的变量即可,这个变量叫做对象(Object)。通过调用对象的数据成员完成对类的使用。在该方法下,编程人员不需要过分关注“如何做”,而重点关注“做什么”。,第7章 面向对象和类,7.1.2 面向对象程序设计结构化程序设计方法与面向对象程序设计的区别:(1)结构化程序设计方法是面向过程的结构化方法,程序 设计从算法入手,然后是数据结构。(2)面向对象程序设计(OOP)首先考虑的是程序处理的数 据结构,即对象。,第7章 面向对象和类,7.1.2
5、面向对象程序设计 在面向对象程序设计中:(1)对象是构成软件系统的基本单元;(2)从同类型的对象中抽象出一种新型的数据类型,即类,对象只是类的实例;(3)类的成员中不仅包含有描述类对象属性的数据,还 包含有对这些数据进行处理的程序代码(这些程序 代码被称为对象的行为或操作)。,第7章 面向对象和类,7.1.2 面向对象程序设计 在面向对象程序设计中:(1)对象是构成软件系统的基本单元;(2)从同类型的对象中抽象出一种新型的数据类型,即类,对象只是类的实例;(3)类的成员中不仅包含有描述类对象属性的数据,还 包含有对这些数据进行处理的程序代码(这些程序 代码被称为对象的行为或操作)。,第7章 面
6、向对象和类,7.1.2 面向对象程序设计何为封装?将对象的属性和行为放在一起作为一个整体的方法。封 装将对象的大部分行为的实现隐蔽起来,仅通过一个可 控的接口与外界交互。类的派生:面向对象程序设计提供了类的继承性,可通过对一个被 称为基类的类增添不同的特性来派生出多种被称为派生 类的特殊类,使得类与类之间建立了层次结构关系,为 软件复用提供了有效的途径。,第7章 面向对象和类,7.1.2 面向对象程序设计面向对象程序设计的基本思想:数据的分解,即着重点放在被操作的数据上而不是实现 操作的过程上。它把数据及其操作作为一个整体对待,数据本身不能被外部过程直接存取。思想的特点是:程序一般由类的定义和
7、类的使用两部分组成,主程序中 定义各个对象并规定它们之间传递消息的规律,程序中 的一切操作都通过向对象发送消息来实现,对象接收到 消息后,调用有关对象的行为来完成相应的操作。优点:用这种方法开发的软件可维护性和可复用性高。,第7章 面向对象和类,7.1.3 类和对象概述在面向对象程序设计方法中,类是对自然现象或实体的程序语言描述,对象是对类的实例化。例如:类:类可以泛指某一批外形、价格、生产厂家、出厂日期完 全一致的笔;对象:用这个类声明的一个对象是这些笔中一支实实在在的笔。而且单纯从这一支笔中可以得到这样的常识:它具有一定 的属性(外形、价格、颜色、长短)、具有一定的行为(写字、绘画),和“
8、笔”这个类具有相同的属性和行为。,第7章 面向对象和类,7.1.3 类和对象概述 例如,笔是类,钢笔、铅笔、毛笔可以是笔的子类,2B铅笔可以是铅笔的子类。张红买了1支2B铅笔,假设该铅笔叫APEN,则APEN就是类(2B铅笔类)的实例,称为对象,它可以有颜色、价格、长度、形状等属性。,第7章 面向对象和类,面向对象程序设计的主要特性有:(1)封装 封装就是把相关的数据和代码结合成一个有机的整体,形成数据和操作代码的封装体,对外只提供一个可以控制的接口,内部大部分的实现细节对外隐蔽,达到对数据访问权的合理控制。封装使程序中个部分之间的相互联系达到最小,提高了程序的安全性,简化了程序代码的编写工作
9、,是面向对象程序设计的重要原则,第7章 面向对象和类,(2)继承(代码重用)在面向对象程序设计中,继承表达的是对象类之间的关系,这种关系使得一类对象可以继承另一类对象的属性(数据)和行为(操作),从而,提供了通过现有的类创建新类的方法,也提高了软件复用的程度。,第7章 面向对象和类,(3)多态多态是指不同的对象受到相同的消息时产生不同的操作行为,或者说同一个消息可以根据发送消息的对象的不同而采用多种不同的操作行为。多态性是面向对象程序设计的重要特性之一,例如:当用鼠标单击不同的对象时,各对象就会根据自己的理解作出不同的动作,产生不同的结果,这就是多态性。简单地说,多态性就是一个接口,多种方式。
10、C+语言支持两种多态性,即编译时的多态性和运行时的多态性。编译时的多态性是用函数的重载来实现的,运行时的多态性是用虚函数来实现的。,第7章 面向对象和类,(4)重载(overloading)允许使用具有相同的方法名称的多个方法.区分方法的途径是方法具有不同的参数列表。如求立方的方法:int Cube(int number);float Cube(float number);double Cube(double number);,第7章 面向对象和类,7.2 命名空间 在许多高级语言中,为了使编译系统内核尽量小,常常把每次编译中肯定要用到的部分放入编译内核,而将其他部分生成独立的单元放入到外围,
11、用户在使用时,通过特定的命令将其调入。例如:C和C+语言中,系统将许多函数和预定义预存到一些称为头文件的文本文件中,用户在使用时,通过#include的命令就可以把这一部分调入并和源程序一起编译。,第7章 面向对象和类,7.2 命名空间 在C#中,系统提供了命名空间来组织程序。在.NET编程环境中,命名空间是一个很重要的概念,它提供了一个逻辑上的层次结构体系。命名空间既可以作为程序的内部组织系统,又可以作为程序的外部组织系统。当作为外部组织系统时,命名空间中的元素可以为其他程序所用。,第7章 面向对象和类,7.2.1 命名空间的声明 命名空间的声明方法为:namespace 命名空间名 命名空
12、间定义体;命名空间前面不需要有任何修饰符,命名空间声明的最后一个分号可以省略。,第7章 面向对象和类,7.2.1 命名空间的声明 一个C#程序可以包含一个或多个编译单元,每个编译单元包含在一个独立的源文件中(编译单元就是能够被编译的最小单位)。当C#程序被编译时,编译器会对程序的所有编译单元进行统一处理。在一个编译单元中命名空间名的声明必须惟一,不能出现同名命名空间,否则系统会出现编译错误。另外,虽然编译单元可能会相互依赖,但编译单元使用的命名空间调用语句只对本单元的属性和命名空间成员声明产生影响,不会影响到其他的编译单元中。,形式1:namespace NameSpaceOutside/命名
13、空间NameSpaceOutside的定义体部分 namespace NameSpaceInside/命名空间NameSpaceInside的定义体部分,形式2:namespace NameSpaceOutside.NameSpaceInside/命名空间NameSpaceInside的定义体部分,命名空间中的各个成员,如果没有另外声明,默认的访问修饰符是public,在其他命名空间中可以直接访问。命名空间声明时可以嵌套。例如:,如果在一个命名空间中使用其他已定义好的命名空间,只需要在这个命名空间使用using语句便可对其他命名空间进行引用。例如:,Namespace MyNameSpace
14、using System;using NameSpaceOutside;/命名空间的其他定义部分,在该例中,命名空间MyNameSpace在定义体中引用了系统命名空间System和此前定义的命名空间NameSpaceOutside。注意,在一个命名空间体内,如果要引用其他命名空间,应该在声明其他任何类型之前引用。在该例中,如果把两行using命令放置到“命名空间的其他定义部分”之后就会出现编译错误。,如果多个命名空间具有相同的完整合法名称,那么这几个命名空间属于一个命名空间。,namespace NameSpace class A namespace NameSpace class B,该例中
15、,两个命名空间声明具有相同的完整合法名NameSpace,所以它们属于同一个命名空间。此后对命名空间NameSpace中的类访问时,只需要直接使用NameSpace.A或NameSpace.B即可。,第7章 面向对象和类,7.2.2 命名空间的成员 在一个命名空间中可以包含多个成员声明,这些声明共同组成了这个命名空间的成员。命名空间的成员类型多种多样,可以是一个类、结构、接口、枚举、委托等结构,也可以是另一个命名空间。无论是哪一种,命名空间成员类型声明都分别和各自类型声明要求一致。,第7章 面向对象和类,7.2.2 命名空间的成员 类型声明可以出现在编译单元的第一行中作为顶层声明,也可以出现在
16、命名空间、类或结构的内部作为成员声明。如果类型声明以顶层声明出现,新声明的类型作为一个独立于其他编译单元的类型,此时,这个类型的名字本身就是它的完整合法名称。如果一个类型声明在一个命名空间、类或结构内部,那么此类型就以它所在的命名空间、类或结构的成员身份出现,它的完整合法名应该与所在命名空间、类或结构关联起来表示,中间以“.”隔开。例如:用S代表要声明的类型,N代表命名空间、类或结构。如果S是顶层声明,则S的完整合法名就是简单的类型S,如果类型S声明在N内部,则S的完整合法名就是N.S,第7章 面向对象和类,7.2.2 命名空间的成员 对类型声明的访问权限与该类型声明所处的位置有关:(1)在编
17、译单元或者命名空间中声明的类型,可以具有公有(public)或内部(internal)两种访问权限。默认的访问权限是内部。(2)在类中声明的类型,访问权限可以是公有(public)、保护(protected)、内部(internal)、私有(private),默认的访问方式是私有。(3)在结构中声明的类型,访问权限可以是公有(public)、保护(protected)、私有(private),默认的访问方式是私有。,第7章 面向对象和类,7.2.3 命名空间的使用 在C#中,命名空间的调用是通过using指令实现的。using指令有两种用途:一种是别名使用指令,可以定义一个命名空间或类型的别名
18、;另一种是命名空间使用指令,可以引入一个命名空间的类型成员。using指令的有效范围是指该指令所属的编译单元或命名空间。,第7章 面向对象和类,7.2.3 命名空间的使用(1)别名使用指令 与C或C+中的#define命令类似,C#中可以使用别名使用指令为命名空间或类型定义别名,此后的程序就可以使用这个别名来代替定义的这个命名空间或类型。别名使用指令的格式为:using 别名=命名空间名或类型名;,利用别名使用指令可以避免使用冗长的命名空间,例如下面代码:,using LastMessage=MyProgram.MessageManagement.AllMessage.NextMessage;
19、,再看下面的例子:,namespace NameSpace1.NameSpace2 class A namespace NameSpace3 using R=NameSpace1.NameSpace2.A;class B:R,namespace NameSpace1.NameSpace2 class A namespace NameSpace3 using R=NameSpace1.NameSpace2;class B:R.A,利用别名使用指令所定义的别名的有效范围是该指令所属的编译单元或命名空间,因此这里的别名在该编译单元或命名空间中应该是惟一的,不能与其它成员同名,否则就会出错。例如:,n
20、amespace NameSpace1namespace NameSpace2 class ClassA namespace NameSpace2 using ClassA=NameSpace1;,这里的三个命名空间中,后两个命名空间名一样,是同一个命名空间。这两个命名空间中,前一个声明了一个类ClassA,后一个引用了一个别名使用指示ClassA。二者虽然类型不同,但由于这两个成员同名,所以出错。,在使用别名时,如果别名所定义的命名空间或命名空间中的成员不存在,同样会出现错误。例如:,namespace NameSpace1 class ClassA namespace NameSpace2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualC 07 面向 对象

链接地址:https://www.31ppt.com/p-6523073.html