面向对象程序化C++语言_第1页
面向对象程序化C++语言_第2页
面向对象程序化C++语言_第3页
面向对象程序化C++语言_第4页
面向对象程序化C++语言_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、CPU指令系统,由0、1序列构成的指令码组成如:10000000 加 10010000 减用助记符号描述的指令系统如 ADD A, B面向机器的语言程序设计是数据被加工的过程客观世界可以分类,对象是类的实例对象是数据和方法的封装对象间通过发送和接受消息发生联系程序设计关键是定义类,并由类派生对象1.1 1.1 面向对象方法的起源面向对象方法的起源 人们就开始寻求一种更能反映人们就开始寻求一种更能反映,这就是,这就是“”技术。技术。 50 50年代的程序都是用指令代码或汇编语言编写的。年代的程序都是用指令代码或汇编语言编写的。 60 60年代高级语言的出现大大简化了程序设计,缩年代高级语言的出现

2、大大简化了程序设计,缩短了软件开发周期。短了软件开发周期。 自自6060年代末到年代末到7070年代初,出现了大型软件系统,年代初,出现了大型软件系统,如操作系统、数据库,这给程序设计带来了新的问题。如操作系统、数据库,这给程序设计带来了新的问题。可靠性差,错误多,且不易维护和修改可靠性差,错误多,且不易维护和修改- -“”。1.1 1.1 面向对象方法的起源面向对象方法的起源 1968年北约组织提出年北约组织提出“”的概念。的概念。 从强调从强调为重点转向以为重点转向以为重点,为重点,将程序从将程序从转向相互作用的转向相互作用的。 1969年,年,E.W.Dijkstra首先提出了首先提出了

3、的的概念,他强调从概念,他强调从上来研究程序设计。上来研究程序设计。 用结构化程序设计的方法编写出来的程序不仅用结构化程序设计的方法编写出来的程序不仅。 进入进入8080年代,由于一系列高技术的研究,如年代,由于一系列高技术的研究,如等领域的研究等领域的研究都迫切要求都迫切要求作为支撑。作为支撑。 提出对提出对的管理。的管理。具有具有,以便于大型软件的,以便于大型软件的。 自自8080年代以来,出现了年代以来,出现了流派,流派,研制出了多种面向对象程序设计语言(简称为研制出了多种面向对象程序设计语言(简称为OOPLOOPL:Object Oriented Programming Object

4、Oriented Programming LanguageLanguage),如),如和当前使用和当前使用在在InternetInternet上的平台无关语言上的平台无关语言等。等。 类本身具有很完整的类本身具有很完整的,可以使用它作为编程,可以使用它作为编程中的模块单元,满足模块独立自治的需求。再加上中的模块单元,满足模块独立自治的需求。再加上,更有助于简化大型软件和大量重复定义的,更有助于简化大型软件和大量重复定义的模块,增强了模块的模块,增强了模块的。1.2 1.2 面向对象是软件方法学的返朴归真面向对象是软件方法学的返朴归真 研究的研究的统称为统称为。面向对象的方法正是以面向对象的方法

5、正是以作为最基本元素作为最基本元素的一种分析问题和解决问题的方法。的一种分析问题和解决问题的方法。传统的结构化方法强调的是传统的结构化方法强调的是,每,每个模块都是一个过程。结构化方法处理问题是以过程为个模块都是一个过程。结构化方法处理问题是以过程为中心的。中心的。面向对象强调的是面向对象强调的是,用,用来来描述事物和过程。描述事物和过程。对象包含对象包含,是对数据和功能的,是对数据和功能的抽象和统一。抽象和统一。以对象为中心的方法以对象为中心的方法,具有独特的,具有独特的,能更好地适应复杂大系统不断发展与变化的要,能更好地适应复杂大系统不断发展与变化的要求。求。1.31.3结构化程序设计与面

6、向对象程序设计结构化程序设计与面向对象程序设计 1. 1.结构化程序设计结构化程序设计 程序程序= =数据结构数据结构+ +算法算法+ +程序设计语言程序设计语言+ +语言环境语言环境 1. 结构化程序设计方法结构化程序设计方法 2.2.面向对象程序设计面向对象程序设计程序设计的新思维程序设计的新思维是是,通过将内存分块,通过将内存分块,每个模块(即对象)在功能上相互之间保持相对独立。每个模块(即对象)在功能上相互之间保持相对独立。当对象的一个成员函数被调用时,对象执行其内部的代当对象的一个成员函数被调用时,对象执行其内部的代码来响应这个调用,这使对象呈现出一定的行为。行为码来响应这个调用,这

