第9章面向对象方法学引论.ppt
《第9章面向对象方法学引论.ppt》由会员分享,可在线阅读,更多相关《第9章面向对象方法学引论.ppt(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第9章章 面向对象方法学引论面向对象方法学引论9.1 面向对象方法学概述面向对象方法学概述9.2 面向对象的概念面向对象的概念9.3 面向对象建模面向对象建模9.4 对象模型对象模型9.5 动态模型动态模型9.6 功能模型功能模型9.7 3种模型之间的关系种模型之间的关系1面向对象的概念起源于面向对象的概念起源于20世纪世纪60年代中期的年代中期的Simula 67。80年代中期年代中期OOP模式进入主流。模式进入主流。80年代中后期,年代中后期,面向对象分析与设计的研究开始发展。进入面向对象分析与设计的研究开始发展。进入90年代,年代,面向对象软件工程成了许多软件产品的开发模式。面向对象软
2、件工程成了许多软件产品的开发模式。1 1 面向对象方法学概述面向对象方法学概述2面向对象方法学面向对象方法学OOM(ObjectOOM(Object-Oriented Methodology)-Oriented Methodology)特点:特点:尽可能模拟人类习惯的思维方式,即问题域尽可能模拟人类习惯的思维方式,即问题域与求解域在结构上尽可能一致。与传统方法相反,与求解域在结构上尽可能一致。与传统方法相反,OOM把把数据和处理结合数据和处理结合构成统一体构成统一体 对象。这时对象。这时程序不再是一系列工作在数据上的函数集合,而是程序不再是一系列工作在数据上的函数集合,而是相互协作又彼此独立的
3、相互协作又彼此独立的对象对象的集合。的集合。3成都成都北北 京京Post-officeMessageSend by method对象对象ObjectObject=属性属性AttributeAttributes:location;employee;+操作操作MethodMethods:send;sell;注意:注意:对象对象内部的内部的属性属性不允许外部用户直接改动,只有当它提供了不允许外部用户直接改动,只有当它提供了相应的服务相应的服务操作操作时时,用户才能通过发送用户才能通过发送消息消息来提请它执行。来提请它执行。我想把邮局搬到我想把邮局搬到我家门口,多加几个我家门口,多加几个邮递员,邮递员
4、,24小时都开门小时都开门对不起,对不起,本邮局不提供本邮局不提供此类服务此类服务唉,那就先送束花吧唉,那就先送束花吧 Post_office.Send(request,payment)例:例:4OOM的四要素:的四要素:对象对象(object):世界由世界由对象对象组成。组成。类类(class):具有相同属性和操作的具有相同属性和操作的对象对象可划分为可划分为类类;单个对象可视为某一类的单个对象可视为某一类的实例实例(instance)。继承继承(inheritance):类可分层,下层类可分层,下层子类子类与上层与上层父类父类有相同特征,称为有相同特征,称为继承继承。OOM=Object+
5、Class+Inheritance+Communication with messages 消息消息(message):对象间只能通过发送对象间只能通过发送消息消息进行联进行联系,外界不能处理系,外界不能处理对象对象的内部数的内部数据,只能通过据,只能通过消息消息请求它进行处请求它进行处理(如果它提供相应消息的话)。理(如果它提供相应消息的话)。5OOM:以:以object 为核心,强调对现实概念的模拟而为核心,强调对现实概念的模拟而不强调算法。不强调算法。“面向对象方法学的基本原则,面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模是按照人们习惯的思维方式建立问题域的模型,开发
6、出尽可能直观、自然地表现求解方型,开发出尽可能直观、自然地表现求解方法的软件系统法的软件系统”。Class:由特殊到一般的归纳由特殊到一般的归纳 Inheritance:由一般到特殊的演绎由一般到特殊的演绎OOM相比传统方法的优点:相比传统方法的优点:传统方法:面向过程设计,以计算为核心,数据与传统方法:面向过程设计,以计算为核心,数据与操作分离,不易理解。操作分离,不易理解。6OOM:以:以object模拟模拟实体,需求变化不会引起结构实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统的整体变化,因为实体相对稳定,故系统也相应稳定。也相应稳定。传统方法:结构依赖于功能,不稳定。传
7、统方法:结构依赖于功能,不稳定。传统方法:通过建立标准函数库来重用软构件。传统方法:通过建立标准函数库来重用软构件。但标准函数缺少必要的但标准函数缺少必要的“柔性柔性”,难,难以适应不同场合的不同需要。以适应不同场合的不同需要。OOM:一个一个class所有的所有的 instances 都可重用它的都可重用它的代码;由代码;由 inheritance 派派生出的新的生出的新的 class 可重用其父类的代码,并且可以修可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。改、扩充而不影响其父类的使用。7稳定性好:软件功能需求的变化不牵动全局,只需局稳定性好:软件功能需求的变化不牵动全局,
8、只需局部修改;部修改;Class 独立性强:只要修改不涉及独立性强:只要修改不涉及class的对外接口,的对外接口,则内部修改完全不影响外部调用;则内部修改完全不影响外部调用;Inheritance和多态性和多态性(polymorphism)使其很容易被修使其很容易被修改和扩充;改和扩充;容易理解;容易理解;传统方法:可维护性是最令人头痛的问题。传统方法:可维护性是最令人头痛的问题。OOM:从以下几方面改善了可维护性从以下几方面改善了可维护性 注:注:OOM并不是减少了开发时间并不是减少了开发时间,而是通过提高,而是通过提高可重用性、可维护性,进行扩充和修改的容易可重用性、可维护性,进行扩充和
9、修改的容易程度等,从长远角度程度等,从长远角度改进了软件的质量改进了软件的质量。OOM与与Prototyping结合使用效果好。结合使用效果好。8特点:特点:以数据为中心以数据为中心,不设与数据无关的操作;,不设与数据无关的操作;Object主动处理主动处理而不而不 被动地等待被处理,外部只能被动地等待被处理,外部只能通过通过message请求操作;请求操作;具有封装性具有封装性:外部操作时,无须知道该:外部操作时,无须知道该object内部内部的数据结构及算法;的数据结构及算法;具有并行性具有并行性:不同:不同object各自独立地处理自身数据,各自独立地处理自身数据,彼此间仅通过传递彼此间
10、仅通过传递message完成通信;完成通信;模块独立性好模块独立性好:内聚强、耦合松:内聚强、耦合松2 2 面向对象的概念面向对象的概念1、对象、对象93、消息、消息:object_ID.method_ID(parameter(s);4、方法(操作)、方法(操作):object能做的操作,亦称为能做的操作,亦称为service,在在 class 中须定义相应的代码;中须定义相应的代码;5、属性、属性:object 的固有数据;的固有数据;2、类:、类:具有相同数据和相同操作的一组对象;具有相同数据和相同操作的一组对象;实例:实例:某个某个class描述的具体对象;描述的具体对象;6、封装:、封
11、装:把内部实现细节隐藏起来,使其他外部对把内部实现细节隐藏起来,使其他外部对象无法访问,仅仅提供某些功能。使对象形成接口象无法访问,仅仅提供某些功能。使对象形成接口部分和实现部分部分和实现部分10Class 中国人中国人中国人中国人 Attributes中国人中国人 Methods张三张三(instance)Class 中国人中国人 张三的张三的 AttributesClass 成都成都人人(子类子类)成都人成都人 Attributes成都人成都人 Methods Class 中国人中国人李四李四(instance)中国人李四的中国人李四的 Attributes 成都人李四的成都人李四的 At
12、tributes Class 成都人成都人例:例:7、继承:、继承:子类自动共享父类的子类自动共享父类的attributes 和和methods,而不必重复定义。而不必重复定义。特点:特点:若若成都人成都人的的 methods中有与中有与中国人中国人的同名,则李的同名,则李四执行该四执行该 method 时以时以成都人成都人为准,不执行为准,不执行中国人中国人中定中定义的同名义的同名 method。传递性:传递性:AB、BC AC 一个一个 class 继承继承了上层全部了上层全部 classes 的一切性质。的一切性质。11注意:注意:多重继承在定多重继承在定义中应避免二义性,义中应避免二义
13、性,即两二个父类中定义即两二个父类中定义重名,但各具不同性重名,但各具不同性质。质。例:例:FemaleChineseScholarCardDeckGraphicalObjectGraphicalDeckMethod:Draw:=take a card from a deckMethod:Draw:=displaya graphical objectMethod:Draw:=?例:例:修改与扩充可以很容易地通过派生子类来完成。修改与扩充可以很容易地通过派生子类来完成。一个子类只一个子类只 有有 一一 个父类称为单个父类称为单 继继 承承,一个子类可有一个子类可有多个父类称为多重继承。多个父类称
14、为多重继承。128、多态性与动态联编、多态性与动态联编多态性是指子类对象可以像父类对象那样使用,同样的消息既多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。可以发送给父类对象也可以发送给子类对象。不同层次的不同层次的 classes 可共享一个可共享一个method名,但按各自的方式来实名,但按各自的方式来实现这种现这种 method。9、重载、重载在同一作用域内的若干个参数特征不同的函数可以使用相同的在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。函数名字。在在C+语言中函数重载通过静态联编语言中函数重载通过静态联编(也叫先前联编
15、也叫先前联编)实现。实现。如虚函数机制能在一个类如虚函数机制能在一个类等级中使用相同函数的多等级中使用相同函数的多个不同版本,在运行时刻个不同版本,在运行时刻才根据接收消息的对象所才根据接收消息的对象所属于的类,决定到底执行属于的类,决定到底执行哪个特定的版本,称为哪个特定的版本,称为动动态联编,也叫滞后联编。态联编,也叫滞后联编。13模型:为了理解事物而对事物作出的一种抽象,是模型:为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。对事物的一种无歧义的书面描述。3种面向对象的模型:种面向对象的模型:描述系统描述系统数据结构数据结构的的对象模型对象模型。描述系统描述系统控制结
16、构控制结构的的动态模型动态模型。描述系统描述系统功能功能的的功能模型功能模型。一个典型的软件系统组合了上述一个典型的软件系统组合了上述3方面内容:它使用方面内容:它使用数据结构数据结构(对象模型对象模型),执行操作,执行操作(动态模型动态模型),并且完,并且完成数据值的变化成数据值的变化(功能模型功能模型)。3 3 面向对象建模面向对象建模14几种面向对象几种面向对象开发开发方法方法:nBooch方法方法 Booch是面向对象方法最早的提出者之一,提出了是面向对象方法最早的提出者之一,提出了面向对象软件工程的概念。面向对象软件工程的概念。Booch认为软件开发是认为软件开发是一个螺旋上升的过程
17、。一个螺旋上升的过程。nCoad-Yourdon方法方法 著名的著名的OOA/OOD方法,也是最早的面向对象的分方法,也是最早的面向对象的分析与设计方法之一。简单、易学。析与设计方法之一。简单、易学。nRumbaugh方法(简称方法(简称OMTObject Modeling Technology)该方法强调了三种模型,并将软件开发过程划分为该方法强调了三种模型,并将软件开发过程划分为系统分析、系统设计、对象设计等几个阶段。系统分析、系统设计、对象设计等几个阶段。nJacobson 方法(简称方法(简称OOSE)最大特点是强调使用用例(最大特点是强调使用用例(Use-Case),每一个用,每一个
18、用例就是一个使用系统的方式,用例的执行将引发执例就是一个使用系统的方式,用例的执行将引发执行一系列与行为相关的事务。行一系列与行为相关的事务。15统一建模语言统一建模语言UMLUML 由由Rumbaugh、Booch、Jacobson提出的统一提出的统一建模语言(建模语言(Unified Modeing Language),简,简称称UML。产生于产生于90年代中期。它不仅统一了年代中期。它不仅统一了Booch、OMT和和OOSE方法中的概念和表示法,而且对其作了方法中的概念和表示法,而且对其作了进一步扩展,最终成为在面向对象技术领域占主进一步扩展,最终成为在面向对象技术领域占主导地位的、并被
19、大众所接受的标准建模语言。导地位的、并被大众所接受的标准建模语言。UML不是一个开发过程,也不是一个方法,但允不是一个开发过程,也不是一个方法,但允许任何一种开发过程和面向对象方法使用它。许任何一种开发过程和面向对象方法使用它。16类图用来描述系统中的类及类和类之间的静态关系。类图用来描述系统中的类及类和类之间的静态关系。类的表示:类的表示:例如:例如:可访问性通常有可访问性通常有3种:种:公有的公有的(public)私有的私有的(private)保护的保护的(protected),分别用加号(分别用加号(+)、减号)、减号(-)和井号()和井号(#)表示。)表示。类名类的简单表示类的简单表示
20、类的完整表示类的完整表示对象模型表现了客观世界对象模型表现了客观世界实体对象实体对象的相互关系。通的相互关系。通常使用常使用UML提供的提供的类图类图来建立对象模型。来建立对象模型。4 4 对象模型对象模型类图的基本符号类图的基本符号17 类图由类及类与类之间的关系组成。类图由类及类与类之间的关系组成。定义了类之后就可以定义类与类之间的定义了类之后就可以定义类与类之间的各种关系了。类与类之间通常有各种关系了。类与类之间通常有关联关联、泛化(继承)泛化(继承)、依赖依赖和和细化细化等等4种关系。种关系。表示关系的符号表示关系的符号18类1类2角色角色关联名角色表示该类在这个关联角色表示该类在这个
21、关联中的作用。如果没有显式中的作用。如果没有显式标出角色名,则意味着用标出角色名,则意味着用类名作为角色名。类名作为角色名。重数:该类有多少个对象重数:该类有多少个对象与对方的一个对象连接。与对方的一个对象连接。关联关联表示两个类的对象之间存在某种语义上的联系。表示两个类的对象之间存在某种语义上的联系。重数1、关联、关联19在表示关联的直线两端可以写上重数(在表示关联的直线两端可以写上重数(multiplicity),),它表示该类有多少个对象与对方的一个对象连接。它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:重数的表示方法通常有:01表示表示0到到1个对象个对象0*或或*
22、表示表示0到多个对象到多个对象1+或或1*表示表示1到多个对象到多个对象115表示表示1到到15个对象个对象3表示表示3个对象个对象如果图中未明确标出关联的重数,则默认重数是如果图中未明确标出关联的重数,则默认重数是1。20公司董事会默认关联名是默认关联名是has(有),省略重数默认(有),省略重数默认1。人员董事会成员0,3.8*董事会每一个董事会没有或者有每一个董事会没有或者有38个董事会成员个董事会成员(有角色名,可以省略关联名)(有角色名,可以省略关联名)(1)普通关联普通关联最常见的关联关系。最常见的关联关系。例如:例如:21(2)递归关联)递归关联即一个类与它本身有关联关系。即一个
23、类与它本身有关联关系。例如:22(3)限定关联限定关联也叫受限关联,两个类及一个限定词组成,限定词也叫受限关联,两个类及一个限定词组成,限定词是一种特定的属性,用来有效地减少关联的重数。是一种特定的属性,用来有效地减少关联的重数。在类图中把限定词放在关联关系末端的一个小方框在类图中把限定词放在关联关系末端的一个小方框内。内。限定关联通常用在一对多或多对多的关联关系中,限定关联通常用在一对多或多对多的关联关系中,可以把模型中的重数从一对多变成一对一,或从可以把模型中的重数从一对多变成一对一,或从多对多简化成多对一。多对多简化成多对一。23例如,某操作系统中一个目录下有许多文件,一个例如,某操作系
24、统中一个目录下有许多文件,一个文件仅属于一个目录,在一个目录内文件名确定了文件仅属于一个目录,在一个目录内文件名确定了惟一一个文件。图惟一一个文件。图9.8利用限定词利用限定词“文件名文件名”表示了表示了目录与文件之间的关系,可见,利用限定词把一对目录与文件之间的关系,可见,利用限定词把一对多关系简化成了一对一关系。多关系简化成了一对一关系。图图9.8 一个受限的关联一个受限的关联24限定提高了语义精确性,增强了查询能力。限定提高了语义精确性,增强了查询能力。在图在图9.8中,限定的语法表明,文件名在其目中,限定的语法表明,文件名在其目录内是惟一的。因此,查找一个文件的方法录内是惟一的。因此,
25、查找一个文件的方法就是,首先定下目录,然后在该目录内查找就是,首先定下目录,然后在该目录内查找指定的文件名。由于目录加文件名可惟一地指定的文件名。由于目录加文件名可惟一地确定一个文件,因此,限定词确定一个文件,因此,限定词“文件名文件名”应应该放在靠近目录的那一端。该放在靠近目录的那一端。25在一些情况下关联可能需要记录一些信息,但这些信息不能放在一些情况下关联可能需要记录一些信息,但这些信息不能放在任何一个类中,可引入一个关联类记录这些信息。关联类通在任何一个类中,可引入一个关联类记录这些信息。关联类通过一条虚线与关联连接。过一条虚线与关联连接。学生*选修 *课程一个多对多关联。一个多对多关
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 方法 引论
限制150内