Java面向对象程序设计(第2版)第17章.ppt
《Java面向对象程序设计(第2版)第17章.ppt》由会员分享,可在线阅读,更多相关《Java面向对象程序设计(第2版)第17章.ppt(65页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、统一建模语言UMLUML模型系统体系结构n UML:Unified Modeling LanguageUnified:BoochRumbaughJacobson UML由世界著名的面向由世界著名的面向对象技象技术专家家G.Booch、J.Rumbaugh、I.Jacobson发起,在起,在Booch方法,方法,OMT方法和方法和OOSE方法基方法基础上,上,广泛征求意广泛征求意见,汲众家之,汲众家之长,几,几经修改而完成的。修改而完成的。1997年被年被OMG(Object Management Group)采)采纳为业界界标准。准。Modeling:建模建模UML用于建模,即表达模型用于建模
2、,即表达模型设计,而且自身,而且自身拥有四有四层体系体系结构。构。模型是系模型是系统一个抽象的概括,一个抽象的概括,强调系系统设计特定的重要方面,同特定的重要方面,同时忽略大忽略大量底量底层的的编程程细节。而建模就是。而建模就是为了捕捉、描述系了捕捉、描述系统的核心。同一研究的核心。同一研究对象象不同人建立的模型可能同不同人建立的模型可能同样好或同好或同样差。差。建模的益处:建模的益处:理解和认识系统的结构和行为,掌握系统的本质特征。理解和认识系统的结构和行为,掌握系统的本质特征。在创建系统之间,了解系统的风险并进行化解。在创建系统之间,了解系统的风险并进行化解。是开发团队沟通的重要形式,为使
3、用系统的人提供帮助。是开发团队沟通的重要形式,为使用系统的人提供帮助。Language:是一种可视化建模语言,有语法和语义,消除了自然语言的歧义。是一种可视化建模语言,有语法和语义,消除了自然语言的歧义。虽然与具体面向对象语言无关,但学会虽然与具体面向对象语言无关,但学会UML的的关键之处是将关键之处是将UML模型与具体代码实现相互结合;模型与具体代码实现相互结合;UML modelSource codeObject structuresExecuting programUMLProgramming languageAbstract view ofAbstract view ofSpecifi
4、esSpecifies模型与代码之间的关系模型与代码之间的关系四层元模型体系结构四层元模型体系结构Run-time Instance运行实例层运行实例层Model模型层模型层Metamodel元模型层元模型层Metametamodel元元模型层元元模型层Classperson1:PersonPersonToolAssociationInfrastructure Library:Core:Constructs:ClassInfrastructure Library:Core:Abstraction:Relationships规定元模型的语言规定元模型的语言规定模型的语言规定模型的语言定义描述语义
5、域的语言定义描述语义域的语言n UML的主要特点:的主要特点:建模设计上的标准化与可视化的结合 建模设计上的语言无关性。建模设计上标准性与扩展性的统一。n 使用使用UML的的CASE(Computer-Assisted Software Engineering)工具)工具 Rational Rose PowerDesignern CASE工具的功能工具的功能构造模型并进行详细说明,可以检查模型语法正确与否。正向工程(生成数据结构、代码、文档)和逆向工程(代码生成模型)便于团队对模型的共享访问、安全管理、交流(共享相同概念)对模型文档的版本进行识别、存储和管理n UML视图(视图(View):描
6、述软件系统的不同方面):描述软件系统的不同方面所关心视图所关心视图客户客户用例视图分析者分析者用例视图、逻辑视图设计者设计者用例视图、逻辑视图、构件视图开发者开发者用例视图、逻辑视图、构件视图、进程视图、部署视图测试者测试者用例视图、部署视图系统集成者系统集成者进程视图、部署视图逻辑视图构件视图进程视图部署视图用例视图结构视域实现视域行为视域环境视域用户视域4+1视图模型视图模型不同开发者对视图的关心角度不同开发者对视图的关心角度n UML图(图(Diagram):用于描述模型,是模型元素的一个集合单元。):用于描述模型,是模型元素的一个集合单元。用例图:需求捕获用例图:需求捕获类类 图:类及
7、类之间的相互关系图:类及类之间的相互关系对象图:对象以及对象之间的相互关系对象图:对象以及对象之间的相互关系构件图:构件及其相互依赖关系构件图:构件及其相互依赖关系部署图:构件在各节点上的部署部署图:构件在各节点上的部署顺序图:强调对象时间顺序的交互顺序图:强调对象时间顺序的交互协作图:强调对象协作的交互协作图:强调对象协作的交互状态图:类所经历的各种状态状态图:类所经历的各种状态活动图:对工作流程建模活动图:对工作流程建模 结结 构构 行行 为为敏捷软件原则:需要时再添加UML的主要图类型的主要图类型活动图用例图协作图对象图类图状态图序列图WorkflowScenariosInter-cla
8、ss behaviorInter-class behaviorStructureStructureInteraction equence between objectsUML图在设计过程中的演化关系图在设计过程中的演化关系发现类方法:名方法:名词短短语;公共;公共类;用例;用例导出;出;CRC(类、职责、协作)作)提提炼类方法:系方法:系统范范围内;清晰目的;不能孤立;有属性;内;清晰目的;不能孤立;有属性;类功能功能单一;一;Association&GeneralizationStructureTypeDiagram用例模型图用例模型图用例图静态模型图(状态模型)静态模型图(状态模型)类图、
9、对象图、构件图、配置图、包图动态动态模型图模型图行为模型行为模型交互图顺序图协作图(通信图)活动图状态变化模型状态变化模型状态图UML图的类型划分图的类型划分n UML视图与图对应关系视图与图对应关系图视图视图主要概念主要概念Use case diagramUse case view用例、参与者、关联关系、用例、参与者、关联关系、扩展关系、包含关系、泛化关系扩展关系、包含关系、泛化关系Object diagramUse case and logic view对象、链接关系对象、链接关系Sequence diagramUse case and logic view对象、消息对象、消息Collab
10、oration diagramUse case and logic view类元、链接关系、消息类元、链接关系、消息Activity diagramUse case and logicview活动、迁移、起始活动、终止活动、分支活动、迁移、起始活动、终止活动、分支与合并、分叉与汇合与合并、分叉与汇合Class diagramlogic view类、关联关系、聚合关系、组合关系、泛类、关联关系、聚合关系、组合关系、泛化关系、依赖关系、接口、包化关系、依赖关系、接口、包Package diagramlogic view包、依赖关系、泛化关系包、依赖关系、泛化关系State diagramlogic
11、 view状态、迁移、起始状态、终止状态、判定状态、迁移、起始状态、终止状态、判定Component diagramComponent view构件、接口、依赖关系构件、接口、依赖关系Deployment diagramDeployment view节点、构件、依赖关系、关联关系节点、构件、依赖关系、关联关系BABAUse caseBA用例图主要模型元素及其含义用例图主要模型元素及其含义参与者(角色)参与者(角色)用例用例包含关系包含关系扩展关系扩展关系关联关系关联关系泛化关系泛化关系参与者是针对用例所扮演的角色,可以人也可以是事物。参与者是针对用例所扮演的角色,可以人也可以是事物。用例是功能
12、,功能是完整的、外部可见的、相互独立的。用例是功能,功能是完整的、外部可见的、相互独立的。完整含义:用例的执行逻辑必须完整,即有主要执行的流完整含义:用例的执行逻辑必须完整,即有主要执行的流程,也有各种次要流程和意外处理流程。程,也有各种次要流程和意外处理流程。外部可见的:不是内部功能,是参与者可以感知的。外部可见的:不是内部功能,是参与者可以感知的。相互独立的:用例开始执行到最终结束不依赖于其他用例相互独立的:用例开始执行到最终结束不依赖于其他用例是参与者和用例之间的通信渠道,如果没有箭头,则代表是参与者和用例之间的通信渠道,如果没有箭头,则代表通信是双向的。通信是双向的。是用例与用例的一种
13、依赖关系:它允许被包含用例中的公是用例与用例的一种依赖关系:它允许被包含用例中的公共行为从包含用例中分解出来。如共行为从包含用例中分解出来。如B用例包含用例包含A用例,则用例,则意味着意味着B用例要执行,必须先执行用例要执行,必须先执行A用例。用例。是用例与用例的关系:是用例与用例的关系:B用例扩展用例扩展A用例,表示用例,表示A用例在用例在某种条件满足下,可以执行某种条件满足下,可以执行B用例。因而用例。因而B用例是用例是A用例用例的额外功能;另外当的额外功能;另外当B用例的执行可以由用例的执行可以由A用例而来,也用例而来,也可以由其他途径而来时(没有包含那种强制含义),可以由其他途径而来时
14、(没有包含那种强制含义),B用用例和例和A用例也是一种扩展关系。用例也是一种扩展关系。是用例与用例、参与者与参与者之间的一种继承关系,表是用例与用例、参与者与参与者之间的一种继承关系,表示一个用例(角色)将继承另一用例(角色)的所有功能示一个用例(角色)将继承另一用例(角色)的所有功能(语义含义)。(语义含义)。用例图是对需求中系统功能的规格说明(不对系统约束进行说明),并被作为验收测用例图是对需求中系统功能的规格说明(不对系统约束进行说明),并被作为验收测试的依据。试的依据。用例图模型的建立过程:确定参与者和用例;确定参与者与用例之间的关系,确定参用例图模型的建立过程:确定参与者和用例;确定
15、参与者与用例之间的关系,确定参与者之间的关系,确定用例之间的关系;确定需求边界,在用例图中用矩形框表示;与者之间的关系,确定用例之间的关系;确定需求边界,在用例图中用矩形框表示;对用例功能进行描述,形成文档。对用例功能进行描述,形成文档。【例】包含二个角色,四个用例。其中B用例和A用例之间的关系为包含,即B用例执行前必须先执行A用例;C和A的关系为扩展,即A用例在某种条件满足下,可以扩展出C用例;D用例和A用例的关系为继承,表明D将拥有A用例的所有功能。参与者1和参与者2之间的关系为继承,表示参与者2除了可以驱动A、B用例外,还可以驱动参与者1的所有用例,即图中的D用例。用例规格说明格式用例规
16、格说明格式用例说明要素用例说明要素说明说明简要描述概述参与者涉及的参与者前置条件用例开始所需的条件主事件流对正常事件的流程进行描述备选流定义异常事件后置条件用例结束后的系统状态表示类及其关联关系的图表示类及其关联关系的图+display()-getNumOpenSlots()+setStatus()+numCanisters:int-numWafers:int-size:floatCanister类名属性操作+:可见-:不可见类图类图长短式;抽象类和具体类表示;类多重性表示;封装表示长短式;抽象类和具体类表示;类多重性表示;封装表示操作属性:类型类名*University1 Component
17、主要的模型元素:主要的模型元素:类、关联、泛化、依赖关系、接口、包。类、关联、泛化、依赖关系、接口、包。类中属性和操作的类范围和对象范围类中属性和操作的类范围和对象范围+Canister()+display()-getNumOpenSlots()+setStatus()+numCanisters:int-numWafers:int-size:floatCanister静态属性构造方法静态方法此三者专属于类,其他属性和方法虽然在类中定义,实际为对象而服务。对象图为类图实例,是类图的一个快照对象图为类图实例,是类图的一个快照对象图对象图长式长式属性=值对象名:类名对象名:类名短式短式类图类图对象图
18、对象图类具有3个分栏:名称、属性和操作对象只有两个分栏:名称和属性类的名称栏只有类名对象名称栏为:“对项目:类名”或“:类名”类的属性分栏定义了所有属性的特征定义了属性的当前值类中列出了操作不包含操作,因为对象所有操作相同类图是对象图的抽象,类有关联,关联是对象图中链接的抽象,类图中的关联有名称、角色、多重性以及约束等。对象图是类图的一个实例,对象有链接,链接是关联的实例,链接有名称、角色,但没有多重性。类图和对象图的比较类图和对象图的比较类是数据类型,类是数据类型,UML在表示所有语言数据类型上不够;在表示所有语言数据类型上不够;用构造型(用构造型(stereotype)进行数据类型(模型元
19、素)的扩展。)进行数据类型(模型元素)的扩展。Integer基本int数据类型MyInterfaceJava语言的接口Colorredgreenblue用户自定义枚举类型泛化:抽象类与继承关系的泛化:抽象类与继承关系的UML表示表示 泛化构造型:泛化构造型:、抽象类在编程上的可替换(抽象类在编程上的可替换(Interchageable)与多态性)与多态性CurrentAccountDepositAccountOnlineAccountAccountgetBalance()Account ac;ac=new CurrentAccount();System.out.println(ac.getBa
20、lance();ac=new DepositAccount();System.out.println(ac.getBalance();可替换性多态性关联(一):关联(一):关联名、关联方向、关联角色、关联多重性关联名、关联方向、关联角色、关联多重性class Person Compony employer;.class Company Person employee;.类A类B角色a 角色b 关联名 关联多重性 关联多重性 PersonCompanyemployee employer WorksFor 0.*0.1 关联(二)实现:类图为关联,对象图为链接,代码实现为引用;关联(二)实现:类图
21、为关联,对象图为链接,代码实现为引用;类图中的关联关系将决定对象图、序列图中对象的交互关系类图中的关联关系将决定对象图、序列图中对象的交互关系PersonCompanyemployee employer WorksFor 0.*1 john:PersonICI:CompanyWorksFor tom:PersonWorksFor 用代码表示类图多重性含义用代码表示类图多重性含义(一)(一)class A B b;.class B A a;.A、B两个两个类对象可以引用象可以引用对方也可以不引用,方也可以不引用,总之可自由之可自由选择;用代码表示类图多重性含义用代码表示类图多重性含义(二)(二)
22、A类对象必象必须引用引用B类对象,象,B类对象象则可以引用也可以不引用可以引用也可以不引用A对象象class A B b;A(B _b)if(_b=null)/throw NullLinkError b=_b;class B A a;.用代码表示类图多重性含义用代码表示类图多重性含义(三)(三)class A B b;A(B _b)if(_b=null)/throw NullLinkError b=_b;b.setA(this);class B A a;void setA(A _a)if(_a=null)/throw NullLinkError a=_a;先先产生生B类对象,再象,再产生生A类
23、对象,只要象,只要A类对象象产生生时,二者就,二者就构成了相互引用;如果构成了相互引用;如果产生生对象的方式反象的方式反过来,如法炮制。来,如法炮制。关联(三):关联的元数关联(三):关联的元数(一元关联或自关联或递归关联、二元关联、三元关联)(一元关联或自关联或递归关联、二元关联、三元关联)?对象存在一元链接对象存在一元链接和三元链接吗和三元链接吗Servantheader clerk Manage 0.*1 header:ServantClerk_n:ServantClerk_1:ServantMailMessageAttachment*composition*ComputerProces
24、sor*1aggregation关联(四):聚合(部分是整体的一部分)关联(四):聚合(部分是整体的一部分)组合(整体拥有部分)组合(整体拥有部分)主要概念主要概念聚和聚和传递性、非对称性传递性、非对称性组合组合传递性、非对称性、依赖性、固定性传递性、非对称性、依赖性、固定性特征特征一般关联一般关联聚合聚合组合组合标记标记实线实线空心菱形空心菱形实心菱形实心菱形拥有拥有无无弱弱强强多重性多重性任意任意任意任意整体为整体为1传递性传递性无无有有传方向传方向无无整体与部分整体与部分关联(五):关联约束关联(五):关联约束约束关键词约束关键词含义含义subset一个关联是另一个关联的子集ordere
25、d表示有序对象changeable关联可变addonly关联可以动态添加,但不能修改frozen关联不能修改xor两个关联之间是互斥关系委员会人subset*1成员主席主席是成主席是成员中的一中的一员:委:委员会有一个成会有一个成员的引用集合,有一个的引用集合,有一个“主席引用主席引用”,主席,主席对象被象被“主席引用主席引用”引用外,在成引用外,在成员引用引用集合中也存在一个引用指向主席集合中也存在一个引用指向主席对象。象。多边形线段*ordered多多边形中存在一个形中存在一个线段的引用集合,多个段的引用集合,多个线段段对象的引用是以有序的方式加入集合当中。象的引用是以有序的方式加入集合当
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 面向 对象 程序设计 17
限制150内