﻿<?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>C++博客-农妇，山泉，有点儿田-随笔分类-UML</title><link>http://www.cppblog.com/deadpunk/category/7394.html</link><description>我没有技术</description><language>zh-cn</language><lastBuildDate>Wed, 18 Jun 2008 03:32:44 GMT</lastBuildDate><pubDate>Wed, 18 Jun 2008 03:32:44 GMT</pubDate><ttl>60</ttl><item><title>(转载)你是我的玫瑰-类关系阐微</title><link>http://www.cppblog.com/deadpunk/archive/2008/06/18/53811.html</link><dc:creator>活着就是折腾，所以当然要骠悍的折腾</dc:creator><author>活着就是折腾，所以当然要骠悍的折腾</author><pubDate>Wed, 18 Jun 2008 01:59:00 GMT</pubDate><guid>http://www.cppblog.com/deadpunk/archive/2008/06/18/53811.html</guid><wfw:comment>http://www.cppblog.com/deadpunk/comments/53811.html</wfw:comment><comments>http://www.cppblog.com/deadpunk/archive/2008/06/18/53811.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/deadpunk/comments/commentRss/53811.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/deadpunk/services/trackbacks/53811.html</trackback:ping><description><![CDATA[<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 原帖地址：http://www.cnblogs.com/zjzkiss/<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 世界是普遍联系的，因此程序世界中的类，也不可能是孤立的。</span><span>UML</span><span>为我们定义了它们之间的关系，就是：依赖、关联、聚合、组合还有泛化。</span>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>泛化关系比较好理解，就是表示类之间的继承关系。容易混淆的是依赖、关联、聚合和组合的关系。这里做一些甄别：</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1、&nbsp;</span></span><span>依赖和关联的颠倒颠</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在网上查找了一下依赖和关联的区别，有说&#8220;</span><span>关联本身即是一种依赖&#8221;，亦有说&#8220;</span><span>依赖是一种弱关联</span><span>&#8221;，其实说来说去是一档子事。依赖和关联都是说一个类用到了另一个类。其区别在于一个是使用，一个是拥有。</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>依赖</strong>：具有某种偶然性。比如说我要过河，没有桥怎么办，我就去借来一条小船渡过去。我与小船的关系仅仅是使用（借用）的关系。表现在代码上，为依赖的类的某个方法以被依赖的类作为其参数。或者是</span><span>class A </span><span>的某个方法创造了</span><span> class B </span><span>的实例抑或对</span><span>class B</span><span>的</span><span>静态方法的调用</span><span>。如果</span><span>A</span><span>依赖于</span><span>B</span><span>，那意味着</span><span>B</span><span>的变化可能要求</span><span>A</span><span>也发生变化；</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这是</span><span>uml</span><span>图表示的依赖关系：<br><span style="font-size: 10.5pt; font-family: 'times new roman';" lang="EN-US"><v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img  src="http://www.cnblogs.com/images/cnblogs_com/zjzkiss/l5.GIF" alt="" border="0" width="274" height="101"><br><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"><span style="font-size: 10.5pt; font-family: 宋体;">代码表现：<br></span></o:lock></v:shapetype></span></span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="color: #008080;">1</span><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_19_116_Open_Image" onclick="this.style.display='none'; codehighlighter1_19_116_open_text.style.display="'none';" codehighlighter1_19_116_closed_image.style.display="'inline';" codehighlighter1_19_116_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_19_116_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_19_116_closed_text.style.display="'none';" codehighlighter1_19_116_open_image.style.display="'inline';" codehighlighter1_19_116_open_text.style.display="'inline';"" align="top"><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Person</span><span id="Codehighlighter1_19_116_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_19_116_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">2</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_29_37_Open_Image" onclick="this.style.display='none'; codehighlighter1_29_37_open_text.style.display="'none';" codehighlighter1_29_37_closed_image.style.display="'inline';" codehighlighter1_29_37_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_29_37_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_29_37_closed_text.style.display="'none';" codehighlighter1_29_37_open_image.style.display="'inline';" codehighlighter1_29_37_open_text.style.display="'inline';"" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_29_37_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;">/**/</span><span id="Codehighlighter1_29_37_Open_Text"><span style="color: #008000;">/*</span><span style="color: #008000;">*&nbsp;划船&nbsp;</span><span style="color: #008000;">*/</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">3</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_76_110_Open_Image" onclick="this.style.display='none'; codehighlighter1_76_110_open_text.style.display="'none';" codehighlighter1_76_110_closed_image.style.display="'inline';" codehighlighter1_76_110_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_76_110_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_76_110_closed_text.style.display="'none';" codehighlighter1_76_110_open_image.style.display="'inline';" codehighlighter1_76_110_open_text.style.display="'inline';"" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;oarage&nbsp;(Boat&nbsp;boat)</span><span id="Codehighlighter1_76_110_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_76_110_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">4</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boat.oarage();&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">5</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">6</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;">&nbsp;<br></span><span style="color: #008080;">7</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<br>&nbsp;
<p><strong><span>关联：有名的客户和订单的关系以及公司和员工的关系，都是关联关系。还有就是我和我的单车的例子，他们都是一种&#8220;拥有&#8221;的关系。表现在代码上，就是一个类包含另一个类的实例，</span></strong><span>通常表现为被关联类以类属性的形式出现在关联类的类定义中，也可以表现为关联类引用了一个类型为被关联类的全局变量。关联可以使单向的，也可以使双向的。</span></p>
<p><span>从网上找到的公司和员工的<span>UML</span>图和代码 ：</span></p>
<img  src="http://www.cnblogs.com/images/cnblogs_com/zjzkiss/l2.GIF" alt="" border="0" width="303" height="74"><br><span style="font-size: 10pt; font-family: 宋体;"><strong>公司和员工的关联关系<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="color: #008080;">&nbsp;1</span><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_20_326_Open_Image" onclick="this.style.display='none'; codehighlighter1_20_326_open_text.style.display="'none';" codehighlighter1_20_326_closed_image.style.display="'inline';" codehighlighter1_20_326_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_20_326_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_20_326_closed_text.style.display="'none';" codehighlighter1_20_326_open_image.style.display="'inline';" codehighlighter1_20_326_open_text.style.display="'inline';"" align="top"><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Company</span><span id="Codehighlighter1_20_326_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_20_326_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;2</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;Employee&nbsp;employee;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;3</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_94_133_Open_Image" onclick="this.style.display='none'; codehighlighter1_94_133_open_text.style.display="'none';" codehighlighter1_94_133_closed_image.style.display="'inline';" codehighlighter1_94_133_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_94_133_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_94_133_closed_text.style.display="'none';" codehighlighter1_94_133_open_image.style.display="'inline';" codehighlighter1_94_133_open_text.style.display="'inline';"" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;Employee&nbsp;getEmployee()</span><span id="Codehighlighter1_94_133_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_94_133_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;4</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;employee;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;5</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;6</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_185_231_Open_Image" onclick="this.style.display='none'; codehighlighter1_185_231_open_text.style.display="'none';" codehighlighter1_185_231_closed_image.style.display="'inline';" codehighlighter1_185_231_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_185_231_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_185_231_closed_text.style.display="'none';" codehighlighter1_185_231_open_image.style.display="'inline';" codehighlighter1_185_231_open_text.style.display="'inline';"" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setEmployee(Employee&nbsp;employee)</span><span id="Codehighlighter1_185_231_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_185_231_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;7</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.employee</span><span style="color: #000000;">=</span><span style="color: #000000;">employee;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;8</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;9</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">公司运作&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">10</span><span style="color: #008000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_273_320_Open_Image" onclick="this.style.display='none'; codehighlighter1_273_320_open_text.style.display="'none';" codehighlighter1_273_320_closed_image.style.display="'inline';" codehighlighter1_273_320_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_273_320_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_273_320_closed_text.style.display="'none';" codehighlighter1_273_320_open_image.style.display="'inline';" codehighlighter1_273_320_open_text.style.display="'inline';"" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;run()</span><span id="Codehighlighter1_273_320_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_273_320_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">11</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;employee.startWorking();&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">12</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">13</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;">&nbsp;&nbsp;<br></span><span style="color: #008080;">14</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
</strong></span><br>&nbsp;
<p><span>可见依赖于与关联亦有动静之别，</span><span>关联的类<span>&#8220;</span>静态<span>&#8221;</span>地引用了被关联类的实例变量，而依赖的偶然性也正说明了它的动态性。</span><strong></strong></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2、&nbsp;</span></span><span>聚合与组合同出而异体</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;聚合与组合其实都是关联的特例，都是整体和部分的关系。他们的区别在于聚合的两个对象之间是可分离的，他们具有各自的生命周期。而组合往往表现为一种唇齿相依的关系。</span></p>
<p><span>聚合：一种容纳或曰包含的关系，如同机场和飞机，汽车和轮胎的关系。其实仔细想想，前面的公司和员工的关系也有聚合的味道在里面。</span></p>
<p><span>组合：也可称之为强聚合，整体和部分是不可分的，整体的生命周期结束时也就是部分的生命周期到头时。很有名的就是桌子和桌子腿的关系。</span></p>
<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;聚合的</span><span>UML</span><span>图</span>：<br><img  src="http://www.cnblogs.com/images/cnblogs_com/zjzkiss/l3.GIF" alt="" border="0" width="245" height="90"><br>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt 21pt; text-indent: 18pt;"><span style="font-family: 宋体;">组合的</span><span lang="EN-US"><font face="Times New Roman">UML</font></span><span style="font-family: 宋体;">图：</span></p>
<br><br><img  src="http://www.cnblogs.com/images/cnblogs_com/zjzkiss/l4.GIF" alt="" border="0" width="245" height="90"><br>&nbsp;
<p><span>然而，聚合与组合的代码表现形式是一样的，都可以表现为以下的形式，它们仅仅具有语义上的区别。</span></p>
<p><span>网上找到的电脑和</span><span>CPU</span><span>的关系的代码表现：</span></p>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="color: #008080;">&nbsp;1</span><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif" id="Codehighlighter1_21_285_Open_Image" onclick="this.style.display='none'; codehighlighter1_21_285_open_text.style.display="'none';" codehighlighter1_21_285_closed_image.style.display="'inline';" codehighlighter1_21_285_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif" id="Codehighlighter1_21_285_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_21_285_closed_text.style.display="'none';" codehighlighter1_21_285_open_image.style.display="'inline';" codehighlighter1_21_285_open_text.style.display="'inline';"" align="top"><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;Computer</span><span id="Codehighlighter1_21_285_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_21_285_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;2</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;CPU&nbsp;cpu;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;3</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_75_109_Open_Image" onclick="this.style.display='none'; codehighlighter1_75_109_open_text.style.display="'none';" codehighlighter1_75_109_closed_image.style.display="'inline';" codehighlighter1_75_109_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_75_109_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_75_109_closed_text.style.display="'none';" codehighlighter1_75_109_open_image.style.display="'inline';" codehighlighter1_75_109_open_text.style.display="'inline';"" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;CPU&nbsp;getCPU()</span><span id="Codehighlighter1_75_109_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_75_109_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;4</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;cpu;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;5</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;6</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_146_182_Open_Image" onclick="this.style.display='none'; codehighlighter1_146_182_open_text.style.display="'none';" codehighlighter1_146_182_closed_image.style.display="'inline';" codehighlighter1_146_182_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_146_182_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_146_182_closed_text.style.display="'none';" codehighlighter1_146_182_open_image.style.display="'inline';" codehighlighter1_146_182_open_text.style.display="'inline';"" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setCPU(CPU&nbsp;cpu)</span><span id="Codehighlighter1_146_182_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_146_182_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;7</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">this</span><span style="color: #000000;">.cpu</span><span style="color: #000000;">=</span><span style="color: #000000;">cpu;&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;8</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">&nbsp;9</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">开启电脑&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">10</span><span style="color: #008000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" id="Codehighlighter1_226_279_Open_Image" onclick="this.style.display='none'; codehighlighter1_226_279_open_text.style.display="'none';" codehighlighter1_226_279_closed_image.style.display="'inline';" codehighlighter1_226_279_closed_text.style.display="'inline';"" align="top"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif" id="Codehighlighter1_226_279_Closed_Image" style="display: none;" onclick="this.style.display='none'; codehighlighter1_226_279_closed_text.style.display="'none';" codehighlighter1_226_279_open_image.style.display="'inline';" codehighlighter1_226_279_open_text.style.display="'inline';"" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;start()</span><span id="Codehighlighter1_226_279_Closed_Text" style="border: 1px solid #808080; display: none; background-color: #ffffff;"><img  src="http://www.cnblogs.com/Images/dot.gif"></span><span id="Codehighlighter1_226_279_Open_Text"><span style="color: #000000;">{&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">11</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">cpu运作&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;"><br></span><span style="color: #008080;">12</span><span style="color: #008000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif" align="top"></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cpu.run();&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">13</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;<br></span><span style="color: #008080;">14</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top">}</span></span><span style="color: #000000;">&nbsp;&nbsp;<br></span><span style="color: #008080;">15</span><span style="color: #000000;"><img  src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align="top"></span></div>
<br>&nbsp;
<p><span>&nbsp;&nbsp;&nbsp;结语：</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;一般情况下，当某个类被当作参数传递并且被当作结果返回的时候，或者被当作某个方法内的临时变量使用的时候</span><span>,</span><span>可以运用依赖关系，使用关联来表示一个拥有关系，而不是整体</span><span>-</span><span>部分关系。使用聚合来表示一个动态的整体</span><span>-</span><span>部分关系，而是用组合来表示一个静态的整体</span><span>-</span><span>部
分关系。但是需要指出的是，所谓&#8220;关系&#8221;只是在某个问题域才有效，离开了这个问题域，可能这些关系就不成立了，例如之前我和小船的关系，可能在某个问题域
中，我是船夫，我的工作就是驾着小船在河上摆渡，那我和小船的关系就上升为关联关系了。试想一下，武侠小说中的那些剑仙们，修炼到人剑合一的境地，剑在人
在，剑亡人亡，那它们之间的关系就似乎与组合关系类似了。又如在关心汽车的领域里，轮胎是一定要组合在汽车类中的，因为它离开了汽车就没有意义了。但是在
卖轮胎的店铺业务里，就算轮胎离开了汽车，它也是有意义的，这就可以用聚合了。这说明关系是在特定的问题域中的&#8220;关系&#8221;，会随着问题域的迁移而改变的。最
后顺便问一句：老公和老婆的关系是依赖还是关联呢？一笑</span><span>&#8230;&#8230;</span></p><img src ="http://www.cppblog.com/deadpunk/aggbug/53811.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/deadpunk/" target="_blank">活着就是折腾，所以当然要骠悍的折腾</a> 2008-06-18 09:59 <a href="http://www.cppblog.com/deadpunk/archive/2008/06/18/53811.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>