﻿<?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++博客-Art-C的小窝-文章分类-暑假项目相关</title><link>http://www.cppblog.com/cwh5635/category/15030.html</link><description>那些悲剧的日子，映证着今后不一定悲剧的未来</description><language>zh-cn</language><lastBuildDate>Fri, 12 Nov 2010 17:41:46 GMT</lastBuildDate><pubDate>Fri, 12 Nov 2010 17:41:46 GMT</pubDate><ttl>60</ttl><item><title>暑假项目里面的一些东西之c写虚函数表</title><link>http://www.cppblog.com/cwh5635/articles/133260.html</link><dc:creator>art-C</dc:creator><author>art-C</author><pubDate>Wed, 10 Nov 2010 19:35:00 GMT</pubDate><guid>http://www.cppblog.com/cwh5635/articles/133260.html</guid><wfw:comment>http://www.cppblog.com/cwh5635/comments/133260.html</wfw:comment><comments>http://www.cppblog.com/cwh5635/articles/133260.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cwh5635/comments/commentRss/133260.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cwh5635/services/trackbacks/133260.html</trackback:ping><description><![CDATA[暑假那个玩意，写到最后发现所有的代码需要全部改，一个严峻的问题就是：c++的代码需要改成c然后再发布在dll上面，我的设计是用一个图形基类，然后每次重绘调用专门的虚函数形成多态。这样，改虚表这个问题就摆在我面前。<br>首先我们知道，虚函数在大部分编译器的实现都是在结构体起始处，放一个数组指针,这个指针指向一个表，表里面行一些函数指针。<br>然后继承大概就是一个has-a的关系，这样我的代码就开始写了。<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080">&nbsp;1</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;vfunMAX&nbsp;2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">typedef&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;__tag_base<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img id=Codehighlighter1_44_81_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_81_Open_Text.style.display='none'; Codehighlighter1_44_81_Closed_Image.style.display='inline'; Codehighlighter1_44_81_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_44_81_Closed_Image onclick="this.style.display='none'; Codehighlighter1_44_81_Closed_Text.style.display='none'; Codehighlighter1_44_81_Open_Image.style.display='inline'; Codehighlighter1_44_81_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_44_81_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_44_81_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">&nbsp;v_ptr;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img id=Codehighlighter1_64_79_Open_Image onclick="this.style.display='none'; Codehighlighter1_64_79_Open_Text.style.display='none'; Codehighlighter1_64_79_Closed_Image.style.display='inline'; Codehighlighter1_64_79_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_64_79_Closed_Image onclick="this.style.display='none'; Codehighlighter1_64_79_Closed_Text.style.display='none'; Codehighlighter1_64_79_Open_Image.style.display='inline'; Codehighlighter1_64_79_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_64_79_Closed_Text>/**/</span><span id=Codehighlighter1_64_79_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">other&nbsp;member</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;somefunc()<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img id=Codehighlighter1_104_112_Open_Image onclick="this.style.display='none'; Codehighlighter1_104_112_Open_Text.style.display='none'; Codehighlighter1_104_112_Closed_Image.style.display='inline'; Codehighlighter1_104_112_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_104_112_Closed_Image onclick="this.style.display='none'; Codehighlighter1_104_112_Closed_Text.style.display='none'; Codehighlighter1_104_112_Open_Image.style.display='inline'; Codehighlighter1_104_112_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_104_112_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_104_112_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">NULL;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Init(</span><span style="COLOR: #0000ff">base</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pbase)<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img id=Codehighlighter1_138_247_Open_Image onclick="this.style.display='none'; Codehighlighter1_138_247_Open_Text.style.display='none'; Codehighlighter1_138_247_Closed_Image.style.display='inline'; Codehighlighter1_138_247_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_138_247_Closed_Image onclick="this.style.display='none'; Codehighlighter1_138_247_Closed_Text.style.display='none'; Codehighlighter1_138_247_Open_Image.style.display='inline'; Codehighlighter1_138_247_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_138_247_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_138_247_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;v_ptr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;malloc(vfunMAX&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">));<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;v_ptr[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">somefunc;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;v_ptr[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img id=Codehighlighter1_232_245_Open_Image onclick="this.style.display='none'; Codehighlighter1_232_245_Open_Text.style.display='none'; Codehighlighter1_232_245_Closed_Image.style.display='inline'; Codehighlighter1_232_245_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_232_245_Closed_Image onclick="this.style.display='none'; Codehighlighter1_232_245_Closed_Text.style.display='none'; Codehighlighter1_232_245_Open_Image.style.display='inline'; Codehighlighter1_232_245_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_232_245_Closed_Text>/**/</span><span id=Codehighlighter1_232_245_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">other&nbsp;Init</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
就是类似这样代码实现了一个类的虚表然后在一个类的派生类只需要将虚函数表的相应位置替换掉就可以了，当然我们如果需要直观一点可以用一个枚举类型保存函数名的标号，然后调用即可。。。当然，这个是一个简易的模式，实际上c++的虚函数神马的比这个复杂的多，而且这个也不会出现c++里面很多难以理解情况~所有的情况都在掌握中，也不失为一件坏事，重要的时候，麻烦的改完代码，我也就完成了我的事。。。。<br>
<img src ="http://www.cppblog.com/cwh5635/aggbug/133260.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cwh5635/" target="_blank">art-C</a> 2010-11-11 03:35 <a href="http://www.cppblog.com/cwh5635/articles/133260.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>画项目中UML图遇到的一点小问题</title><link>http://www.cppblog.com/cwh5635/articles/127466.html</link><dc:creator>art-C</dc:creator><author>art-C</author><pubDate>Thu, 23 Sep 2010 16:22:00 GMT</pubDate><guid>http://www.cppblog.com/cwh5635/articles/127466.html</guid><wfw:comment>http://www.cppblog.com/cwh5635/comments/127466.html</wfw:comment><comments>http://www.cppblog.com/cwh5635/articles/127466.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cwh5635/comments/commentRss/127466.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cwh5635/services/trackbacks/127466.html</trackback:ping><description><![CDATA[为了把项目关键的东西写上blog<br>我决定装B一把。画一些UML图。可是呢，遇到很多问题<br>现在就来说一下我对这几个小东西的理解<br>首先呢，我看到2个名词：组合（强聚合）和聚合<br><img src="http://www.cppblog.com/images/cppblog_com/cwh5635/1.jpg" border=0><br>上面那个实心菱形是组合，下面这个空心的是聚合，2种都是has-a的关系，但是据资料描述：组合里面拥有者要对被拥有者的生命进行负责
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;a<br><img id=Codehighlighter1_8_10_Open_Image onclick="this.style.display='none'; Codehighlighter1_8_10_Open_Text.style.display='none'; Codehighlighter1_8_10_Closed_Image.style.display='inline'; Codehighlighter1_8_10_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_8_10_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_8_10_Closed_Text.style.display='none'; Codehighlighter1_8_10_Open_Image.style.display='inline'; Codehighlighter1_8_10_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_8_10_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_8_10_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;b<br><img id=Codehighlighter1_21_34_Open_Image onclick="this.style.display='none'; Codehighlighter1_21_34_Open_Text.style.display='none'; Codehighlighter1_21_34_Closed_Image.style.display='inline'; Codehighlighter1_21_34_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_21_34_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_21_34_Closed_Text.style.display='none'; Codehighlighter1_21_34_Open_Image.style.display='inline'; Codehighlighter1_21_34_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_21_34_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_21_34_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>a&nbsp;aobject;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<br>b可以认为是a组合起来的,而假设我写下如下代码
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;c<br><img id=Codehighlighter1_8_84_Open_Image onclick="this.style.display='none'; Codehighlighter1_8_84_Open_Text.style.display='none'; Codehighlighter1_8_84_Closed_Image.style.display='inline'; Codehighlighter1_8_84_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_8_84_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_8_84_Closed_Text.style.display='none'; Codehighlighter1_8_84_Open_Image.style.display='inline'; Codehighlighter1_8_84_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_8_84_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_8_84_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;a</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pa;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;c()<br><img id=Codehighlighter1_27_48_Open_Image onclick="this.style.display='none'; Codehighlighter1_27_48_Open_Text.style.display='none'; Codehighlighter1_27_48_Closed_Image.style.display='inline'; Codehighlighter1_27_48_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_27_48_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_27_48_Closed_Text.style.display='none'; Codehighlighter1_27_48_Open_Image.style.display='inline'; Codehighlighter1_27_48_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;</span><span id=Codehighlighter1_27_48_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_27_48_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pa&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;a;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">c()<br><img id=Codehighlighter1_61_82_Open_Image onclick="this.style.display='none'; Codehighlighter1_61_82_Open_Text.style.display='none'; Codehighlighter1_61_82_Closed_Image.style.display='inline'; Codehighlighter1_61_82_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_61_82_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_61_82_Closed_Text.style.display='none'; Codehighlighter1_61_82_Open_Image.style.display='inline'; Codehighlighter1_61_82_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_61_82_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_61_82_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pa;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
这个应该被认为是组合关系（欢迎拍砖）<br><br>小心翼翼的看完这2个关系之后，我又继续看到了一个名词：依赖<br><img src="http://www.cppblog.com/images/cppblog_com/cwh5635/2.jpg" border=0><br>依赖关系，表示一个类的实现会影响到另一个类的结果，比如上图，buy，比如buy car。。。而car有很多种，比如奔驰，宝马，而各种生产厂商的不同型号的汽车是不一样的，包括参数，配置，等，如果我修改了car，而person这时候再执行buy(car)的时候，得到的结果就会不同，这个也就是一个明显的依赖关系，而我在暑假的哪个项目中，很明显，2个主要的父类产生了明显的类似上面的依赖关系，在依赖关系中，2个实体可能在空间上没有交集，但是却通过某的接口产生了关系，应该也算是多态吧。。。<br><br>最后，我又看到一个鸟词：关联<br>跟聚合那玩意儿意思很接近的东西，UML图上是一条实心线<br>简单的想想，<br>比如一个学生寝室：有4个床位，4个学生，这4个学生跟寝室貌似可以认为是一种关联关系（学生可以走，可以换，更可以允许空床的存在），4个床位跟寝室属于聚合关系，而床位有几个铁零件组成，随便坏一个，这个床就不存在了（在某种情况下可以说他们生命周期同步。。。虽然他们都可以换，但是床可以被认为是寝室的属性，而床的铁零件也是床的组成部分）。<br>刚刚接触UML...如果有错误请不吝赐教。。。。<br>感觉这一切不能靠主观，没有一个评价硬性标准。。。完全是要靠设计者的思路，具体做什么，再判断。。。 
<img src ="http://www.cppblog.com/cwh5635/aggbug/127466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cwh5635/" target="_blank">art-C</a> 2010-09-24 00:22 <a href="http://www.cppblog.com/cwh5635/articles/127466.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>