7、使对象呈现出一定的行为。行为及其结果就是该对象的功能。及其结果就是该对象的功能。是一种是一种。面向对象的观点认为,客观世界是。面向对象的观点认为,客观世界是。每种对象都有。每种对象都有,不同对象间的,不同对象间的就构成就构成了了,并进而构成,并进而构成。按照这。按照这样的思想设计程序,就是面向对象的程序设计。样的思想设计程序,就是面向对象的程序设计。“面向面向对象对象”不仅仅作为一种技术、更作为一种方法贯穿于软不仅仅作为一种技术、更作为一种方法贯穿于软件设计的各个阶段。件设计的各个阶段。 是在面向过程的程序设计基础上的是在面向过程的程序设计基础上的质的飞跃。面向对象方法的产生,是计算机科学发展

8、的质的飞跃。面向对象方法的产生,是计算机科学发展的要求。面向对象的技术在系统程序设计、数据库及多媒要求。面向对象的技术在系统程序设计、数据库及多媒体应用等领域都得到广泛应用。体应用等领域都得到广泛应用。 2. 面向对象程序设计面向对象程序设计OOP1.4 1.4 面向对象的基本概念面向对象的基本概念 和面向对象系统的特性和面向对象系统的特性1.4.1 1.4.1 面向对象的基本概念面向对象的基本概念1.1.对象对象(object)(object)(1)(1)具有唯一标识名,可以区别于其他对象。具有唯一标识名,可以区别于其他对象。(2)(2)具有一个状态,由与其相关联的属性值集合所表征。具有一个

9、状态,由与其相关联的属性值集合所表征。(3)(3)有一组操作方法即服务,每个操作决定对象的一种行为。有一组操作方法即服务,每个操作决定对象的一种行为。(4)(4)一个对象的成员仍可以是一个对象。一个对象的成员仍可以是一个对象。(5)(5)模块独立性模块独立性。(6)(6)动态连接性动态连接性(7)(7)易维护性易维护性 从逻辑上看,一个对象是独立存在的模从逻辑上看,一个对象是独立存在的模块。模块内部状态不因外界的干扰而改块。模块内部状态不因外界的干扰而改变,也不会涉及到其他模块;模块间的变,也不会涉及到其他模块;模块间的依赖性极小或几乎没有;各模块可独立依赖性极小或几乎没有;各模块可独立地被系

10、统所组合选用,也可被程序员重地被系统所组合选用,也可被程序员重用,不必担心破坏其他模块。用,不必担心破坏其他模块。客观世界中的对象之间是有联系的,在客观世界中的对象之间是有联系的,在面向对象程序设计中,通过消息机制,面向对象程序设计中,通过消息机制,把对象之间动态连接在一起,使整个机把对象之间动态连接在一起,使整个机体运转起来,便称为对象的连接性。有体运转起来,便称为对象的连接性。有一组操作(服务),每一个操作决定对一组操作(服务),每一个操作决定对象的一种功能或行为。象的一种功能或行为。 在面向对象系统中,并不是将各个具体的对象都在面向对象系统中,并不是将各个具体的对象都进行描述,而是忽略其

11、非本质的特性,找出其共性,进行描述,而是忽略其非本质的特性,找出其共性,将对象划分成不同的类,这一过程为抽象过程。将对象划分成不同的类,这一过程为抽象过程。类是类是,是,是。在类的描述中,。在类的描述中,每个类要有一个名字标识,用以表示一组对象的共同每个类要有一个名字标识,用以表示一组对象的共同特征。类中的每个特征。类中的每个都是该类的都是该类的。类提供了完整的解决特定问题的能力,因为类描类提供了完整的解决特定问题的能力,因为类描述了数据结构(对象属性)、算法(服务、方法)和述了数据结构(对象属性)、算法(服务、方法)和外部接口(消息协议),是一种外部接口(消息协议),是一种用户自定义的数据类

12、用户自定义的数据类型型。 3. 消息消息(message) 消息是面向对象系统中消息是面向对象系统中,是,是。发送消息的对象称为发送消息的对象称为,接受消息的对象称为,接受消息的对象称为。消息具有消息具有三个性质三个性质:(1) (1) 同一对象可接收不同形式的同一对象可接收不同形式的;(2) (2) 相同形式的消息可以送给相同形式的消息可以送给,;(3) (3) 消息的发送可以不考虑具体的接收者,对象可消息的发送可以不考虑具体的接收者,对象可以响应消息,也可以对消息不予理会,以响应消息,也可以对消息不予理会,。 对象之间传送的消息一般由三部分组成:对象之间传送的消息一般由三部分组成:接受对象

