??xml version="1.0" encoding="utf-8" standalone="yes"?>曰本成人黄色,欧美黄色视屏,一区二区三区wwwhttp://www.shnenglu.com/mzty/category/249.html<br/> <br/> <a href = "http://www.shnenglu.com/mzty/archive/2007/03/02/19109.html"><font size = 5 color ="#00FFFF">{C++ 基础}<font/></a> <a href = "http://www.shnenglu.com/mzty/archive/2007/08/13/29922.html"><font size = 5 color ="#00FFFF">{C++ 高}<font/></a> <a href = "http://www.shnenglu.com/mzty/archive/2007/04/16/22064.html"><font size = 5 color ="#00FFFF">{C#界面QC++核心法}<font/></a> <a href = "http://www.shnenglu.com/mzty/archive/2007/03/04/19163.html"><font size = 5 color ="#00FFFF">{设计模式}<font/></a> <a href = " http://www.shnenglu.com/mzty/archive/2007/03/04/19167.html"><font size = 5 color ="#FF0000">{C#基础}<font/></a> zh-cnTue, 20 May 2008 01:20:01 GMTTue, 20 May 2008 01:20:01 GMT60UMLcd关系http://www.shnenglu.com/mzty/archive/2008/04/16/47264.html梦在天梦在天Wed, 16 Apr 2008 09:09:00 GMThttp://www.shnenglu.com/mzty/archive/2008/04/16/47264.htmlhttp://www.shnenglu.com/mzty/comments/47264.htmlhttp://www.shnenglu.com/mzty/archive/2008/04/16/47264.html#Feedback0http://www.shnenglu.com/mzty/comments/commentRss/47264.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/47264.html本文随便转蝲Q请保留出处Q?a >http://blog.csdn.net/dylgsy/

