- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C面向对象程序设嫉钠
C++面向对象程序设计
?
?
周德华
tzhoudh@jnu.edu.cn
广州暨南大学计算机科学系 ;教材及主要教学参考书;目的和要求; 第一章 引论
?
1.1?? 面向对象思想的由来
1.2?? 面向对象方法学要点
1.3?? 面向对象语言的核心概念
1.4?? 面向对象的思想方法
1.5?? 面向对象与结构化程序设计的比较
1.6?? 面向对象程序设计语言
?1.1 面向对象思想的由来
“面向对象”是软件工程设计的新思想,利用对象,面向对象程序可以比较自然地模拟客观世界,使人们分析、设计和实现软件系统的方法学与认识客观世界的过程尽可能地接近,使我们的程序设计更贴近现实,使描述问题的“问题空间”与解决问题的“方法空间”尽可能地一致。
“对象”是现实生活中经常遇到的表示现实世界的某一具体事物。它既有静态属性,又具有动态行为。面向对象语言的“对象”是将某些数据及作用于其上的一组基本操作(过程)的封装体。
?
;1.2 面向对象方法学要点
⑴ 认为世界由各种对象组成,对象的特征是:
·有一个名字,以区别于其它对象;
·有一个状态,用以描述其特征;
·有一组操作,每个操作决定了对象的功能或行为;
·对象的操作又分为自身所承受的操作和施加于其它对象的操作。
⑵ 所有的对象划分成各种“对象类”
每个对象类均定义了一组方法(Method),所谓方法,是允许施加于该类对象上的各种操作。对象是某对象类的实例。
⑶ 对象间的联系靠消息(Message)传递
由于对象的封装性,一切外部对对象的作用,只能靠发送消息,再通过对象自身的行为(方法)来实现。
⑷ 对象类间构成层次结构
从而使上一层对象类性质被下一层的对象类所继承,有利于避免信息冗余,实现软件的重用。
;1.3 面向对象语言的核心概念
问题空间:对象(实体) 消息 对象(实体)?
程序空间:(类)、数据封装、继承、多态性。
一、数据封装(Encapsulation)
数据封装是将一个数据和对该数据进行的操作集合紧密地结合在一起构成一个整体,又称为“对象”。
对象的外部特性:“能接受那些消息”,“具有那些处理能力”;(外部可见)
对象的内部特性:“对象行为实现的处理算法,保存内部状态的私有数据”。(外部不可见)。对象的这种性质称为信息隐蔽。
二、继承性(Inheritance)
对象的类可组成一个层次结构,上层为超类,下层为派生类,这样的层次结构的重要性质为继承性。;三、多态性(Polymorphism)
在OOP中,一个名字,多种语义;或相同界面,多种实现。(相同的操作对不同的类对象有不同的行为)
●??? 重载___可表达出最简单的多态性,如
void f(int, int, char )
void f(char, float )
●??? 虚函数___强调单界面,多实现版本。?
四、类属(Genericity)
把类的类型作为参数传递给别的模块__类属机制,又称为“参数化模板”。
;1.4 面向对象的思想方法
面向对象(Object-Oriented)是一种新的系统设计思想,一种新的程序设计方法。
一、如何按对象方式思维
[要点]
① 每个对象严格局部化(每个对象仅管自己的实现);
② 根据局部图像,寻找对象,并将对象进行组合;
③ 对象的表述方法(CRC法):
· 对象取名(Class name)
· 表位(Responsibilities)
· 合作者(Collaborators)
④ 将继承决策推迟至设计后期。
;;1.5 面向对象与结构化程序设计的比较
1.结构化程序设计要点
· 设计思路:自顶向下,逐步求精;
· 程序结构:按功能划分成若干个基本模块,模块间形成树状关系,而每个模块内部均由顺序、选择和循环3种基本结构组成;
· 程序设计方法:采用模块分解与功能抽象,将一较复杂的程序系统任务分解成易于控制、处理的子任务;
· 主要缺点:数据与程序的分离;存在错误的数据调用正确的程序模块,或正确的数据调用错误的程序模块。
;2.为什么需要OOP
Smalltalk的设计师Alankay曾说过:“当复杂度上升的时候,结构决定了材料。”他举了砖头架通道的例子,利用拱形原理可以使较少的材料来横跨较大的距离,且很坚固。类似地,软件系统目前采用了许多结构化方式组织软件,不仅将原材料堆积(高级语言、汇编等),且通过数据结构、算法可以把这些组件弄得很复杂。当系统变得很大时,复杂度随之上升。简单的堆积,不仅损坏了整个系统的完整性,且导致了一个极脆弱的系统。
;3.两者的比较
⑴ 模块与对象;
对象 模块
⑵ 过程调用与消息传
文档评论(0)