13、名、调用操作名和必要的参数。接受对象名、调用操作名和必要的参数。 在面向对象程序设计中,消息分为两类:在面向对象程序设计中,消息分为两类:公有消息和私有消息。假设有一批消息发向同公有消息和私有消息。假设有一批消息发向同一个对象,其中一部分消息是由其他对象直接一个对象,其中一部分消息是由其他对象直接向它发送的,称为公有(向它发送的,称为公有(publicpublic)消息;另一)消息;另一部分消息是它向自己发送的,称为私有部分消息是它向自己发送的,称为私有(privateprivate)消息。)消息。方法就是对象所能执行的操作。方法就是对象所能执行的操作。方法的界面就是消息的模式,它给出了方法的

14、界面就是消息的模式,它给出了方法的调用协议;方法体则是实现某种操作的一系列方法的调用协议;方法体则是实现某种操作的一系列计算步骤,也就是一段程序。消息和方法的关系是:计算步骤,也就是一段程序。消息和方法的关系是:对象根据接收到的消息,调用相应的方法;反过来,对象根据接收到的消息,调用相应的方法;反过来,有了方法,对象才能响应相应的消息。所以消息模式有了方法,对象才能响应相应的消息。所以消息模式与方法界面应该是一致的。同时,只要方法界面保持与方法界面应该是一致的。同时,只要方法界面保持不变,方法体的改动不会影响方法的调用。在不变,方法体的改动不会影响方法的调用。在C+C+语言语言中方法是通过函数

15、来实现的,称为中方法是通过函数来实现的,称为成员函数。成员函数。 1.4.2 1.4.2 面向对象系统的特性面向对象系统的特性(1 1) 抽象性抽象性抽象是一种从一般的观点看待事物的方法,它要抽象是一种从一般的观点看待事物的方法,它要求程序员集中于事物的求程序员集中于事物的本质特征本质特征,而不是具体细节或,而不是具体细节或具体实现。类的概念来自人们认识自然、认识社会的具体实现。类的概念来自人们认识自然、认识社会的过程。在这一过程中,人们主要使用过程。在这一过程中,人们主要使用两种方法两种方法:从特:从特殊到一般的殊到一般的归纳法归纳法和从一般到特殊的和从一般到特殊的演绎法演绎法。在归纳。在归

16、纳的过程中,我们从一个个具体的事物中把共同的特征的过程中,我们从一个个具体的事物中把共同的特征抽取出来,形成一个一般的概念,这就是抽取出来,形成一个一般的概念,这就是“归类归类”;在演绎的过程中,我们又把同类的事物,根据不同的在演绎的过程中,我们又把同类的事物,根据不同的特征分成不同的小类,这就是特征分成不同的小类,这就是“分类分类”。对于一个具。对于一个具体的类,它有许多具体的个体,我们称这些个体叫做体的类,它有许多具体的个体,我们称这些个体叫做“对象对象”。 所谓数据封装就是指所谓数据封装就是指一组数据和与这组数据有关的一组数据和与这组数据有关的操作集合组装在一起,形成一个能动的实体,也就

17、操作集合组装在一起,形成一个能动的实体,也就是对象是对象。数据封装就是给数据提供了与外界联系的。数据封装就是给数据提供了与外界联系的标准接口,无论是谁,只有通过这些接口,使用规标准接口,无论是谁,只有通过这些接口,使用规范的方式,才能访问这些数据。数据封装是软件工范的方式,才能访问这些数据。数据封装是软件工程发展的必然产物,使得程序员在设计程序时可以程发展的必然产物,使得程序员在设计程序时可以专注于自己的对象,同时也切断了不同模块之间数专注于自己的对象,同时也切断了不同模块之间数据的非法使用,减少了出错的可能性。据的非法使用,减少了出错的可能性。 从已有的对象类型出发建立一种新的对象类型,使它

18、从已有的对象类型出发建立一种新的对象类型,使它继承原对象的特点和功能,这种思想是面向对象设计继承原对象的特点和功能,这种思想是面向对象设计方法的主要贡献。继承是对许多问题中分层特性的一方法的主要贡献。继承是对许多问题中分层特性的一种自然描述,因而也是类的具体化和被重新利用的一种自然描述,因而也是类的具体化和被重新利用的一种手段,它所表达的就是一种对象类之间的相交关系。种手段,它所表达的就是一种对象类之间的相交关系。它使得某类对象可以继承另外一类对象的特征和能力。它使得某类对象可以继承另外一类对象的特征和能力。继承所具有的作用有两个方面:一方面可以减少代码继承所具有的作用有两个方面:一方面可以减

