




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计语言C+青岛大学信息工程学院李建波1 第一章:引论u面向过程和面向对象的区别u面向过程至面向对象的迁移史u面向对象的三大特征u面向对象设计技术举例-CRC方法u面向对象程序设计语言简介uC+名人网址uC+经典书籍推荐uC+最新的发展成果2面向过程和面向对象程序设计的区别 u 面向过程设计方法学传统的程序设计方法是模块化(或结构化)的,具体步骤为:1. 整个软件系统功能逐步细化为多个小的功能功能划分。2. 多个小的功能对应由一个模块(如函数、过程、分程序、子程序等)来实现。3. 多个模块合作完成较大的功能,所有模块的合作完成整个软件系统的功能。3面向过程和面向对象程序设计的区别
2、u面向对象设计方法学 从要解决的问题空间抽象出一个一个的对象,然后利用对象之间的“协作”来共同完成所布置的任务。这里对象是一个综合“属性”和“行为”的集成体u二种方法学之间的区别总结 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物(对象)在整个解决问题的步骤中的行为。4面向过程至面向对象的迁移史u 以类型为例数据类型分为三种:简单数据类型:内建(built-in)类型,语言本身提供的类型(int ,char ,float,double
3、)。用户定义数据类型:以简单数据类型为基础,它包含多个简单数据类型成分,这些数据成分是可以直接操作的(struct)。抽象数据类型:在定义数据的同时,必须定义对数据的操作;它的数据成分是不可见的,也不可以直接操作(class)。5面向过程至面向对象的迁移史(续)u抽象数据类型是从更一般的信息隐蔽原则派生出来的。抽象数据类型隐藏了表示的细节,通过过程(或方法)来访问抽象数据对象。对象的表示(属性)是被保护的。u对于抽象类型的使用,必须通过类型的实际例子(对象,相当于c语言中的变量)的使用来体现。6面向过程至面向对象的迁移史(续1)u面向对象语言中所谓的对象,就是上面提到的实体,具体的说,是“将某
4、组数据和使用该数据的一组基本操作封装在一起而形成的一个实体”。对象和类的关系,就像整型变量和整型的关系。7面向过程至面向对象的迁移史(续2)u面向对象的基本思想就是把要构造的系统表示为对象的集合,它的目的是想在某种程度上解决软件面临的两大课题:怎样克服软件的复杂性怎样将现实世界模型(包括它们之间的关系)在计算机中自然地表示出来8面向过程至面向对象的迁移史(续3)u从软件的角度来看,计算是一种仿真。如果每一个被仿真的实体都由一个数据结构来表示,并且将相关的操作信息封装进去,仿真将被简化,可以更方便地刻画对象的内部状态和运动规律。u面向对象就是这样一种适用于直观模型化的设计方法。这意味着设计模型与
5、客观对象之间有近乎一对一的对应关系。这一思想非常利于实现大型的软件系统。9面向过程至面向对象的迁移史(续4)uC+大型应用举例Adobe photoshop,acrobatAlias Wavefront: MayaAmazonGoogle chrome,mapreduceMicrosoft Office word,excel,powerpoint outlookFirefoxMysqlSymbian10面向过程至面向对象的迁移史(续5)u面向对象的最终目标面向对象的目标可以归纳为:对试图利用计算机进行问题求解和信息处理的领域,尽量使用对象的概念,将问题空间中的现实模型映射到程序空间,由此所得到
6、的自然性可望克服软件系统的复杂性,从而得到问题求解和信息处理的更高性能。11面向对象三大特征u封装(Encapsulation)u继承(Inheritance)u多态(Polymorphism)12面向对象三大特征(续1)数据封装数据封装 Data Encapsulation 面向过程语言的做法13面向对象三大特征(续2)数据封装数据封装 Data Encapsulation面向过程语言的做法:实例14面向对象三大特征(续3)数据封装数据封装 Data Encapsulation 面向对象语言的做法15面向对象三大特征(续4)数据封装数据封装 Data Encapsulation 面向对象语言
7、的做法:实例16面向对象三大特征(续5)u数据封装数据封装 Data Encapsulation面向对象语言采用了抽象的方法。而抽象的原则之一就是信息隐藏。数据封装将一组数据和这组数据相关的操作集合封装在一起,形成了一个能动的实体,成为对象。用户不必知道对象行为的实现细节,只需根据对象提供的外部特性接口访问对象。在C+中,实现数据封装的机制是“类(class)”封装是三大特征中最重要的特征,没有封装就没有继承和多态17面向对象三大特征(续6)u继承继承 Inheritanceu继承是面向对象语言的另一个重要的概念。在客观世界中,存在着整体和部分的关系(is part of)、一般和特殊的关系(
8、is kind of),而这两种关系也是初学者容易弄混淆的关系。uis kind of 对应于继承(Inheritance)而is part of 对应聚合(aggregation)18面向对象三大特征(续7) 继承继承 (Inheritance)实例)实例19面向对象三大特征(续8)继承(继承( Inheritance)另外)另外一个实际的例子:20面向对象三大特征(续8)u继承继承 Inheritance在一个的继承树中,每下一层都比上一层更加具体地定义了每种类的特性。反过来,一旦某层的某个特征被确定了下来,那么其下所有的种类都应该包含该特性。这就是“继承”的一般性概念,也是“继承”被用来
9、支持软件复用性的根本。21面向对象三大特征(续9)u继承继承 (Inheritance)中的术语)中的术语在面向对象的语言中,类功能支持继承机制。除了根类,每个类都可以有父类(super/parent class,base class),也可以有它的子类(subclass/child class/derived class)。一个子类从它的父类那里继承了所有的数据和操作,并扩充自己的特殊数据和操作。父类抽象出共同特征,子类表达差别。22面向对象三大特征(续10)u多态性多态性 Polymorphism所谓多态,是指一个名字(或符号)具有多种含义。用户在使用函数编程时,关心的是该函数的功能及其使
10、用接口,并不需要了解该函数的使用接口与函数的哪一种实现方法相匹配(binding)。也就是说,在设计这一级上,我们只关心“施加在对象上的动作是什么”,而不必牵涉“如何实现这个动作”以及“实现这个动作有多少种方法”的细节。23面向对象三大特征(续11)u分为两类:静态多态和动态多态u静态多态:函数重载和运算符重载在面向对象的语言中,函数重载(overload)表达了最简单的多态性。下面是函数重载的例子:void fun(int, int, char);void fun(char, float);void fun(int, int);void fun(float, float);24面向对象三大特
11、征(续12)u运算符重载运算符重载指的是相同的运算符在不同的上下文有不同的解释。例如:两个整数使用+运算符表示它们要做加法,而两个字符串使用+运算符则表示串连接。25面向对象三大特征(续13)u动态多态如果函数调用(接口)与哪个函数实现相匹配是在编译时完成的,称为早期匹配(early binding)或静态联编。如果匹配是在运行时确定的,则称为后期匹配(lately binding)或动态联编。C+提供的虚函数(Virtual Function)提供了后期匹配带来的良好特性。要实现动态联编通常需要继承的支持。26面向对象设计技术举例-CRC方法u按对象方式思维面向对象是一种仿真技术,面向对象设
12、计产生一种与现实具有自然关系的软件系统。面向过程的程序设计方法鼓励全局地看问题,强调系统功能的逐步细化。而在面向对象程序设计中,每个对象严格地是局部的。每个对象管理自己的实现。学习面向对象设计,我们需要将思维方式从全局转到局部,在局部中发现对象。27面向对象设计技术举例-CRC方法(续1)u按对象方式思维设计对象需要做许多决策,怎样将计算部分合理地分配给不同的对象。这叫做分散责任(distributiue responsibility)。这是设计决策的基础,其余都是次要的。CRC方法帮助设计者分散责任,直到设计的最后阶段才考虑问题的总体。28面向对象设计技术举例-CRC方法(续2)u面向对象的
13、CRC方法从以下三个方面来表述对象:1.Class Name。给对象命名,实际上就是对需要处理的问题空间中包含的不同性质的数据进行分类。一个好的具有一致性的名字会为以后设计的正确性奠定基础。本质上就是OOA(Object-Oriented Analysis),也就是正确的发现对象并命名。29面向对象设计技术举例-CRC方法(续3)u面向对象的CRC方法从以下三个方面来表述对象:2.Responsibilities。每个对象完成设计中的一个小目标的功能,它实现了这个系统状态的某一部分。责任要简明扼要,不要太多,同时不要让对象负责自己不需要承担的责任。本质上OOD(Object Oriented
14、Design)中的一部分,为单个类指派责任也就是指派每个类的公开接口。30面向对象设计技术举例-CRC方法(续4)u面向对象的CRC方法从以下三个方面来表述对象:3.Collaborators。每个对象都可能依赖于其它对象来完成任务。合作者应该不要多,并且应该实用。尽量避免设计同所有对象打交道的也就是全局的对象。本质上是OOD的另外一部分,也就是建立类与类之间的关系和层次。31面向对象程序设计语言简介u面向对象的程序设计语言Simula 67(Simula):20世纪60年代Smalltalk :20世纪80年代C+ :20世纪80年代早期Java :20世纪90年代C# :21世纪初32C+名人网址、Bjarne Stroustruphttp:/ B. Lippmanhttp:/ Meyershttp:/ Eckelhttp:/http:/ Eckel 博客中文版C+名人网址(续1) 5、Nicolai M. Josuttis http:/ 6、Herb Sutter http:/www.gotw.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 郑州财税金融职业学院《影视欣赏》2023-2024学年第一学期期末试卷
- 工厂员工职业道德培训
- 镇江市高等专科学校《科技文献检索(理工)》2023-2024学年第一学期期末试卷
- 《第三单元 我们都是好朋友 歌表演 彝家娃娃真幸福》(教学设计)-2023-2024学年人教版音乐一年级上册
- 员工入住宿舍培训
- 中学生睡眠管理
- 交完首付的合同范本
- 花束买卖合同范本
- 2025年育婴师考试学习路径规划试题及答案
- Module 2 Unit 5 Friends Period 3 Oliver feels bored.(教学设计)-2024-2025学年牛津上海版(三起)英语五年级上册
- 《平凡的世界》教学设计 2024-2025学年人教版高中语文选修《中国小说欣赏》
- 2024年四川省成都市“蓉漂”人才荟武候区招聘23人历年(高频重点提升专题训练)共500题附带答案详解
- 网课智慧树知道《运动技能学习与控制(牡丹江师范学院)》章节测试答案
- 7.1.1条件概率(一)课件高二下学期数学人教A版选择性
- 全国高考物理高考题说题比赛一等奖课件物理说题李焕景
- 华为MA5800配置及调试手册
- 巴金名著导读《寒夜》
- 2024年建筑业10项新技术
- 《环境建设工程概算、预算编制办法》
- 2024年上海外服招聘笔试参考题库附带答案详解
- 改善患者就医体验培训课件
评论
0/150
提交评论