UML的类囑օpd为: 兌、聚?l合、依赖、泛化(l承Q。而其中关联又分ؓ双向兌、单向关联、自w关联;下面p我们一h看看q些关系I竟是什么,以及它们的区别在哪里?br>
1、关?br>

双向兌Q?br>C1-C2Q指双方都知道对方的存在Q都可以调用Ҏ的公共属性和Ҏ?br>
在GOF的设计模式书上是q样描述的:虽然在分析阶D这U关pL适用的,但我们觉得它对于描述设计模式内的cdpL说显得太抽象了,因ؓ在设计阶D关联关pd被映射为对象引用或指针。对象引用本w就是有向的Q更适合表达我们所讨论的U关pR所以这U关pd设计的时候比较少用到Q关联一般都是有向的?br>
使用ROSE 生成的代码是q样的:

class C1 
...{
public:
    C2* theC2;

};

class C2 
...{
public:
    C1* theC1;

};

双向兌在代码的表现为双斚w拥有Ҏ的一个指针,当然也可以是引用或者是倹{?br>




单向兌:
C3->C4Q表C相识关p,指C3知道C4QC3可以调用C4的公共属性和Ҏ。没有生命期的依赖。一般是表示ZU引用?br>
生成代码如下Q?/p>

class C3 
...{
public:
    C4* theC4;

};

class C4 
...{

};

单向兌的代码就表现为C3有C4的指针,而C4对C3一无所知?br>



自n兌Q反w关联)Q?br>自己引用自己Q带着一个自q引用?br>
代码如下Q?/p>

class C14 
...{
public:
    C14* theC14;

};

是在自q内部有着一个自w的引用?br>
2、聚?l合

当类之间有整?部分关系的时候,我们可以用组合或者聚合?br>


聚合Q表CC9聚合C10Q但是C10可以dC9而独立存在(独立存在的意思是在某个应用的问题域中q个cȝ存在有意义。这句话怎么解,L下面l合里的解释Q?br>
代码如下Q?/p>

class C9 
...{
public:
    C10 theC10;

};

class C10 
...{

};

 



l合Q也有hUCؓ包容Q:一般是实心菱Ş加实U箭头表C,如上图所C,表示的是C8被C7包容Q而且C8不能dC7而独立存在。但q是视问题域而定的,例如在关心汽车的领域里,轮胎是一定要l合在汽车类中的Q因为它d了汽车就没有意义了。但是在卖轮胎的店铺业务里,q轮胎d了汽车,它也是有意义的,q就可以用聚合了。在《敏捷开发》中q说刎ͼAl合BQ则A需要知道B的生存周期,卛_能A负责生成或者释放BQ或者A通过某种途径知道B的生成和释放?br>
他们的代码如下:

class C7 
...{
public:
    C8 theC8;

};

class C8 
...{
};

可以看到Q代码和聚合是一L。具体如何区别,可能只能用语义来区分了?br>
3、依?br>


依赖:
指C5可能要用到C6的一些方法,也可以这栯Q要完成C5里的所有功能,一定要有C6的方法协助才行。C5依赖于C6的定义,一般是在C5cȝ头文件中包含了C6的头文g。ROSE对依赖关pM产生属性?br>
注意Q要避免双向依赖。一般来_不应该存在双向依赖?br>
ROSE生成的代码如下:

// C5.h
#include "C6.h"

class C5 
...{

};

// C6.h
#include "C5.h"

class C6
...{

};

虽然ROSE不生成属性,但在形式上一般是A中的某个Ҏ把B的对象作为参C?假设A依赖于B)。如下:

#include "B.h"
class A
...{
          void Func(B &b);
}

那依赖和聚合\l合、关联等有什么不同呢Q?br>
兌是类之间的一U关p,例如老师教学生,老公和老婆Q水壶装水等是一U关pR这U关pL非常明显的,在问题领域中通过分析直接p得出?br>
依赖是一U弱兌Q只要一个类用到另一个类Q但是和另一个类的关pM是太明显的时候(可以说是“uses”了那个类Q,可以把q种关系看成是依赖,依赖也可说是一U偶然的关系Q而不是必然的关系Q就?#8220;我在某个Ҏ中偶然用C它,但在现实中我和它q没多大关系”。例如我和锤子,我和锤子本来是没关系的,但在有一ơ要钉钉子的时候,我用C它,q就是一U依赖,依赖锤子完成钉钉子这件事情?/p>

l合是一U整?部分的关p,在问题域中这U关pd明显Q直接分析就可以得出的。例如轮胎是车的一部分Q树叶是树的一部分Q手脚是w体的一部分q种的关p,非常明显的整?部分关系?br>
上述的几U关p(兌、聚?l合、依赖)在代码中可能以指针、引用、值等的方式在另一个类中出玎ͼ不拘于Ş式,但在逻辑上他们就有以上的区别?br>
q里q要说明一下,所谓的q些关系只是在某个问题域才有效,d了这个问题域Q可能这些关pd不成立了Q例如可能在某个问题域中Q我是一个木匠,需要拿着锤子dz,可能整个问题的描q就是我拿着锤子怎么钉桌子,钉椅子,钉柜子;既然整个问题是描述q个Q我和锤子就不仅是偶然的依赖关系了,我和锤子的关pd得非常的紧密Q可能就上升为组合关p(让我H然惌v武侠说的剑不离w,剑亡Z...Q。这个例子可能有点荒谬,但也是ؓ了说明一个道理,是关系和类一P它们都是在一个问题领域中才成立的Q离开了这个问题域Q他们可能就不复存在了?br>

4、泛化(l承Q?br>


泛化关系Q如果两个类存在泛化的关pL׃用,例如父和子,动物和老虎Q植物和q?br>ROSE生成的代码很单,如下Q?/p>

#include "C11.h"

class C12 : public C11
...{
};


5、这里顺便提一下模?br>


上面的图对应的代码如下:

template<int>
class C13 
...{
};

q里再说一下重复度Q其实看完了上面的描qC后,我们应该清楚了各个关p间的关pM及具体对应到代码是怎么LQ所谓的重复度,也只不过是上面的扩展Q例如A和B有着“1对多”的重复度Q那在A中就有一个列表,保存着B对象的N个引用,是q样而已?br>
好了Q到q里Q已l把上面的类囑օp说完了Q希望你能有所收获了,我也费了不少工夫啊(d、生成代码、截图、写到BLOG上,唉,一头大汗)。不q如果能让你d理解UMLcd的这些关p,也值得了?)



梦在天 2008-04-16 17:09 发表评论
]]>
中文xml FQAhttp://www.shnenglu.com/mzty/archive/2006/01/06/2469.html梦在天梦在天Fri, 06 Jan 2006 07:44:00 GMThttp://www.shnenglu.com/mzty/archive/2006/01/06/2469.htmlhttp://www.shnenglu.com/mzty/comments/2469.htmlhttp://www.shnenglu.com/mzty/archive/2006/01/06/2469.html#Feedback1http://www.shnenglu.com/mzty/comments/commentRss/2469.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/2469.html阅读全文

梦在天 2006-01-06 15:44 发表评论
]]>
uml中类对象间的关系http://www.shnenglu.com/mzty/archive/2006/01/03/2375.html梦在天梦在天Tue, 03 Jan 2006 06:17:00 GMThttp://www.shnenglu.com/mzty/archive/2006/01/03/2375.htmlhttp://www.shnenglu.com/mzty/comments/2375.htmlhttp://www.shnenglu.com/mzty/archive/2006/01/03/2375.html#Feedback0http://www.shnenglu.com/mzty/comments/commentRss/2375.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/2375.html阅读全文

