﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-Fly Heart</title><link>http://www.blogjava.net/XmuDonald/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 00:47:04 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 00:47:04 GMT</pubDate><ttl>60</ttl><item><title>UML学习-摘自《大话设计模式》</title><link>http://www.blogjava.net/XmuDonald/archive/2011/12/21/366963.html</link><dc:creator>Donald can save the Xmu</dc:creator><author>Donald can save the Xmu</author><pubDate>Wed, 21 Dec 2011 13:43:00 GMT</pubDate><guid>http://www.blogjava.net/XmuDonald/archive/2011/12/21/366963.html</guid><wfw:comment>http://www.blogjava.net/XmuDonald/comments/366963.html</wfw:comment><comments>http://www.blogjava.net/XmuDonald/archive/2011/12/21/366963.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/XmuDonald/comments/commentRss/366963.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/XmuDonald/services/trackbacks/366963.html</trackback:ping><description><![CDATA[&nbsp; 在自己设计的过程中，有时很困惑于这些类图。记下来以便后面回顾。<br /><img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/xmudonald/Uml.jpg" width="500" longdesc="" height="404" /><br /> 
<p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'>&nbsp; &nbsp; &nbsp; &nbsp;类（class）&nbsp;：类图分三层。第一层显示类的名称，若是抽象类，则用斜体显示。第二层显示类属性，通常为字段或属性。第三层显示类的操作，即方法或行为。属性和方法前的符号："+"表示public，"-"表示private，&#8220;#&#8221;&nbsp;表示protected。</p>
<p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'>&nbsp; &nbsp; &nbsp; &nbsp;接口（interface）：矩形表示法及棒棒糖表示法。矩形表示法：顶端有《interface》，第一行接口名称，第二行接口方法。棒棒糖表示法：圆圈旁边为接口名称，方法在类中表示。</p>
<p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;继承（extends）：空心三角形+实线。如图中鸟继承于动物，鸟具有动物的基本属性，并且有身为鸟类特殊的属性及方法。</p>
<p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'>&nbsp; &nbsp; &nbsp; &nbsp;实现（implements）：空心三角形+虚线。如图中的大雁实现了飞翔的接口，大雁也就具有了飞的方法。</p>
<p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'>&nbsp; &nbsp; &nbsp; &nbsp;关联（association）：实线箭头。如图中企鹅和气候的关系，企鹅需要知道气候的变化，因此在它的内部中添加了气候的属性，表示它知道了气候的类。</p>

<p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 128, 128);">1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);"> </span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);"> Penguin </span><span style="color: rgb(0, 0, 255);">extends</span><span style="color: rgb(0, 0, 0);"> Bird<br /></span><span style="color: rgb(0, 128, 128);">2</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_34_62_Open_Image" onclick="this.style.display='none'; Codehighlighter1_34_62_Open_Text.style.display='none'; Codehighlighter1_34_62_Closed_Image.style.display='inline'; Codehighlighter1_34_62_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none;" id="Codehighlighter1_34_62_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_34_62_Closed_Text.style.display='none'; Codehighlighter1_34_62_Open_Image.style.display='inline'; Codehighlighter1_34_62_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_34_62_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_34_62_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /></span><span style="color: rgb(0, 128, 128);">3</span><span style="color: rgb(0, 0, 0);"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />  </span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);"> Climate climate<br /></span><span style="color: rgb(0, 128, 128);">4</span><span style="color: rgb(0, 0, 0);"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div><p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 聚合（aggregation）：空心菱形+实线箭头。聚合表示一种弱&#8220;拥有"关系，即A类可以包含B类，但B类不是A类中的一部分，如图中的雁群和大雁的关系，雁群中有大雁，但大雁不是雁群的一部分。</p><div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 128, 128);">1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;WideGrooseAggregation<br /></span><span style="color: rgb(0, 128, 128);">2</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_35_77_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_77_Open_Text.style.display='none'; Codehighlighter1_35_77_Closed_Image.style.display='inline'; Codehighlighter1_35_77_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none;" id="Codehighlighter1_35_77_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_35_77_Closed_Text.style.display='none'; Codehighlighter1_35_77_Open_Image.style.display='inline'; Codehighlighter1_35_77_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_35_77_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_35_77_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /></span><span style="color: rgb(0, 128, 128);">3</span><span style="color: rgb(0, 0, 0);"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;WideGroose[]&nbsp;arrayWideGroose<br /></span><span style="color: rgb(0, 128, 128);">4</span><span style="color: rgb(0, 0, 0);"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div><p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'>&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;组合（composition）：实心菱形+实线箭头。组合表示一种强&#8220;拥有"关系，体现了严格的部分和整体关系，部分和整体的生命周期一样。如图中，鸟和翅膀的关系。其中，连线两端的"1"和"2"，称为基数，表示这一端的类有几个实例。如果一个类可以有无数个实例，则用"n"表示。关联关系、聚合关系也可以有基数<font face="Verdana">。</p><div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 128, 128);">1</span><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif"  alt="" /><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Bird<br /></span><span style="color: rgb(0, 128, 128);">2</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_18_93_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_93_Open_Text.style.display='none'; Codehighlighter1_18_93_Closed_Image.style.display='inline'; Codehighlighter1_18_93_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none;" id="Codehighlighter1_18_93_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_18_93_Closed_Text.style.display='none'; Codehighlighter1_18_93_Open_Image.style.display='inline'; Codehighlighter1_18_93_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_18_93_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_18_93_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /></span><span style="color: rgb(0, 128, 128);">3</span><span style="color: rgb(0, 0, 0);"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">private</span><span style="color: rgb(0, 0, 0);">&nbsp;Wing&nbsp;wing;<br /></span><span style="color: rgb(0, 128, 128);">4</span><span style="color: rgb(0, 0, 0);"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Bird()<br /></span><span style="color: rgb(0, 128, 128);">5</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_62_91_Open_Image" onclick="this.style.display='none'; Codehighlighter1_62_91_Open_Text.style.display='none'; Codehighlighter1_62_91_Closed_Image.style.display='inline'; Codehighlighter1_62_91_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none;" id="Codehighlighter1_62_91_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_62_91_Closed_Text.style.display='none'; Codehighlighter1_62_91_Open_Image.style.display='inline'; Codehighlighter1_62_91_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;</span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_62_91_Closed_Text"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_62_91_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /></span><span style="color: rgb(0, 128, 128);">6</span><span style="color: rgb(0, 0, 0);"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;wing&nbsp;</span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">new</span><span style="color: rgb(0, 0, 0);">&nbsp;Wing();<br /></span><span style="color: rgb(0, 128, 128);">7</span><span style="color: rgb(0, 0, 0);"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;}</span></span><span style="color: rgb(0, 0, 0);"><br /></span><span style="color: rgb(0, 128, 128);">8</span><span style="color: rgb(0, 0, 0);"><img align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span></div><p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'><br /></font>&nbsp;</p>

