ch01_前言.ppt

上传人:hyn****60 文档编号:70988689 上传时间:2023-01-31 格式:PPT 页数:95 大小:1.14MB
返回 下载 相关 举报
ch01_前言.ppt_第1页
第1页 / 共95页
ch01_前言.ppt_第2页
第2页 / 共95页
点击查看更多>>
资源描述

《ch01_前言.ppt》由会员分享,可在线阅读,更多相关《ch01_前言.ppt(95页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、面向对象分析和设计面向对象分析和设计今天你OO了吗?联系方式l郑武 13720110570 QQ:467869227l课程考试:l闭卷l期末成绩70%+平时成绩30%教材及参考书l教 材:刁成嘉主编 UML系统建模与分析设计 北京:机械工业出版社 2007l参考书:1谭云杰 大象Thinking in UML(第二版)北京:中国水利水电出版社 20122张龙祥 UML与系统分析设计(第二版)北京:人民邮电出版社 2007 3麻志毅 面向对象系统与分析 北京:机械工业出版社 2008计算机科学与技术的课程体系l计算机软件与理论计算机软件与理论计算机软件计算机软件计算机理论(离散数学、计算理论)计

2、算机理论(离散数学、计算理论)l计算机体系结构计算机体系结构计算机体系结构、数字逻辑、计算机原理计算机体系结构、数字逻辑、计算机原理l计算机应用计算机应用计算机网络与通信、控制与接口、信息安全计算机网络与通信、控制与接口、信息安全人工智能、图形学、图像处理、多媒体技术人工智能、图形学、图像处理、多媒体技术软件课程体系与知识结构(1/2)l1、算法与数据结构、算法与数据结构pA.数据结构数据结构pB.算法分析与设计、并行计算算法分析与设计、并行计算l2、操作系统、操作系统pA.操作系统操作系统pB.分布式系统、网络编程技术分布式系统、网络编程技术l3、编译与计算机语言、编译与计算机语言pA.编译

3、原理、高级语言程序设计编译原理、高级语言程序设计(C+,JAVA,C#)(大大部分同学会有一个误区,以为精通编程语言就掌握了部分同学会有一个误区,以为精通编程语言就掌握了面向对象)面向对象)pB.形式语言与自动机、形式语义学形式语言与自动机、形式语义学软件课程体系与知识结构(2/2)l4、数据库技术、数据库技术pA.数据库系统原理(数据库系统原理(Oracle、mysql、SQL2005)pB.数据仓库、分布式数据库数据仓库、分布式数据库l5、软件方法学、软件方法学pA.面向对象方法学(面向对象方法学(面向对象分析与设计、设计模式面向对象分析与设计、设计模式(优化类的设计)(优化类的设计)、结

4、构化方法、结构化方法pB.软件复用技术、软件体系结构软件复用技术、软件体系结构l6、软件工程、软件工程pA.软件工程软件工程pB.软件项目管理、软件质量管理、软件环境与工具软件项目管理、软件质量管理、软件环境与工具学这门课程是干什么的?l做什么?:提取对象(什么是对象,对象的特点)l如何?从具体的软件项目中提取对象l工具?有什么工具来描述对象。(描述对象之间的联系)l请注意:我的面向对象的编程目标从来请注意:我的面向对象的编程目标从来不是复用,提供了一种解决复杂问题的不是复用,提供了一种解决复杂问题的一种方式。一种方式。(Grady Booch)请思考这些项目设计时会碰到什么问题?l学籍管理系

5、统l教务管理系统l购物网站l资产管理系统l壁球管理系统l愤怒的小鸟游戏l面向对象软件工程方法lOOA(做什么)lOOD(怎么做)lOOP(如何实现)lUML不是OOA/D,也不是方法,它是一种图形表示l如果不掌握对象思想,那UML或任何CASE毫无用处l需要一种用于OOA/D的语言,思考的工具,沟通的形式,UML就是这种工具课程目标:l分析(analysis)-对问题和需求的调查研究l设计(design)满足需求的概念上的解决方案,为实现服务l面向对象分析(object-oriented analysis)-在问题域内发现和描述对象l面向对象设计(object-oriented design)

6、如何定义软件对象以及它们如何协作以实现需求1.5 1.5 面向对象方法的发展史及现状简介面向对象方法的发展史及现状简介面向对象方法概论面向对象方法概论1.1 1.1 传统开发方法中存在的问题传统开发方法中存在的问题1.2 1.2 面向对象的基本思想面向对象的基本思想1.3 1.3 面向对象的主要概念及基本原则面向对象的主要概念及基本原则1.4 1.4 面向对象方法的主要优点面向对象方法的主要优点传统型商务以数据为中心p 在二十世纪六十年代以前在二十世纪六十年代以前 p 软件系统都是较小且相对简单的软件系统都是较小且相对简单的p 所用的编程语言都是十分简单(所用的编程语言都是十分简单(Fortr

7、an,CobolFortran,Cobol等)等)p 时兴个人英雄主义,即崇尚程序员的个人技能时兴个人英雄主义,即崇尚程序员的个人技能 p 代码是面条式的,特别是代码中含有代码是面条式的,特别是代码中含有GOTOGOTO语句语句 随着软件复杂性的增长,随心所欲的方法就不再是可接受随着软件复杂性的增长,随心所欲的方法就不再是可接受的了,因为这样的代码是很难维护的。的了,因为这样的代码是很难维护的。高层次语言的引入有助于解决一些与复杂性有关的问题,高层次语言的引入有助于解决一些与复杂性有关的问题,但这些语言并不能充分解决问题。但这些语言并不能充分解决问题。那时,无开发方法而言那时,无开发方法而言

8、1.1 1.1 传统开发方法中存在的问题传统开发方法中存在的问题1 1、功能分解法、功能分解法(起于二十世纪七十年代)(起于二十世纪七十年代)(1/4)(1/4)功能分解法(功能分解法(function decompositionfunction decomposition)功能分解功能分解 功能功能+子功能子功能 +功能接口功能接口以系统需要提供的功能为中心来组织系统。以系统需要提供的功能为中心来组织系统。首首先先定定义义各各种种功功能能,然然后后把把功功能能分分解解为为子子功能,同时定义功能之间的接口。功能,同时定义功能之间的接口。对对较较大大的的子子功功能能进进一一步步分分解解,直直到到

9、可可给给出出明确的定义。明确的定义。根根据据功功能能子子功功能能的的需需要要设设计计数数据据结结构构和和算法算法。功能 功能 功能 系统 子功能子功能子功能子功能分解分解分解分解分解分解工作过程:工作过程:一层层地进行功能分解一层层地进行功能分解功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块功能功能模块模块得到的系统模型:得到的系统模型:由模块及其接口构成由模块及其接口构成1 1、功能分解法、功能分解法(起于二十世纪七十年代)(起于二十世纪七十年代)(2/4)优点:优点:p 当时的计算机应用还不是

10、很普及,只是特定的用户按自当时的计算机应用还不是很普及,只是特定的用户按自己的需要,对软件系统做出了功能性的要求,有据可寻。己的需要,对软件系统做出了功能性的要求,有据可寻。p 在相当大的程度上,解决了以前存在的问题。特别是与在相当大的程度上,解决了以前存在的问题。特别是与模块化编程结合使用,效率更高。模块化编程结合使用,效率更高。p 删除删除GOTOGOTO语句,使得软件能得到有效的维护。语句,使得软件能得到有效的维护。p 与模块化编程相结合,使得软件能得到有效的维护与模块化编程相结合,使得软件能得到有效的维护 p 直接地反映用户的需求直接地反映用户的需求,所以工作很容易开始。所以工作很容易

11、开始。1 1、功能分解法、功能分解法(起于二十世纪七十年代)(起于二十世纪七十年代)(3/4)缺点:缺点:p 开头容易,结束难。开头容易,结束难。p 结构化分析和设计注重处理功能,对所处理的数据放于结构化分析和设计注重处理功能,对所处理的数据放于次要的位置。次要的位置。p 对需求变化的适应能力很差。对需求变化的适应能力很差。p 局部的错误和局部的修改很容易产生全局性的影响。局部的错误和局部的修改很容易产生全局性的影响。p 不能直接地映射不能直接地映射问题域问题域,很难检验分析结果的正确性。,很难检验分析结果的正确性。1 1、功能分解法、功能分解法(起于二十世纪七十年代)(起于二十世纪七十年代)

12、(4/4)数据流法数据流法 数据流数据处理(加工)数据存储端点处数据流数据处理(加工)数据存储端点处理说明数据字典理说明数据字典 又称作结构化分析。又称作结构化分析。基本策略是跟踪数据流,即研究问题域中基本策略是跟踪数据流,即研究问题域中数据如何流动以及在各个环节上进行何种处理,从而发现数据流数据如何流动以及在各个环节上进行何种处理,从而发现数据流和加工和加工。问题域被映射为数据流图(问题域被映射为数据流图(DFDDFD),),并用处理说明和数据并用处理说明和数据字典进行详细说明。字典进行详细说明。数据流数据流加工加工数据存储数据存储端点端点处理说明处理说明数据词典数据词典2 2、数据流法(结

13、构化分析法)、数据流法(结构化分析法)(1/2)(1/2)数据流图的图形记号数据流图的图形记号外部实体外部实体位于软件系统边界之外位于软件系统边界之外的信息生产者或消费者的信息生产者或消费者转换转换转换数据流的处理过程,转换数据流的处理过程,又称泡(又称泡(bubble)数据源数据源数据流数据流为一个或多个转换提供数据源或数据为一个或多个转换提供数据源或数据存储服务的缓冲区、文件或数据库存储服务的缓冲区、文件或数据库在转换之间有向流动的在转换之间有向流动的数据项或数据项集合数据项或数据项集合 “与与”,即同时输入,即同时输入/出;出;+“或或”,即至少一项输入,即至少一项输入/出;出;“异或异

14、或”,即非同时输入,即非同时输入/出出*“家庭保安系统家庭保安系统”顶级数据流图顶级数据流图警报类别警报类别显示信息显示信息电话拨号音频电话拨号音频传感数据传感数据用户命令用户命令家庭保家庭保安系统安系统控制面板控制面板传感器传感器显示器显示器电话机电话机警报器警报器“家庭保安系统家庭保安系统”1级数据流图级数据流图警报类别警报类别电话拨电话拨号音频号音频传感信息传感信息配置数据配置数据传感数据传感数据配置数据配置数据原口令原口令口令有效口令有效/口令无效口令无效口令口令配置数据配置数据配置命令配置命令显示信息显示信息启动启动/停止时停止时的显示信息的显示信息口令有效口令有效启动启动/停止停止

15、命令命令用户命令用户命令配置信息配置信息控制面板控制面板用用户户命命令处理令处理系统系统配置配置口令口令核对核对信息信息显示显示启动启动/停止停止处理处理显示面板显示面板传感器传感器监测监测传感器传感器警报器警报器电话机电话机数据字典举例数据字典举例家庭保安系统中的家庭保安系统中的“电话号码电话号码”数据条目可以定义如下:数据条目可以定义如下:电话号码分机号电话号码分机号|外线号码外线号码分机号分机号1816|1817|1858外线号码外线号码9+(市话号码(市话号码|长话号码)长话号码)长话号码长话号码0+(区号(区号+市话号码)市话号码)区号区号*任何长度为任何长度为3的数字串的数字串*市

16、话号码局号市话号码局号+分局号分局号局号局号395|396|397|303|304|305分局号分局号*任何长度为任何长度为4的数字串的数字串*数据流数据流加工加工数据存储数据存储端点端点处理说明处理说明数据字典数据字典跟踪数据流,从而发现数据跟踪数据流,从而发现数据流和加工。流和加工。优点:优点:有严格的法则,逐步求精,较强调研究问题域。有严格的法则,逐步求精,较强调研究问题域。缺点:缺点:p 在概念上,不能直接地映射到问题域中的事物在概念上,不能直接地映射到问题域中的事物p 对需求变化的适应能力较弱。对需求变化的适应能力较弱。p 大系统数据流和加工的数量太多,引起分析文档的膨胀。大系统数据

17、流和加工的数量太多,引起分析文档的膨胀。p 系统复杂时,难以检验分析的正确性。系统复杂时,难以检验分析的正确性。p 分析与设计的概念和表示法不一致,其转换规则也不严格。分析与设计的概念和表示法不一致,其转换规则也不严格。p 容易导致模块的低内聚和模块间的高耦合,从而使得系统缺容易导致模块的低内聚和模块间的高耦合,从而使得系统缺乏灵活性和可维护性。乏灵活性和可维护性。2 2、数据流法(结构化分析法)、数据流法(结构化分析法)(2/2)(2/2)信息建模法(信息建模法(information modelinginformation modeling)信息建模信息建模 实体(对象)属性关系父类型子类

18、型实体(对象)属性关系父类型子类型关联对象关联对象由实体由实体-联系法(联系法(E-RE-R方法)发展而来。方法)发展而来。与数据库设计有很深的渊源。与数据库设计有很深的渊源。p 核心概念是实体和联系:核心概念是实体和联系:p实体描述问题域的事物,含有属性;实体描述问题域的事物,含有属性;p联系描述事物之间在数据方面的关系,也可以带有属性联系描述事物之间在数据方面的关系,也可以带有属性3 3、信息建模方法、信息建模方法(1/2)(1/2)p 发展之后的方法也把实体称作对象,并使用了类型和发展之后的方法也把实体称作对象,并使用了类型和子类型的概念,作为实体(对象)的抽象描述。子类型的概念,作为实

19、体(对象)的抽象描述。实体实体-关系图关系图实实体体-关关系系(Entity-Relation)图图简简称称E-R图图,是是表表示示数数据据对对象象及及其其之间关系的图形语言机制。之间关系的图形语言机制。数数据据对对象象(实实体体)用用长长方方形形、关关系系用用菱菱形形、属属性性用用椭椭圆圆表表示示。数数据对象之间数量上的对应关系的表示如下图所示:据对象之间数量上的对应关系的表示如下图所示:0:1 1:1 0:多多 1:多多为了便于区分,在为了便于区分,在E-R模型中的实体、关系和属模型中的实体、关系和属 性都应在对应的框中写上各自的名字。性都应在对应的框中写上各自的名字。实体实体-关系图关系

20、图实体实体-关系图实例关系图实例制造商制造商生产生产经销商经销商汽车汽车经销经销存储存储标识码标识码颜色颜色型号型号制造商制造商车体类型车体类型买主买主例如例如,在教学管理中,学校开设若干门课程,一个在教学管理中,学校开设若干门课程,一个教师可以教授其中的一门或多门课程,每位学生也教师可以教授其中的一门或多门课程,每位学生也需要学习其中的几门课程。因此,教学管理中涉及需要学习其中的几门课程。因此,教学管理中涉及的对象(实体型)有学生、教师和课程。用的对象(实体型)有学生、教师和课程。用E-RE-R图描图描述它们之间的联系,如图所示。其中,学生与课程述它们之间的联系,如图所示。其中,学生与课程是

21、多对多的联系,而教师与课程的联系是一对多。是多对多的联系,而教师与课程的联系是一对多。教学管理E-R图1NNM实体(对象)实体(对象)属性属性联系联系父类型父类型/子类型子类型关联对象关联对象l 强调对信息实体建模,而不是对象建模。强调对信息实体建模,而不是对象建模。l 对象只有属性,而无操作。对象只有属性,而无操作。l 父类与子类之间也只有属性继承。父类与子类之间也只有属性继承。l 没采用消息通讯。没采用消息通讯。3 3、信息建模方法、信息建模方法(2/2)(2/2)它是基于现实的行为视图,状态是这类系统的构造它是基于现实的行为视图,状态是这类系统的构造块,并且所操作的数据是独立于状态的。块

22、,并且所操作的数据是独立于状态的。p 基于系统状态的处理。基于系统状态的处理。p 这一方法没有说到数据管理。这一方法没有说到数据管理。4 4、有限状态机方法、有限状态机方法计算机是执行一套规则的推理机(计算机是执行一套规则的推理机(ififthenthen语句语句)。)。p 基于人工智能系统基于人工智能系统 p 基于规则的系统并没有帮助我们处理数据,也基于规则的系统并没有帮助我们处理数据,也不支持过程概念不支持过程概念 如如 prolog,listprolog,list语言语言 5 5、基于规则的系统、基于规则的系统总结 上述方法都仅基于一个角度看待系统,对系上述方法都仅基于一个角度看待系统,

23、对系统的其它视图建模方面的能力都很弱。但对统的其它视图建模方面的能力都很弱。但对OOOO产生都做出了一定的贡献产生都做出了一定的贡献.随需应变的商务 为了克服早期的方法的不足,这时人们已经开始考虑使用为了克服早期的方法的不足,这时人们已经开始考虑使用面向对象方法来开发系统。较为完善面向对象的分析和设计面向对象方法来开发系统。较为完善面向对象的分析和设计方法出现在八十年代中后期。方法出现在八十年代中后期。早期的方法只使用一种系统的视角作为构造块,而没有容早期的方法只使用一种系统的视角作为构造块,而没有容纳其他视角。纳其他视角。功能分解法集中于将功能作为系统的构造块功能分解法集中于将功能作为系统的

24、构造块在数据分析方法中(实体联系模型)构造块是实体,但在数据分析方法中(实体联系模型)构造块是实体,但在该方法中用来满足系统需求的功能被完全忽略掉了。在该方法中用来满足系统需求的功能被完全忽略掉了。两种方法都没有处理对动态行为的捕获,声明性语义两种方法都没有处理对动态行为的捕获,声明性语义(规规 则则)以及例外处理机制都被完全忽略了。以及例外处理机制都被完全忽略了。1.2 1.2 面向对象的基本思想面向对象的基本思想(1/11)面向对象方法的解决问题的思路是面向对象方法的解决问题的思路是从现实世界中从现实世界中的客观对象(如人和事物)入手,尽量运用人类的自的客观对象(如人和事物)入手,尽量运用

25、人类的自然思维方式来构造软件系统然思维方式来构造软件系统,这与传统的结构化方法这与传统的结构化方法从功能入手和信息工程化方法从信息入手是不一样的。从功能入手和信息工程化方法从信息入手是不一样的。在面向对象方法中,在面向对象方法中,把一切都看成是对象。把一切都看成是对象。1.2 1.2 面向对象的基本思想面向对象的基本思想(2/11)例题:编写一个开发票程序,需要对发票的名细栏进行计算。例题:编写一个开发票程序,需要对发票的名细栏进行计算。编号名称规格单位数量单价金额合计非面向对象思路:非面向对象思路:定义数据结构定义数据结构定义函数定义函数面向对象思路:面向对象思路:对象对象一组属性一组属性操

26、作:发票总计操作:发票总计 一一切切都都是是对对象象1.2 1.2 面向对象的基本思想面向对象的基本思想(3/11)对象组装从程序设计方法的角度看,面向对象是一种新的程序设计范从程序设计方法的角度看,面向对象是一种新的程序设计范型型(paradigm),(paradigm),其基本思想是使用其基本思想是使用对象、类、继承、封装、对象、类、继承、封装、聚合、关联、消息、多态性等基本概念聚合、关联、消息、多态性等基本概念来进行程序设计来进行程序设计.自八十年代以来,面向对象方法已自八十年代以来,面向对象方法已深入到计算机软件领域的深入到计算机软件领域的几乎所有分支。它不仅是一些具体的软件开发技术与

27、策略,几乎所有分支。它不仅是一些具体的软件开发技术与策略,而且是一整套关于如何看待软件系统与现实世界的关系,用而且是一整套关于如何看待软件系统与现实世界的关系,用什么观点来研究问题并进行问题求解,以及如何进行系统构什么观点来研究问题并进行问题求解,以及如何进行系统构造的软件造的软件方法学方法学。从这个意义上讲:从这个意义上讲:面向对象方法是一种运用对象、类、继承、封装、聚合、面向对象方法是一种运用对象、类、继承、封装、聚合、关联、消息、多态性等概念来构造系统的软件开发方法。关联、消息、多态性等概念来构造系统的软件开发方法。什什么么是是面面向向对对象象1.2 1.2 面向对象的基本思想面向对象的

28、基本思想(4/11)l(1 1)从现实世界中客观存在的事物出发来建立软件系统,从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域(现实世界)中的事物为中心强调直接以问题域(现实世界)中的事物为中心来思考问题、来思考问题、认识问题,并根据这些事物的本质特征,把它们抽象地表示认识问题,并根据这些事物的本质特征,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题直接映射问题域,保持问题域中事物及其相互关系的本来面域,保持问题域中事物及其相互关系的本来面貌貌(对象对象)1.2 1.2 面向对象的基本思想面向对

29、象的基本思想(5/11)l(2 2)用对象的属性表示事物的性质;用对象的操作表示事物的用对象的属性表示事物的性质;用对象的操作表示事物的行为。(行为。(属性属性与与操作操作)l(3 3)对象的属性与操作结合为一体,成为一个独立的、不可分对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节。(的实体,对外屏蔽其内部细节。(对象的对象的封装封装)1.2 1.2 面向对象的基本思想面向对象的基本思想(6/11)l(4)(4)对事物进行分类。把具有对事物进行分类。把具有相同属性和相同操作的对象相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类归为一类,类

30、是这些对象的抽象描述,每个对象是它的类的一个实例的一个实例.(分类分类)l(5)(5)复杂的对象可以用简单的对象作为其构成部分复杂的对象可以用简单的对象作为其构成部分.(.(聚合聚合)l(6)(6)通过在不同程度上运用抽象的原则通过在不同程度上运用抽象的原则,可以得到较一般的可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档简化系统的构造过程及其文档.(继承继承)1.2 1.2 面向对象的基本思想面向对象的基本思想(7/11)l(7)(7)类具有封闭性,把内部的属性和操作隐藏起来,只有公类具有封闭性,把

31、内部的属性和操作隐藏起来,只有公共的操作对外是可见的共的操作对外是可见的.(类的封闭性类的封闭性)l(8)(8)对象之间通过消息进行通讯,以实现对象之间的动态对象之间通过消息进行通讯,以实现对象之间的动态联系联系.(消息消息)l(9)(9)通过关联表达类通过关联表达类(一组对象一组对象)之间的静态关系之间的静态关系.(关联)(关联)1.2 1.2 面向对象的基本思想面向对象的基本思想(8/11)客观世界客观世界对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象名对象名属性属性操作操作类类类类类类类类分类分类类类继承继承类类类类对象对象聚合聚合抽象抽象客观事物及

32、其客观事物及其间的联系间的联系关联关联用况图用况图类图类图顺序图顺序图状态图状态图活动图活动图构件图构件图OO模型模型对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象对象计算机内计算机内的对象的对象编程编程构成构成封装封装运行运行分析分析设计设计充分运用人类日常的思维方法充分运用人类日常的思维方法 强调运用人类在日常的逻辑思维中经常采用的思想方强调运用人类在日常的逻辑思维中经常采用的思想方法与原则,法与原则,例如抽象、分类、继承、聚合、封装、关联例如抽象、分类、继承、聚合、封装、关联等等。这使得软件开发者能更有效地思考问题,并以其等等。这使得软件开发者能更有效地思考问题,并以其他人

33、也能看得懂的方式把自己的认识表达出来。他人也能看得懂的方式把自己的认识表达出来。1.2 1.2 面向对象的基本思想面向对象的基本思想(10/11)l用类和对象作为系统的基本构成单位。用类和对象作为系统的基本构成单位。对象对应问题域中的事物,对象对应问题域中的事物,其属性与操作刻画了事物的性质和行为,它们之间的继承关系、聚其属性与操作刻画了事物的性质和行为,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系。种关系。l 因此,无论系统的构成成分,还是通过这些成分之间的关系而体因此,无论系统的构成成分,还

34、是通过这些成分之间的关系而体现的系统结构,都现的系统结构,都可直接地映射问题域。可直接地映射问题域。l树立观点:树立观点:面向对象的方法与面向过程的方法根本不同在于:就是面向对象的方法与面向过程的方法根本不同在于:就是不再把世界看成一个紧密关联的系统,而是看成一些独立的离散的不再把世界看成一个紧密关联的系统,而是看成一些独立的离散的小零件,这个世界通过某些规则组织起来的,完成一个特定功能。小零件,这个世界通过某些规则组织起来的,完成一个特定功能。1.2 1.2 面向对象的基本思想面向对象的基本思想(11/11)总结:总结:p 面向对象中的主要概念:面向对象中的主要概念:对象、属性、操作、类、继

35、承、聚合、关联、永对象、属性、操作、类、继承、聚合、关联、永久对象,对象还分为主动对象和消息,泛化分为有多久对象,对象还分为主动对象和消息,泛化分为有多态性和无多态性的。态性和无多态性的。p 面向对象中的基本原则:面向对象中的基本原则:信息隐蔽或封装、消息传递、后期连接、委托、信息隐蔽或封装、消息传递、后期连接、委托、类类/对象和关系等。对象和关系等。1.3 1.3 面向对象中的主要概念及基本原则面向对象中的主要概念及基本原则对象标识对象标识就是对象的名字,有就是对象的名字,有“外部标识外部标识”和和“内部标识内部标识”之分之分。对象对象是现实世界中某是现实世界中某个实际存在的事物,个实际存在

36、的事物,它可以是有形的(比它可以是有形的(比如一辆汽车),也可如一辆汽车),也可以是无形的(比如一以是无形的(比如一项计划)。对象是构项计划)。对象是构成世界的一个独立单成世界的一个独立单位。它具有自己的静位。它具有自己的静态特征和动态特征。态特征和动态特征。对象对象是系统中用是系统中用来描述客观事物来描述客观事物的一个实体,它的一个实体,它是构成系统的一是构成系统的一个基本单位。一个基本单位。一个对象由一组属个对象由一组属性和对这组属性性和对这组属性进行操作的一组进行操作的一组操作构成。操作构成。对象对象属性属性操作操作对象标识对象标识属性属性是用来描述对象性质的是用来描述对象性质的一个数据

37、项。一个数据项。操作操作是用来描述对象行为的一个是用来描述对象行为的一个动作序列。动作序列。对象,属性,操作,对象,属性,操作,对象标识对象标识抽抽 象象1.3.11.3.1面向对象中的主要概念面向对象中的主要概念 (1/9)(1/9)类,一般类,特殊类,抽象类,一般类,特殊类,抽象(2/9)抽象与分类:抽象与分类:p抽象(化抽象(化)忽略事忽略事物的非本质特征,物的非本质特征,只注意那些与当前只注意那些与当前目标有关的本质特目标有关的本质特征,从而找出事物征,从而找出事物的共性。的共性。p把具有共同性质把具有共同性质的事物划分为一类,的事物划分为一类,得出一个抽象的概得出一个抽象的概念,叫做

38、念,叫做分类分类。类类是具有相同属性和操作的一组对象的集合,它是具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。类的作用其内部包括属性和操作两个主要部分。类的作用是用来创建对象,对象是类的一个实例。是用来创建对象,对象是类的一个实例。不同程度的抽象可得到不同层次的分类不同程度的抽象可得到不同层次的分类较多地忽较多地忽略事物之略事物之间的差别间的差别得到较一得到较一般的类般的类较多地注较多地注意事物之意事物之间的差别间的差别得到较特得到较特殊的类殊的类运输工具运输工具火车火车汽车汽车飞机飞

39、机卡车卡车轿车轿车轮船轮船车辆车辆继承:继承:特殊类拥有其一般类的全部属性与操作,称特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承。作特殊类对一般类的继承。继承意味着自动地拥有,或隐含地继承意味着自动地拥有,或隐含地复制复制子类从父类中继承属性和操作,根子类从父类中继承属性和操作,根据需要添加自己的属性和方法。据需要添加自己的属性和方法。继承简化了人继承简化了人们对事物的认们对事物的认识和描述,非识和描述,非常有益于软件常有益于软件复用,是复用,是OOOO技技术提高软件开术提高软件开发效率的重要发效率的重要原因之一。原因之一。公司人员公司人员姓名姓名身份证号码身份证号码股东股东股

40、份股份 职员职员工资工资例:例:由继承机由继承机制保证制保证一般类与特殊类一般类与特殊类之间的关系叫泛之间的关系叫泛化关系(继承关化关系(继承关系)系),简称简称泛化泛化。继承关系的语义:继承关系的语义:“is a kind of”继承继承(3/9)多继承:多继承:允许一个允许一个特殊类具有一个以特殊类具有一个以上一般类的继承模式称作多继承上一般类的继承模式称作多继承多继承特殊类多继承特殊类的内部情况的内部情况在职研究生在职研究生姓名姓名学号学号班级班级专业专业职称职称专业专业在职单位在职单位来自来自“人员人员”类类来自来自“研究生研究生”类类来自来自“教职工教职工”类类本类中显示定义本类中显

41、示定义例例:人员人员姓名姓名教职工教职工职称职称专业专业研究生研究生学号学号班级班级专业专业在职研究生在职研究生在职单位在职单位 (4/9)对象通过它对外提供的操作在系统中发挥作用。对象通过它对外提供的操作在系统中发挥作用。当系统中当系统中的其他对象或其他系统成分(在不要求完全对象化的语言中,的其他对象或其他系统成分(在不要求完全对象化的语言中,允许有不属于任何对象的成分,例如允许有不属于任何对象的成分,例如C+C+程序中的程序中的mainmain函数),函数),请求这个对象执行某个操作时,该对象就响应这个请求,完成请求这个对象执行某个操作时,该对象就响应这个请求,完成该操作。该操作。在在OO

42、OO方法中,把向对象发出的操作请求称为方法中,把向对象发出的操作请求称为消息消息.目前在大部分面向对象的编程语言中,消息其实就是函数(或过程)目前在大部分面向对象的编程语言中,消息其实就是函数(或过程)调用。调用。但是,函数调用只是实现消息的方式之一,上述理解只适合于顺序但是,函数调用只是实现消息的方式之一,上述理解只适合于顺序系统。系统。例子:顾客买报纸例子:顾客买报纸 消息消息(5/9)聚合:聚合:一个(较复杂的)对象由其他若干(较简单的)对象作为其构成一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为部分,称较复杂的对象为组合组合,称较简单的对象为,称较简单的

43、对象为成分成分,称这种,称这种关系为关系为聚合聚合。这种关系的语义是这种关系的语义是“has ahas a”或或“is a part ofis a part of”聚合刻画了现实事物之间的构成关系聚合刻画了现实事物之间的构成关系两种方式:(前一种方式又称组合)两种方式:(前一种方式又称组合)部部分分对对象象部部分分对对象象整体对象整体对象嵌套对象嵌套对象整整体体对对象象部部分分对对象象部部分分对对象象整整体体对对象象对象指针或对象标识对象指针或对象标识描述紧密、描述紧密、固定的关固定的关系,例如系,例如汽车与发汽车与发动机动机描述松散、描述松散、灵活的关灵活的关系,例如系,例如公司与法公司与法

44、律顾问律顾问(6/9)例:例:汽汽 车车发动机发动机1 14.64.60.10.10.10.1车车 轮轮公公 司司0.*0.*法律顾问法律顾问组合关系组合关系聚合关系聚合关系聚合聚合(7/9)关联:关联:类之间的静态联系称作类之间的静态联系称作关联。关联。在实例化后,由类产生对象,由关联产生连接对象的链。在实例化后,由类产生对象,由关联产生连接对象的链。链链是关联的实例。是关联的实例。关联的表示符号也称作关联的表示符号也称作实例连接实例连接城市城市0.*0.*有航线有航线 城市之间有航线城市之间有航线教教 师师学学 生生0.*0.*1 1指导论文指导论文 教师为学生指导论文教师为学生指导论文例

45、:例:(8/9)其他:其他:永久对象:永久对象:可以在程序运行后继续保存的对象可以在程序运行后继续保存的对象时间时间 空间空间意义意义实现途径:语言,实现途径:语言,OO-DBMS主动对象:主动对象:表示进程或线程的对象。表示进程或线程的对象。描述具有主动行为的事物描述具有主动行为的事物描述并发执行的任务描述并发执行的任务(9/9)(1)抽象从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象。抽象。例如,一个现实事物,可能担任很多角色,只有与问题域有关的角色,例如,一个现实事物,可能担任很多角色,只有与问题域有关的角

46、色,才予以考虑。才予以考虑。在不同的高度看待或解决问题。在不同的高度看待或解决问题。OOOO中的中的应用:应用:n过程抽象:任何一个完成确定功能的操作序列,其使用者都可把它看作一过程抽象:任何一个完成确定功能的操作序列,其使用者都可把它看作一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。n数据抽象数据抽象:根据施加于数据之上的操作来定义数据类型,并限定数据的值只根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。能由这些操作来修改和观察。n客观事物客观事物 对象对象 类类 一般类一般类n不同

47、开发阶段需要进行不同程度的抽象不同开发阶段需要进行不同程度的抽象 n便于实现模块的可替换性便于实现模块的可替换性 1.3.21.3.2面向对象中的基本原则面向对象中的基本原则(1/14)(1/14)(2 2)封装:)封装:把对象的属性和操作结合成一把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部个独立的系统单位,并尽可能隐蔽对象的内部细节。只是向外部提供接口,降低了对象间的细节。只是向外部提供接口,降低了对象间的耦合度。耦合度。售报亭售报亭属属性性服服务务报刊报刊A A报刊报刊B B钱箱钱箱报刊零售报刊零售款货清点款货清点顾顾客客由封装机制保证:由封装机制保证:数据不能被对象

48、数据不能被对象的使用者直接访的使用者直接访问。只允许通过问。只允许通过由对象提供的方由对象提供的方法或代码访问数法或代码访问数据。据。1.3.21.3.2面向对象中的基本原则面向对象中的基本原则 (2/14)封装的重要意义:封装的重要意义:使对象能够集中而完整地描述使对象能够集中而完整地描述并对应一个具体事物。并对应一个具体事物。体现了事物的相对独立性,使体现了事物的相对独立性,使对象外部不能随意存取对象的对象外部不能随意存取对象的内部数据,避免了外部错误对内部数据,避免了外部错误对它的它的“交插感染交插感染”。对象的内部的修改对外部的影对象的内部的修改对外部的影响很小,减少了修改引起的响很小

49、,减少了修改引起的“波动效应波动效应”。公开静态的、不变的操作,而公开静态的、不变的操作,而把动态的、易变的操作隐藏起把动态的、易变的操作隐藏起来。来。封装带来的问题:封装带来的问题:编程的麻烦编程的麻烦执行效率的损失执行效率的损失 解决办法:解决办法:不强调严格封装,不强调严格封装,实行可见性控制。实行可见性控制。(混合型(混合型OOPLOOPL)例如:例如:C+C+1.3.21.3.2面向对象中的基本原则面向对象中的基本原则 (3/14)信息隐蔽l对象的操作定义了其他的对象怎样获得对其的访问。每一个对象都将提对象的操作定义了其他的对象怎样获得对其的访问。每一个对象都将提供给所有对象的公共操

50、作供给所有对象的公共操作公开化公开化。它也提供仅局限于特定对象的其它的。它也提供仅局限于特定对象的其它的操作操作(受保护的和私有的)。(受保护的和私有的)。l其他的对象对被请求的对象怎样提供操作(代码其他的对象对被请求的对象怎样提供操作(代码,内部数据)没有感知。内部数据)没有感知。操作操作 操作操作操作操作 操作操作 属性集属性集(4/14)(3)委托 l借助消息传递,工作可从一个对象(客户)传递到另一个对象借助消息传递,工作可从一个对象(客户)传递到另一个对象(代理),因为从客户的观点,代理具有客户所需要的操作。(代理),因为从客户的观点,代理具有客户所需要的操作。工作连续地传递,直到到达

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com