梦在天 2006-01-03 14:17 发表评论
]]>
uml 基本概念http://www.shnenglu.com/mzty/archive/2005/12/30/2262.html梦在天梦在天Fri, 30 Dec 2005 02:01:00 GMThttp://www.shnenglu.com/mzty/archive/2005/12/30/2262.htmlhttp://www.shnenglu.com/mzty/comments/2262.htmlhttp://www.shnenglu.com/mzty/archive/2005/12/30/2262.html#Feedback1http://www.shnenglu.com/mzty/comments/commentRss/2262.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/2262.html  
  1.1 Z么要建模
  
  建立大厦和徏立狗H的区别是徏讄H不需要设计。要生合格的Y件就要有一套关于体pȝ构、过E和工具的规范?
  
  建模的定义:建模是对现实的简化?
  
  建模的目标:
  1Q模型帮助我们按照实际情冉|按照我们所需要的样式对系l进行可视化?
  2Q模型允许我们详l说明系l的l构和行为?
  3Q模型给Z个知道我们构造系l的模板?
  4Q模型对我们的决{进行文化?
  
  建模是把复杂的pȝ变成的pȝQ采用“各个击破”的原则逐一解决?
  
  1.2 建模原理
  
  1Q选择创徏什么模型很重要Q模型要反映你难于处理的开发问题?
  2Q模型要在不同的_ֺU别上来表示。你可以Ҏ观察的角色和观察的原因来选择_ֺ?
  3Q徏造模型要和现实相q?
  4Q重要的pȝ需要用一l独立的模型d理。在面向对象的Y件体pMQؓ了理解系l的体系l构Q你需要几个互补和q锁的视图:用例图、设计视图、进E视图、实现视囑֒实施视图?
  
  1.3 面向对象的徏?
  
  面向法的徏模在需求发生变化或者系l增长后变得难以维护?
  
  面向对象的徏模把对象和类作ؓ其主要构造块。例如,在三层结构中Q我们可以在用户接口层、中间层和数据库层中扑ֈ你想要的对象?
  
  
  2 UML介绍
  
  
  2.1 概述
  UML可以对Y件密集型pȝ的制品进行可视化、详q、构造和文档化。最好把它用于以用况Q用例)为驱动、以体系l构Z心、跌代及增量的过E中?
  
  UML是一U语aQ它是一U可视化的语aQ它是一l图形符受它可用于详l描q。它又是一U构造语aQ可以直接生成代码。用Rational XDE可以实CUML到C#Q或者从C#到UML的双向工E?
  
  2.2 UML的概忉|?
  学习建模的三个要素:UML的基本构造块、这些构造块攑֜一L规则、一些运用于整个UML的公共机制?
  
  UML中由一些四U事?
  1Q结构事?Q-Q?cR接口、协作(它是一个交互,它是׃l共同工作以提供某协作行为的角色和其它元素构成的一个群体。)、用例、主动类Q至拥有一个进E或者线E,其元素的行ؓ可以和其它元素的行ؓq发Q、构Ӟ如COM+和Java BeanQ、节炏V?
  2Q行Z?Q-Q?交互、状态机Q描qC一个对象或者一个交互在生命期内响应事g所l历的状态序列)?
  3Q分l事?Q-Q??
  4Q注释事?Q-Q?注解
  
  UML中的四种关系
  1Q依?Q-Q?两个事物间的语义关系
  2Q关?Q-Q?是一U结构关p,如聚?
  3Q泛?Q-Q?一?Ҏ关系
  4Q实?Q-Q?用在两种地方Q接口和实现他们之间的类和构件之_用例和实C们的协作之间?
  
  UML中的?
  1Q类?Q-Q?pȝ的静态状态图Q包含主动类的类囄除系l的静态进E视图?
  2Q对象图
  3Q用例图
  4Q顺序图
  5Q协作图
  6Q状态图
  7Q活动图 Q-Q?对象间的控制程
  8Q构件图
  9Q实施图
  
  2.3 体系l构
  
  我们?个互联的视图来描qY件密集型pȝ的体pȝ构:
  
  1Q系l的用例?
  2Q系l的设计视图 Q-Q?静态方面由cd和对象图描述Q动态方面由交互图、状态图和活动图描述?
  3Q系l的q程视图 Q-Q?包含了Ş成系lƈ发和同步机制的线E和q程?
  4Q系l的实现视图 Q-Q?主要针对pȝ发布的配|管理?
  5Q系l的实施视图
  
  2.4 软g开发生命周?
  
  用况驱动
  以体pȝ构ؓ中心
  跌代q程 Q-Q?涉及Cq串可执行发布的理?
  
  软g开发生命周期的四个阶段Q?
  初始
  l化
  构?
  UM


梦在天 2005-12-30 10:01 发表评论
]]>
C++中DOM写XML http://www.shnenglu.com/mzty/archive/2005/12/29/2225.html梦在天梦在天Thu, 29 Dec 2005 01:48:00 GMThttp://www.shnenglu.com/mzty/archive/2005/12/29/2225.htmlhttp://www.shnenglu.com/mzty/comments/2225.htmlhttp://www.shnenglu.com/mzty/archive/2005/12/29/2225.html#Feedback8http://www.shnenglu.com/mzty/comments/commentRss/2225.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/2225.html阅读全文

梦在天 2005-12-29 09:48 发表评论
]]>
uml中文FQAhttp://www.shnenglu.com/mzty/archive/2005/12/24/2048.html梦在天梦在天Sat, 24 Dec 2005 06:51:00 GMThttp://www.shnenglu.com/mzty/archive/2005/12/24/2048.htmlhttp://www.shnenglu.com/mzty/comments/2048.htmlhttp://www.shnenglu.com/mzty/archive/2005/12/24/2048.html#Feedback0http://www.shnenglu.com/mzty/comments/commentRss/2048.htmlhttp://www.shnenglu.com/mzty/services/trackbacks/2048.html阅读全文

梦在天 2005-12-24 14:51 发表评论
]]>
72ŷþþþôƽ| ھƷþþþӰԺձ| þavСݲ| þþƷ99Ӱ| þ99ۺϾƷ| ˾þþƷһ| þþþþëƬѲ| ˾Ʒþö| ۺϾþþƷ| þþƷAV| þ99Ʒ99þ6| ɫۺϾþ| Ӱ7777þþƷ| ž99Ʒþþþþ| þþƷ| þѿaëƬ| þþƷëƬѹۿ| 91Ʒþþþþ| þҹӰ| vaĻþ| þerƵᆱƷ| һþöۺ| ޹һ˾þþƷ| þþƷƷ| һɫþ88Ʒۺ| ޳ɫ999þվ| ƷþþþþþþþӰԺ| þþƷAVũ帾Ů | ƷþĻ| һþ㽶| 91þùۺϾƷ| þ޵Ӱ| 91Ʒþþþþ| 97Ʒ˾þþô߽ | ۺϾþĻ| avɫۺϾþavɫۺ| ѹ99þþ㽶| ŷһþ| Ůþþþþ| þۺۺϾþ97ɫ| þùƷ77777|