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