<p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 依赖（dependency）：虚线箭头。如图中，动物、水和氧气的关系。动物需要水和氧气。</p>
<div style="padding: 4px 5px 4px 4px; border: 1px solid rgb(204, 204, 204); width: 98%; font-size: 13px; word-break: break-all; background-color: rgb(238, 238, 238);"><img style="display: none;" id="Code_Closed_Image_214127" onclick="this.style.display='none'; Code_Closed_Text_214127.style.display='none'; Code_Open_Image_214127.style.display='inline'; Code_Open_Text_214127.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" height="16"><img style="display: inline;" id="Code_Open_Image_214127" onclick="this.style.display='none'; Code_Open_Text_214127.style.display='none'; Code_Closed_Image_214127.style.display='inline'; Code_Closed_Text_214127.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" height="16"><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Code_Closed_Text_214127">依赖关系示例</span><span style="display: inline;" id="Code_Open_Text_214127"><br /><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: rgb(0, 128, 128);">1</span><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: rgb(0, 0, 255);">abstract</span><span style="color: rgb(0, 0, 0);">&nbsp;</span><span style="color: rgb(0, 0, 255);">class</span><span style="color: rgb(0, 0, 0);">&nbsp;Animal<br /></span><span style="color: rgb(0, 128, 128);">2</span><span style="color: rgb(0, 0, 0);"><img id="Codehighlighter1_22_75_Open_Image" onclick="this.style.display='none'; Codehighlighter1_22_75_Open_Text.style.display='none'; Codehighlighter1_22_75_Closed_Image.style.display='inline'; Codehighlighter1_22_75_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none;" id="Codehighlighter1_22_75_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_22_75_Closed_Text.style.display='none'; Codehighlighter1_22_75_Open_Image.style.display='inline'; Codehighlighter1_22_75_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"></span><span style="border: 1px solid rgb(128, 128, 128); display: none; background-color: rgb(255, 255, 255);" id="Codehighlighter1_22_75_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_22_75_Open_Text"><span style="color: rgb(0, 0, 0);">{<br /></span><span style="color: rgb(0, 128, 128);">3</span><span style="color: rgb(0, 0, 0);"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: rgb(0, 0, 255);">public</span><span style="color: rgb(0, 0, 0);">&nbsp;Metabolism(Oxygen&nbsp;oxygen,&nbsp;Water&nbsp;water);<br /></span><span style="color: rgb(0, 128, 128);">4</span><span style="color: rgb(0, 0, 0);"><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></span></div>
<p style='font: 14px/normal "Microsoft Yahei", 微软雅黑, Tahoma, Arial, Helvetica, STHeiti; color: rgb(68, 68, 68); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; orphans: 2; widows: 2; font-size-adjust: none; font-stretch: normal; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;'><br />&nbsp;</p> 
 
 <img src ="http://www.blogjava.net/XmuDonald/aggbug/366963.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/XmuDonald/" target="_blank">Donald can save the Xmu</a> 2011-12-21 21:43 <a href="http://www.blogjava.net/XmuDonald/archive/2011/12/21/366963.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>