2012-2013 第二学期 11本 UML 第九章 构件图

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1UML面向对象技术教程第九章构件图天津理工大学华信软件学院2用例图用例视图类图、对象图静态视图UML视图状态图、活动图行为视图构件图、部署图实现视图协作图、顺序图交互视图UML视图的五种类型分类:用例图:从用户角度描述系统功能,指出操作者。静态图:表示系统的静态结构。行为图:描述系统的动态模型和组成对象间的相互关系。交互图:描述对象间的相互关系。实现图:描述系统的物理实现。课程内容回顾3本章中所涉及的主要内容什么是构件及构件图(又称为组件图)?面向对象系统的物理建模是通过构件图和部署图来实现的。构件图的作用?构件图帮助用户了解每个功能位于软件包中的位置及它们之间的关系。构件图的工具支持正向工程(包含多个类且只有一类为公有时可使用构件图正向工程)逆向工程(将在实验中验证。略)4一.构件和构件图的概念1.构件及构件图的定义:◆构件(component)是系统中遵从一组接口且提供其实现的物理的、可替换的部分。有的书把构件定义成“可重用的软件成分。”每个构件体现了系统设计中特定类的实现。□构件在UML中的表示方法:□构件名通常是从现实的词汇表中抽取出的短名词,并依据目标操作系统添加相应的扩展名,例如:EXE、jave、dll等等。Componentname5一.构件和构件图的概念(续一)◆构件图(componentdiagram)是表示系统中构件与构件之间、类和接口与构件之间关系的实现模型。编译、链接或执行是构件之间的依赖关系。构件图包含3个建模元素(构件、接口和关系)《database》AccountTransectionATM-GUI依赖关系实现关系update含构造类型的构件依赖关系6下面是表示多个构件之间依赖关系的构件图:(参见P104)由.html文件、.dll文件、.exe文件及其相互关系,依赖关系表示为从用户构件指向它所依赖的服务构件的虚线箭头。一.构件和构件图的概念(续三)组件间依赖关系71.构件的属性(即构件的特性):1)构件必须自包容2)必须严格封装3)接口清楚4)必须没有个体属性2.构件的分类:1)按制作过程分·部署构件:比如DLL文件,exe文件,COM+对象,CORBA对象,EJB,数据库表等。·工作产品构件:比如源代码文件,数据文件,UML图,Jar文件,动态连接库等。这些构件可产生部署构件。·执行构件:系统执行创建的构件,是最终可运行的系统产生的结果,如HTML、XML文档等。一.构件和构件图的概念(续四)82)从软件流程上分·分析组件·设计组件·程序组件·数据组件3)从层次上分·基础组件·中间件·专用件4)从动态特性上分·动态组件·静态组件5)从分割性上分·原子构件·组合构件一.构件和构件图的概念(续五)94.几种常用的典型构件1)CORBA(CommonObjectRequestBrokerArchitecture)CORBA是OMG(ObjectManagementGroup)制定的标准体系结构的、跨平台、分布式、优于C/S和远程服务的对象模型。它使用IDL-InterfaceDefinitionLanguage定义接口。允许使用不同语言、不同OS实现构件连接,形成跨平台应用。对象可以是客户机,也可以是服务器,它们可以自由分布在网上,通过CORBA来互相访问。一.构件和构件图的概念(续六)102)微软的COM+COM+是由COM(ComponentObjectModel)发展来的,起源于OLE,并采用DDL来支持程序间通讯。COM只能运行在Windows上,不支持分布应用,COM+是COM/DCOM+MTS+目录服务+对象缓冲池的集成。3)SUN公司的EJB/J2EEJ2EE是Java2platformEnterpriseEdition.Java的第一个开发平台是JDK(JavaDevelopmentKit)而EJB不是一种产品,而是基于分布式事务对象应用的服务器端的一种技术规范。即标准的面向对象分布式的体系结构。它能与CORBA兼容。一.构件和构件图的概念(续七)114.中间件(Middleware)中间件是位于操作系统和应用软件之间的通信服务,借助它可在不同技术之间实现资源共享。中间件可如下分类:1)数据库中间件,如:JDBC,ODBC等;2)远程过程调用中间件(RPC);3)面向消息的中间件;4)基于对象请求代理中间件,如:CORBA等;5)事务处理中间件。一.构件和构件图的概念(续九)JDBCJava数据库连接通信协议。ODBC开放式数据库连接通信协议RPC远程过程调用通信协议125.构件和类的区别1)类是逻辑抽象,构件是物理抽象;2)构件是对某些逻辑元素(比如类)的物理实现;3)类可以有属性和操作,构件通常只有操作,而且这些操作只能通过构件的接口来实现。一.构件和构件图的概念(续十)13二.构件图的作用1.对源代码文件之间的相互关系建模,如下图:142.对可执行文件之间的关系建模,如下图:上图中Idriver和IseltTest是接口,构件Path.dll依赖于接口。而构件Idriver.dll实现了接口。二.构件图的作用(续)15三.构件图的工具支持1.正向工程以Java语言为例,Rose2003可直接根据类图来生成源代码,而用类图只能一个类生成一个java源代码文件。但若利用构件图,可以使多个类映射到一个构件中,从而将多个类通过构件生成一个整体的Java文件。但多个类映射到一个构件中时,却要求只有一个类(即和构件名相同的类)它的属性为Public。正向工程的简单例子见教科书P105,我们通过实验过程来理解。162.逆向工程Rose2003支持Java,C++等多语言的逆向工程,对Java来说,Rose根据.Java源代码或.Class源代码逆向得到类图和构件图。步骤是:1)在d:盘找到一个jave源程序,Clock.Java2)选ToolsJava/J2EEReverseEngineer…弹出对话框“JavaReverseEngineer”选中Clock.java按Add按钮,将其移到下方窗口中3)按Reverse按钮,Rose最后得到相应的一些类和构件。4)如果想显示类之间的关系,可把它们拖到类图中观看。类似地,如果想显示构件之间的关系,可把它们拖到构件图中观看。(见P111)三.构件图的工具支持17四.Rose支持的构件类型(略,见Rose)五.RoseModel映射到VC++的操作1.创建类:比如:Contract(合同)类SalseContract类和Product类,并建立它们之间的关系.182.在VC++中创建一个Project,命名“SalesSystem”3.设置Default语言为VC++4.ToolsVisualC++ComponentAssignmentTool出现ComponentAssignmentTool窗口5将窗口右方的Unassignedclass中的类Contract拖到VC++处:五.RoseModel映射到VC++的操作(续)196.这时出现对话:DoyouwishtocreateaVC++Componentandassigntheclasstoit?回答:yes五.RoseModel映射到VC++的操作(续二)207.在SelectaVC++projectfile窗口中出现project图标.按Add按钮创建一个单文档新工程8.单击OK完成映射.这时在ComponentView中可以看到新构件.五.RoseModel映射到VC++的操作(续三)219.同理将Product和SalesContract拖到VC++处如下:五.RoseModel映射到VC++的操作(续四)2210.在ComponentView中,可看到:五.RoseModel映射到VC++的操作(续五)23六.在RoseModel下生成VC++代码1、Tools/VisualC++/ModelAssistant打开VisualC++ModelAssistant窗口2.在左边浏览器中选ClassOptions则出现Rose自动产生的操作3.勾选其中的操作(如:~Contract,Contract…等4.再选Attributes下的内容可在其中调整类的属性及Accesslevel和Operationkind等246.单击DefaultCodeBody右侧笔状按钮,添加函数体.7.生成代码1)选择类图中有关的类,单击右键,选Updatecode2)完成更新代码后,VC++自动生成代码.(注意观察.h和.cpp代码)六.在RoseModel下生成VC++代码(续一)25六.在RoseModel下生成VC++代码(续二)

1 / 25
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功