19、少代码冗余;另一方面可以通过协调性来减少相互之间的接冗余;另一方面可以通过协调性来减少相互之间的接口和界面。口和界面。 从继承源上划分从继承源上划分继承可分为单继承(单一继承)和多继承可分为单继承(单一继承)和多继承(多重继承)。继承(多重继承)。 从继承内容上从继承内容上继承可分为取代继承、包含继承、受限继承可分为取代继承、包含继承、受限继承、特化继承。继承、特化继承。 (1) (1) 取代继承取代继承:例如一个徒弟从其师傅那里学到师傅:例如一个徒弟从其师傅那里学到师傅的所有技术,则在任何需要师傅的地方都可以由徒弟来的所有技术,则在任何需要师傅的地方都可以由徒弟来代替。代替。 (2) (2)

20、 包含继承包含继承:例如交通工具是一类对象,汽车是一:例如交通工具是一类对象,汽车是一种特殊的交通工具。汽车具有了交通工具的所有特征,种特殊的交通工具。汽车具有了交通工具的所有特征,任何一辆汽车都是一种交通工具,这便是包含继承,即任何一辆汽车都是一种交通工具,这便是包含继承,即交通工具包含了汽车的所有特征。交通工具包含了汽车的所有特征。 (3) (3) 受限继承受限继承:例如鸵鸟是一种特殊的鸟,它不能继:例如鸵鸟是一种特殊的鸟,它不能继承鸟会飞的特征。承鸟会飞的特征。 (4) (4) 特化继承特化继承:例如教师是一类特殊的人,他们比一:例如教师是一类特殊的人,他们比一般人具有更多的特有信息,这

21、就是特化继承。般人具有更多的特有信息,这就是特化继承。不同的对象接收到相同的消息时产生多种完不同的对象接收到相同的消息时产生多种完全不同的行为的现象称为全不同的行为的现象称为多态性多态性。C+C+语言支语言支持两种多态性即持两种多态性即编译时的多态性和运行时的多态性编译时的多态性和运行时的多态性。编译时的多态性通过。编译时的多态性通过重载函数重载函数实现,而运行时实现,而运行时的多态性通过的多态性通过虚函数虚函数实现。使用多态性可以大实现。使用多态性可以大大提高了我们解决复杂问题的能力。大提高了我们解决复杂问题的能力。 (4) C(4) C家族家族 在在1919世纪世纪8080年代,年代,C

22、C语言成为一种极其流行、应用非常广语言成为一种极其流行、应用非常广泛的语言。泛的语言。C+C+是在是在C C语言的基础上进行扩充,并增加了类似语言的基础上进行扩充,并增加了类似SmalltalkSmalltalk语言中相应的对象机制。它将语言中相应的对象机制。它将“类类”看作是用户定看作是用户定义类型,使其扩充比较自然。义类型,使其扩充比较自然。C+C+以其高效的执行效率赢得了以其高效的执行效率赢得了广大程序设计员的青睐是一种混合型的面向对象程序设计语广大程序设计员的青睐是一种混合型的面向对象程序设计语言,由于它的出现,才使面向对象的程序设计语言越来越得言,由于它的出现,才使面向对象的程序设计

23、语言越来越得到重视和广泛的应用。到重视和广泛的应用。 面向对象语言可以分为两大类,纯粹的面向对象语言和面向对象语言可以分为两大类,纯粹的面向对象语言和混合型的面向对象语言。在纯粹的面向对象语言中,几乎所混合型的面向对象语言。在纯粹的面向对象语言中,几乎所有的语言成分都是有的语言成分都是“对象对象”,这类语言强调开发快速原型的,这类语言强调开发快速原型的能力;而混合型的面向对象语言,是在传统的过程化语言中能力;而混合型的面向对象语言,是在传统的过程化语言中加入了各种面向对象的语言机制,它所强调的是运行效率。加入了各种面向对象的语言机制,它所强调的是运行效率。真正的面向对象程序设计语言提供了特定的

24、语法成分来保证真正的面向对象程序设计语言提供了特定的语法成分来保证和支持面向对象程序设计,并且提供了继承性、多态性和动和支持面向对象程序设计,并且提供了继承性、多态性和动态链接机制,使得类和类库成为可重用的模块。态链接机制,使得类和类库成为可重用的模块。1.6 1.6 面向对象的系统开发方法面向对象的系统开发方法面向对象的开发方法可分为四个阶段:面向对象的开发方法可分为四个阶段:(1) (1) 系统调查和需求分析。系统调查和需求分析。即对应用系统将要实现的功即对应用系统将要实现的功能以及用户对系统开发的需求进行调查研究。这是所能以及用户对系统开发的需求进行调查研究。这是所有开发方法都必须进行的。有开发方法都必须进行的。(2) (2) 分

温馨提示

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

评论

0/150

提交评论