??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩中文字幕一区,亚洲人一区二区,中文字幕一区日韩精品http://www.aygfsteel.com/freeman1984/category/48926.html STANDING ON THE SHOULDERS OF GIANTSzh-cnMon, 27 Jun 2011 03:28:50 GMTMon, 27 Jun 2011 03:28:50 GMT60UML用例?/title><link>http://www.aygfsteel.com/freeman1984/archive/2010/09/25/332818.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Sat, 25 Sep 2010 06:22:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2010/09/25/332818.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/332818.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2010/09/25/332818.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/332818.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/332818.html</trackback:ping><description><![CDATA[<span>前些旉参加了潘加宇老师的技术讲座,</span><span>UML</span><span>建模技术受益匪。我也把qx的一些积累和上次的收hȝ在这文章中Q主要讲解用例图相关的知识?/span><span><br />       </span><span>用例图是软g需求分析到最l实现的W一步,它描q用户如何用系l及使用pȝ什么样的功能。用例图从业务角度上体现谁来使用pȝ、用户希望系l提供什么样的服务,以及用户需要ؓpȝ提供的服务,也便于Y件开发h员最l实现这些功能。用例图在开发中被广泛的应用Q但是它最常用来描q系l提供了什么样的功能给什么样的用户用?/span><span><br /> </span> <p><span><span>       </span><span>在官Ҏ档中用例囑֌含六个元素,分别是:执行?/span><span>(Actor)</span><span>、用?/span><span>(Use Case)</span><span>、关联关p?/span><span>(Association)</span><span>、包含关p?/span><span>(Include)</span><span>、扩展关p?/span><span>(Extend)</span><span>以及泛化关系</span><span>(Generalization)</span><span>。但是有?/span><span>UML</span><span>的绘囑ַ具多提供了一U直接关联关p?/span><span>(DirectedAssociation)</span><span>?/span><span><br /> </span></span></p> <p><span><span>        </span><span>用例囑֏一个包含注释和U束Q还可一个包含包Q用于将模型中的元素l合成更大的模块。有Ӟ可以用例的实例引入到图中。用例图模型如下所C,执行者用人Ş图标来标识,用例用椭圆来表示Q连U表C它们之间的关系?/span><span><br /> </span></span></p> <p> <br />  </p> <p><span><strong><span>一、执行者(</span><span>Actor</span><span>Q?/span></strong><span><br /> </span></span></p> <p><span><strong><span>      </span><span> 1</span><span>、执行者概?/span><span><br /> </span></strong></span></p> <p><span><span>    </span><span>是指用户在系l中扮演的角艌Ӏ如?/span><span>1-1</span><span>是一个用L理的用例图,图中的用戗管理员是用例的执行者?/span><span><br /> </span></span></p> <p><img alt="" src="http://www.alisdn.com/wordpress/wp-content/uploads/2009/03/030609-0708-uml1.png" /><span><br /> </span></p> <p><span><span>                    </span><span>?/span><span>1-1<br /> </span></span></p> <p><span><strong><span>         2</span><span>、从业务中找出执行?/span><span><br /> </span></strong></span></p> <p><span><span><strong>    </strong></span><span>获取pȝ用例首先要找出系l的执行者。我们可以通过用户回答一些问题的{案来识别执行者。可以参考以下问题:<br /> </span></span></p> <ol> <li><span>谁用系l的主要功能Q主要用者)Q?br /> </span></li> <li><span>谁需要系l支持他们日常工作?<br /> </span></li> <li><span>谁来l护、管理系l其正常工作(辅助使用者)Q?br /> </span></li> <li><span>pȝ需要控制哪些硬Ӟ<br /> </span></li> <li><span>pȝ需要其他哪些系l交互?q里包含其他计算机系l或者应用程序?br /> </span></li> <li><span>对系l生结果感兴趣的是哪些人和哪些事物Q?br /> </span></li> </ol> <p><span><strong><span>       3</span><span>、执行者之间关p?/span><span><br /> </span></strong></span></p> <p><span><span>因ؓ执行者是c,所以多个执行者之间可以具有与cȝ同的关系。在用例图中Q用了泛化关系来描q多个执行者之间的公共行ؓ。如果系l中存在几个执行者,它们既扮演自w的角色Q同时也扮演更具一般化的角Ԍ那么q泛化关系来描q它们。这U情况往往发生在一般角色的行ؓ在执行者超cM描述的场合。特D化的执行者承了该超cȝ行ؓQ然后在某些斚w扩展了此行ؓ。执行者之间的泛化关系用一个三角箭头来表示Q指向扮演一般角色的类。这?/span><span>UML</span><span>中类之间的返q关pȝL同。图1-2<br /> </span></span></p> <p><img alt="" src="http://www.alisdn.com/wordpress/wp-content/uploads/2009/03/030609-0708-uml2.png" /><span><br /> </span></p> <p><span><span>                    </span><span>?-2<br /> </span></span></p> <p> </p> <p><span><strong><span>二、用例(</span><span>Use Case</span><span>Q?/span></strong><span><br /> </span></span></p> <p><span><strong><span>         1</span><span>、用例概?/span><span><br /> </span></strong></span></p> <p><span><span>    </span><span>用例是外部可见的系l功能,对系l提供的服务q行描述?/span><span><br /> </span></span></p> <p><span><strong><span>         2</span><span>、从业务中找出用?/span><span><br /> </span></strong></span></p> <p><span><span>    </span><span>扑ևpȝ的用例,我们从执行者入手,Ҏ个执行者提Z些问题,然后从执行者对q些问题的答案中获取用例。可以参考以下问题:</span><span><br /> </span></span></p> <ol> <li><span>执行者要求系l提供哪些功能(执行者需要做什么)Q?br /> </span></li> <li><span>执行者需要读、生、修攏V删除或者存储系l中的信息有哪些cdQ?br /> </span></li> <li><span>执行者必L醒系l事件有哪些Q把q些事g表示成系l用例?br /> </span></li> </ol> <p><span><strong><span>         3</span><span>、用例之间关p?/span></strong><span><br /> </span></span></p> <p><span><strong><span>二、用例之间关p?/span><span><br /> </span></strong></span></p> <p><span><strong><span>        1</span><span>、关联关p(</span><span>Association</span>Q?br /> </strong></span></p> <p><span><span>兌关系是连接执行者和用例Q表C执行者代表的外部pȝ实体与该用例描述的系l需求有兟?/span><span><br /> </span></span></p> <p><img alt="" src="http://www.alisdn.com/wordpress/wp-content/uploads/2009/03/030609-0708-uml3.png" /><span><strong><br /> </strong></span></p> <p><span>?-3<br /> </span></p> <p><span><strong><span>        2</span>、包含关p(<span>Include</span>Q?br /> </strong></span></p> <p><span>包含关系是来自于用例的抽象,即从C不同的Use Case中,分离出公q部分Q而成为可以复用的用例?br /> </span></p> <p><img alt="" src="http://www.alisdn.com/wordpress/wp-content/uploads/2009/03/030609-0708-uml4.png" /><span><strong><br /> </strong></span></p> <p><span><span>?/span><span>1-4<br /> </span></span></p> <p><span><strong><span>        3</span>、扩展关p(<span>Extend</span>Q?br /> </strong></span></p> <p><span><strong>    </strong>扩展关系表示某一个用例的对话程中,可能会根据条件时插入另外一个用例,而前者称为基用例后者称为扩展用例?br /> </span></p> <p><span>    <img alt="" src="http://www.alisdn.com/wordpress/wp-content/uploads/2009/03/030609-0708-uml5.png" /><br /> </span></p> <p><span>                ?-5<strong><br /> </strong></span></p> <p><span><strong>4、泛化关p(<span>Generalization</span>Q?br /> </strong></span></p> <p><span><strong>    </strong>一个用例可以被特别列DZ个或多个用例Q这被称为用例泛化,如果pȝ中一个或多个用例是某个一般用例的Ҏ化时Q就需要用用例的泛化关系?br /> </span></p> <p><span>    <img alt="" src="http://www.alisdn.com/wordpress/wp-content/uploads/2009/03/030609-0708-uml6.png" /><strong><br /> </strong></span></p> <img src ="http://www.aygfsteel.com/freeman1984/aggbug/332818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">@joe</a> 2010-09-25 14:22 <a href="http://www.aygfsteel.com/freeman1984/archive/2010/09/25/332818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UML中几U类间关p:l承、实现、依赖、关联、聚合、组合的联系与区?/title><link>http://www.aygfsteel.com/freeman1984/archive/2010/09/25/332815.html</link><dc:creator>@joe</dc:creator><author>@joe</author><pubDate>Sat, 25 Sep 2010 06:19:00 GMT</pubDate><guid>http://www.aygfsteel.com/freeman1984/archive/2010/09/25/332815.html</guid><wfw:comment>http://www.aygfsteel.com/freeman1984/comments/332815.html</wfw:comment><comments>http://www.aygfsteel.com/freeman1984/archive/2010/09/25/332815.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/freeman1984/comments/commentRss/332815.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/freeman1984/services/trackbacks/332815.html</trackback:ping><description><![CDATA[<p> 转蝲自:<a >http://blog.csdn.net/sfdev/archive/2009/02/18/3906243.aspx</a><br /> q是一堂关于UML基础知识的补习课Q现在我们做目旉都太紧了Q基本上都没有做q真正的classU别的详l设计,更别提用UML来实现规范徏模了Q本主要就以前自己一直感觉很qL的几Uclass之间的关p进行整理,让我们在真正用UMLq行比如cd设计时能够更加清晰明了;以下分别介l这几种关系Q?/p> <h3>l承</h3> <p>指的是一个类Q称为子cR子接口Q承另外的一个类Q称为父cR父接口Q的功能Qƈ可以增加它自q新功能的能力Q承是cMcL者接口与接口之间最常见的关p;在Java中此cdp通过关键字extends明确标识Q在设计时一般没有争议性;<br /> <img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Generalization.jpg" width="293" height="204" /></p> <h3>实现</h3> <p>指的是一个classcd现interface接口Q可以是多个Q的功能Q实现是cM接口之间最常见的关p;在Java中此cdp通过关键字implements明确标识Q在设计时一般没有争议性;<br /> <img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Realization.jpg" width="121" height="203" /></p> <h3>依赖</h3> <p>可以单的理解Q就是一个类A使用C另一个类BQ而这U用关pLh偶然性的、、时性的、非常弱的,但是Bcȝ变化会媄响到AQ比如某q河Q需要借用一条船Q此时h与船之间的关pd是依赖;表现在代码层面,为类B作ؓ参数被类A在某个methodҎ中用;<br /> <img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Dependence.jpg" width="430" height="97" /></p> <h3>兌</h3> <p>他体现的是两个类、或者类与接口之间语义别的一U强依赖关系Q比如我和我的朋友;q种关系比依赖更强、不存在依赖关系的偶然性、关pM不是临时性的Q一般是长期性的Q而且双方的关pM般是q等的、关联可以是单向、双向的Q表现在代码层面Qؓ被关联类B以类属性的形式出现在关联类A中,也可能是兌cA引用了一个类型ؓ被关联类B的全局变量Q?br /> <img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Association.jpg" width="430" height="105" /></p> <h3>聚合</h3> <p>聚合是关联关pȝ一U特例,他体现的是整体与部分、拥有的关系Q即has-a的关p,此时整体与部分之间是可分ȝQ他们可以具有各自的生命周期Q部分可以属于多个整体对象,也可以ؓ多个整体对象׃nQ比如计机与CPU、公怸员工的关pȝQ表现在代码层面Q和兌关系是一致的Q只能从语义U别来区分;<br /> <img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Aggregation.jpg" width="430" height="108" /></p> <h3>l合</h3> <p>l合也是兌关系的一U特例,他体现的是一Ucontains-a的关p,q种关系比聚合更强,也称为强聚合Q他同样体现整体与部分间的关p,但此时整体与部分是不可分的,整体的生命周期结束也意味着部分的生命周期结束;比如你和你的大脑Q表现在代码层面Q和兌关系是一致的Q只能从语义U别来区分;<br /> <img alt="" src="http://p.blog.csdn.net/images/p_blog_csdn_net/sfdev/EntryImages/20090218/Composition.jpg" width="430" height="106" /></p> <p>对于l承、实现这两种关系没多疑问,他们体现的是一U类与类、或者类与接口间的纵向关p;其他的四者关pd体现的是cMcR或者类与接口间的引用、横向关p,是比较难区分的,有很多事物间的关p要惛_备定位是很难的,前面也提刎ͼq几U关p都是语义别的Q所以从代码层面q不能完全区分各U关p;但ȝ来说Q后几种关系所表现的强q度依ơؓQ组?gt;聚合>兌>依赖Q?/p> <img src ="http://www.aygfsteel.com/freeman1984/aggbug/332815.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/freeman1984/" target="_blank">@joe</a> 2010-09-25 14:19 <a href="http://www.aygfsteel.com/freeman1984/archive/2010/09/25/332815.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">齭</a>| <a href="http://" target="_blank">ī񹤿</a>| <a href="http://" target="_blank">ؿ˹</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˾</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">߷</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ƹ</a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ʶ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˻</a>| <a href="http://" target="_blank">ҵ</a>| <a href="http://" target="_blank">żҽ</a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>