📄 uml建模的要点总结-开发频道-it技术-天极网.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0038)http://dev.yesky.com/241/8757741.shtml -->
<HTML lang=zh-CN xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>UML建模的要点总结-开发频道-IT技术-天极网</TITLE>
<META
content="UML建模的要点总结,开发者网络瞄准中国程序员群体,涵盖软件开发的各个技术层面,从Windows下的应用程序开发,到Java、Web开发、游戏开发和移动开发领域,均有相关教程和实例、技巧。 "
name=description>
<META
content="UML建模的要点总结,Java,.NET,WEB开发,C#,C++,PHP,ORACLE,DB2,MySQL,SQL Server,Sybase,移动开发,开源技术,软件测试,SOA,信息化,软件工程,程序员,微软,雅虎,IBM,数据库,Html,新闻,技巧,Rational,云计算,虚拟化,业界"
name=keywords>
<META content="天极网 | 全球中文IT第一门户" name=author>
<META content="天极网 | 全球中文IT第一门户" name=Copyright>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META http-equiv=Content-Language content=zh-CN><LINK media=all
href="UML建模的要点总结-开发频道-IT技术-天极网.files/common_c.css" type=text/css rel=stylesheet>
<SCRIPT src="UML建模的要点总结-开发频道-IT技术-天极网.files/c_contentdiv.js"></SCRIPT>
<META content="MSHTML 6.00.2900.5512" name=GENERATOR></HEAD>
<BODY>
<STYLE>#menulist {
MARGIN: 12px auto 0px; WIDTH: 983px; LINE-HEIGHT: 20px; BORDER-BOTTOM: #69708f 1px solid; HEIGHT: 20px
}
#menulist A {
MARGIN: 0px 5px; COLOR: #000
}
#tophead {
PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 6px; MARGIN: 0px auto; WIDTH: 983px; PADDING-TOP: 6px; HEIGHT: 90px
}
#imglogo {
FLOAT: left; MARGIN-RIGHT: 6px
}
#topad {
FLOAT: left; WIDTH: 500px
}
#topsearch {
FLOAT: left; MARGIN: 0px 3px 0px 9px
}
#searchzz {
WIDTH: 95px; MARGIN-RIGHT: 2px; PADDING-TOP: 5px; HEIGHT: 19px
}
#search_btn {
BORDER-RIGHT: #999 1px solid; BORDER-TOP: #999 1px solid; BORDER-LEFT: #999 1px solid; WIDTH: 63px; BORDER-BOTTOM: #999 1px solid; HEIGHT: 29px
}
#toparea {
MARGIN-TOP: 8px; FLOAT: left; WIDTH: 165px
}
#leftarea {
FLOAT: left; WIDTH: 120px
}
.topbd {
BORDER-RIGHT: #cc4509 1px solid; PADDING-RIGHT: 3px; BORDER-TOP: #cc4509 1px solid; PADDING-LEFT: 3px; BACKGROUND: #fcffe8; PADDING-BOTTOM: 3px; BORDER-LEFT: #cc4509 1px solid; LINE-HEIGHT: 21px; PADDING-TOP: 3px; BORDER-BOTTOM: #cc4509 1px solid
}
#leftarea A {
MARGIN: 0px 2px 0px 3px; COLOR: #000
}
#rightarea {
FLOAT: right; WIDTH: 24px
}
#rightarea A {
COLOR: #000
}
#toprightlist {
BORDER-RIGHT: #afc4d7 1px solid; BORDER-TOP: #afc4d7 1px solid; FLOAT: right; OVERFLOW: hidden; BORDER-LEFT: #afc4d7 1px solid; WIDTH: 172px; LINE-HEIGHT: 22px; BORDER-BOTTOM: #afc4d7 1px solid; WHITE-SPACE: nowrap; HEIGHT: 88px
}
#toprightlist LI {
LIST-STYLE-POSITION: outside
}
#toprightlist LI A {
COLOR: #000
}
</STYLE>
<!--菜单开始-->
<DIV id=menulist><A href="http://www.yesky.com/" target=_blank>天极首页</A>|<A
href="http://product.yesky.com/" target=_blank>产品报价</A>|<A
href="http://price.yesky.com/" target=_blank>行情</A>|<A
href="http://mobile.yesky.com/" target=_blank>手机</A>|<A
href="http://digital.yesky.com/" target=_blank>数码</A>|<A
href="http://notebook.yesky.com/" target=_blank>笔记本</A>|<A
href="http://pc.yesky.com/" target=_blank>台式机</A>|<A
href="http://diy.yesky.com/" target=_blank>DIY</A>|<A
href="http://oa.yesky.com/" target=_blank>外设</A>|<A href="http://net.yesky.com/"
target=_blank>网络</A>|<A href="http://server.chinabyte.com/"
target=_blank>服务器</A>|<A href="http://gps.yesky.com/" target=_blank>GPS</A>|<A
href="http://dh.yesky.com/" target=_blank>数字家庭</A>|<A
href="http://soft.yesky.com/" target=_blank>软件</A>|<A
href="http://game.yesky.com/" target=_blank>游戏</A>|<A
href="http://desktop.yesky.com/" target=_blank>壁纸</A>|<A
href="http://q.yesky.com/" target=_blank>群乐</A>|<A href="http://blog.yesky.com/"
target=_blank>博客</A>|<A href="http://www.mydown.com/" target=_blank>下载</A>|<A
href="http://vista.yesky.com/" target=_blank>VISTA</A>|<A
href="http://2008.yesky.com/" target=_blank>奥运</A>|<A
href="http://bbs.yesky.com/" target=_blank>BBS</A></DIV><!--菜单结束--><!--LOGO及广告等开始-->
<DIV id=tophead>
<DIV id=imglogo><A id=pagelogo href="http://www.yesky.com/"><IMG
alt=天极Yesky_全球中文IT第一门户
src="UML建模的要点总结-开发频道-IT技术-天极网.files/112x90_logo.gif"></A></DIV>
<DIV id=topad><SPAN id=ad1></SPAN></DIV>
<DIV id=topsearch>
<FORM name=searchform action=http://search.yesky.com/search.do method=get
target=_blank><INPUT id=searchzz onmouseover=this.focus() onfocus=this.select()
name=wd><INPUT id=search_btn type=submit value=天极搜索> </FORM>
<DIV id=toparea>
<DIV class=topbd id=leftarea><A href="http://bj.yesky.com/"
target=_blank>北京</A><A href="http://hd.yesky.com/" target=_blank>上海</A><A
href="http://gd.yesky.com/" target=_blank>广州</A><A href="http://sz.yesky.com/"
target=_blank>深圳</A><BR><A href="http://nj.it365.com/" target=_blank>南京</A><A
href="http://ty.it365.com/" target=_blank>太原</A><A href="http://sy.it365.com/"
target=_blank>沈阳</A><A href="http://xa.it365.com/" target=_blank>西安</A> </DIV>
<DIV class=topbd id=rightarea><A href="http://my.yesky.com/"
target=_blank>用户<BR>登录</A></DIV></DIV></DIV>
<DIV id=toprightlist>
<SCRIPT src="UML建模的要点总结-开发频道-IT技术-天极网.files/content_text_ad.js"
type=text/javascript></SCRIPT>
</DIV></DIV>
<SCRIPT src="UML建模的要点总结-开发频道-IT技术-天极网.files/flash.js"
type=text/javascript></SCRIPT>
<!--LOGO及广告等结束--><!--子菜单开始-->
<DIV id=childmenu twffan="done"><A href="http://soft.yesky.com/"
target=_self>软件频道></A><A href="http://dev.yesky.com/"
target=_self>程序开发></A><A href="http://dev.yesky.com/devjava/"
target=_self>Java</A><A href="http://dev.yesky.com/ysdevvb"
target=_self>VB</A><A href="http://dev.yesky.com/ysdevvc" target=_self>VC</A><A
href="http://dev.yesky.com/ysdevdelphi" target=_self>Delphi</A><A
href="http://dev.yesky.com/ysdevc" target=_self>C/C++</A><A
href="http://dev.yesky.com/web/" target=_self>Web开发</A><A
href="http://dev.yesky.com/msdn/" target=_self>微软专栏</A><A
href="http://dev.yesky.com/devydkf/" target=_self>移动</A><A
href="http://dev.yesky.com/devsjk/" target=_self>数据库</A><A
href="http://dev.yesky.com/ysdevcxrs" target=_self>程序人生</A><A
href="http://dev.yesky.com/ysdevrjgc" target=_self>软件工程</A>|<A
href="http://www.ibm.com/developerworks/cn/java/j-rtm1/index.html?S_TACT=105AGX52&S_CMP=tec-yesky"
target=_self>Java 运行时监控</A></DIV><!--子菜单结束--><!--当前位置开始-->
<DIV id=location>
<DIV class=floatl>您现在的位置:<SPAN id=lo_links> <A href="http://www.yesky.com/"
target=_self>天极网</A> > <A href="http://dev.yesky.com/" target=_self>开发频道</A>
</SPAN>> UML建模的要点总结</DIV>
<DIV class="floatr tr"><SPAN id=ad2></SPAN></DIV></DIV><!--当前位置结束--><!--内容块开始-->
<DIV id=conbox><!--左边开始-->
<DIV id=conleft><!--标签开始-->
<DIV id=clabel>
<DIV id=__001>
<DIV class=floatl>
<DIV class="clabelqw tc">全文</DIV>
<DIV class="clabelcp tc">
<DIV><A href="http://dev.yesky.com/241/8757741.shtml#pls"
target=_self>评论</A></DIV><SPAN></SPAN></DIV></DIV><!-- Error -->
<DIV class=floatl>
<DIV class=clabelqln><A id=mainGroupURL href="http://q.yesky.com/group/213435"
target=_blank>群乐</A></DIV></DIV></DIV></DIV><!--标签结束-->
<DIV class=topadbg><SPAN id=ad10></SPAN></DIV><A name=top></A>
<H1 id=artibodyTitle>UML建模的要点总结</H1>
<DIV id=conauthor><SPAN>2009-03-18
11:57</SPAN><SPAN>作者:</SPAN><SPAN>出处:天极网</SPAN><SPAN>责任编辑:郑重</SPAN></DIV>
<DIV class=topadbg><SPAN id=ad9></SPAN></DIV><!--正文开始-->
<DIV id=conneirong><SPAN id=ad3></SPAN>
<DIV id=artibody><!-- Error -->
<DIV class=clear1></DIV>
<DIV class=guanggao><SPAN id=contentAdv></SPAN></DIV>
<P> 预备知识:</P>
<P> 一、UML的特性与发展现状</P>
<P> UML是一种Language(语言)</P>
<P> UML是一种Modeling(建模)Language</P>
<P> UML是Unified(统一)Modeling Language</P>
<P> 1、已进入全面应用阶段的事实标准</P>
<P> 2、应用领域正在逐渐扩展,包括嵌入式系统建模、业务建模、流程建模等多个领域</P>
<P> 3、成为“产生式编程”的重要支持技术:MDA、 可执行UML等</P>
<P> 二、建模的目的与原则</P>
<P> 1、帮助我们按照实际情况或按我们需要的样式对系统进行可视化;提供一种详细说明系统的结构或行为的方法;给出一个指导系统构造的模板;对我们所做出的决策进行文档化。</P>
<P> 2、仅当需要模型时,才构建它。</P>
<P> 3、选择要创建什么模型对如何动手解决问题和如何形成解决方案有着意义深远的影响;每一种模型可以在不同的精度级别上表示;最好的模型是与现实相联系的;单个模型是不充分的。对每个重要的系统最好用一组几乎独立的模型去处理。</P>
<P> 三、谁应该建模</P>
<P> 1、业务建模:以领域专家为主,需求分析人员是主力,系统分析员、架构师可参与</P>
<P> 2、需求模型:以需求分析人员为主,系统分析员是主力,领域专家提供指导,架构师和资深开发人员参与</P>
<P> 3、设计模型:高层设计模型以架构师为主,系统分析员从需求方面提供支持,资深开发人员从技术实现方面提供支持。详细设计模型则以资深开发人员为主,架构师提供指导。</P>
<P> 4、实现模型:以资深开发人员(设计人员)为主,架构师提供总体指导。</P>
<P> 5、数据库模型:以数据库开发人员为主,架构师提供指导,资深开发人员(设计人员)予以配合。</P>
<P> 正式开始</P>
<P> UML组成,三部分(构造块、规则、公共机制),关系如下图所示:</P>
<P> <IMG height=475 alt=""
src="UML建模的要点总结-开发频道-IT技术-天极网.files/1353tg6uie5x.jpg" width=682></P>
<P> 一、构造块</P>
<P> 1、构造块是对模型中最具有代表性的成分的抽象</P>
<P> 建模元素:UML中的名词,它是模型基本物理元素。</P>
<P> 行为元素:UML中的动词,它是模型中的动态部分,是一种跨越时间、空间的行为。</P>
<P> 分组元素:UML中的容器,用来组织模型,使模型更加的结构化。</P>
<P> 注释元素:UML中的解释部分,和代码中的注释语句一样,是用来描述模型的。</P>
<P> 1.1、建模元素</P>
<P> 类(class)和对象(object)</P>
<P> 接口(interface)</P>
<P> 主动类(active class)</P>
<P> 用例(use case)</P>
<P> 协作(collaboration)</P>
<P> 构件(component)</P>
<P> 节点(node)</P>
<P> 类(class)和对象(object)</P>
<P> 类是对一组具有相同属性、相同操作、相同关系和相同语义的对象的抽象</P>
<P> UML中类是用一个矩形表示的,它包含三个区域,最上面是类名、中间是类的属性、最下面是类的方法</P>
<P> 对象则是类的一个实例 (object is a Instance of Class)</P>
<P> 接口(interface)</P>
<P> 接口是描述某个类或构件的一个服务操作集</P>
<P> 主动类(active class)</P>
<P> 主动类实际上是一种特殊的类。引用它的原因,实际上是在开发中需要有一些类能够起到 启动控制活动的作用</P>
<P> 主动类是指其对象至少拥有一个进 程或线程,能够启动控制活动的类</P>
<P> 用例(use case)</P>
<P> 用例是著名的大师Ivar Jacobson首先提出的,现已经成为了面向对象软件开发中一个需求分析的最常用工具</P>
<P> 用例实例是在系统中执行的一系列动作,这些动作将生成特定执行者可见的价值结果。一个 用例定义一组用例实例。</P>
<P> 协作(collaboration)</P>
<P> 协作定义了一个交互,它是由一组共同工作以提供某协作行为的角色和其他元素构 成的一个群体。</P>
<P> 对于某个用例的实现就可 以表示为一个协作</P>
<P> 构件(component)</P>
<P> 在实际的软件系统中,有许多要比“类”更大的实体,例如一个COM组件、一个DLL文件、一个JavaBeans、一个执行文件等等。为了更好地对在UML模型中对它们进行表示,就引入了构件(也译为组件)</P>
<P> 构件是系统设计的一个模块化部分,它隐藏了内部的实现,对外提供了一组外部接口。在系统中满足相同接口的组件可以自由地替换</P>
<P> 节点(node)</P>
<P> 为了能够有效地对部署的结构进行建模,UML引入了节点这一概念,它可以用来描述实际的PC机、打印机、服务器等软件运行的基础硬件</P>
<P> 节点是运行时存在的物理元素,它表示了一种可计算的资源,通常至少有存储空间和处理能力</P>
<P> 1.2、行为元素</P>
<P> 交互(interaction): 是在特定语境中,共同完成某个任务的一组对象之间交换的信息集合</P>
<P> 交互的表示法很简单,就是一条有向直线,并在上面标有操作名</P>
<P> 状态机(state machine):是一个对象或交互在生命周期内响应事件所经历的状态序列</P>
<P> 在UML模型中将状态画为一个圆 角矩形,并在矩形内写出状态名 称及其子状态</P>
<P> 1.3、分组元素</P>
<P> 对于一个中大型的软件系统而言,通常会包含大量的类,因此也就会存在大量的结构事物、行为事物,为了能够更加有效地对其进行整合,生成或简或繁、或宏观或微观的模型,就需要对其进行分组。在UML中,提供了“包(Package)”来完成这一目标</P>
<P> 1.4、注释元素</P>
<P> 结构事物是模型的主要构造块,行为事物则是补充了模型中的动态部分,分组事物而是用来更好地组织模型,似乎已经很完整了。而注释事物则是用来锦上添花的,它是用来在UML模型上添加适当的解释部分</P>
<P> 2、关系</P>
<P> UML模型的关系比较多,下图</P>
<P> <IMG height=462 alt=""
src="UML建模的要点总结-开发频道-IT技术-天极网.files/1046862cudqj.jpg" width=684></P>
<P> 2.1 关联关系</P>
<P> 关联(Association)表示两个类之间存在某种语义上的联系。关联关系提供了通信的路径,它是所有关系中最通用、语义最弱的。</P>
<P> 在UML中,使用一条实线来表示关联关系</P>
<P> 在关联关系中,有两种比较特殊的关系:聚合和组合</P>
<P> 聚合关系:聚合(Aggregation)是一种特殊形式的关联。聚合表示类之间的关系是整体与部分的关系</P>
<P> 如果发现“部分”类的存在,是完全依赖于“整体”类的,那么就应该使用“组合”关系来描述</P>
<P> 组合是聚合的变种,加入了一些重要的语义。也就是说,在一个组合关系中一个对象一次就只是一个组合的一部分,“整体”负责“部分”的创建和破坏,当“整体”被破坏时,“部分”也随之消失</P>
<P> 聚合就像汽车和车胎,汽车坏了胎还可以用。组合就像公司和下属部门,公司倒闭了部门也就不存在了!</P>
<P> 2.2 泛化、实现与依赖</P>
<P> 泛化关系描述了一般事物与该事物中的特殊种类之间的关系,也就是父类与子类之间的关系。</P>
<P> 实现关系是用来规定接口和实现接口的类或组件之间的关系。接口是操作的集合,这些操作用于规定类或组件的服务。</P>
<P> 有两个元素X、Y,如果修改元素X的定义可能会引起对另一个元素Y的定义的修改,则称元素Y依赖(Dependency)于元素X。</P>
<P> 二、规则</P>
<P> 命名:也就是为事物、关系和图起名字。和任何语言一样,名字都是一个标识符</P>
<P> 范围:与类的作用域相似.</P>
<P> 可见性:Public,Protected,Private,Package</P>
<P> 三、UML公共机制</P>
<P> 1、规格描述</P>
<P> 在图形表示法的每个部分后面都有一个规格描述(也称为详述),它用来对构造块的语法和语义进行文字叙述。这种构思,也就使可视化视图和文字视图的分离
:</P>
<P> 2、UML修饰与通用划分</P>
<P> 在为了更好的表示这些细节,UML中还提供了一些修饰符号,例如不同可视性的符号、用斜体字表示抽象类</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -