??xml version="1.0" encoding="utf-8" standalone="yes"?>中国亚洲呦女专区,国产亚洲精品成人久久网站 ,亚洲色偷拍区另类无码专区http://www.tkk7.com/flysky19/category/18233.htmljava之\zh-cnWed, 28 Feb 2007 03:44:20 GMTWed, 28 Feb 2007 03:44:20 GMT60UML相关工具一览(择选)http://www.tkk7.com/flysky19/articles/86780.html不断前进的小乌龟不断前进的小乌龟Sun, 10 Dec 2006 15:37:00 GMThttp://www.tkk7.com/flysky19/articles/86780.htmlhttp://www.tkk7.com/flysky19/comments/86780.htmlhttp://www.tkk7.com/flysky19/articles/86780.html#Feedback0http://www.tkk7.com/flysky19/comments/commentRss/86780.htmlhttp://www.tkk7.com/flysky19/services/trackbacks/86780.html原文Q?a >http://www.umlchina.com/Tools/Newindex1.htm

Code Logic 2.1Q?span lang="EN-US" style="COLOR: black; FONT-FAMILY: Helvetica">http://www.logicexplorers.com/products/codelogic/details.html
特色Q?span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">强有力的、动态的双向工程Q特别是从代码到序囄自动生成?br />      相关Q有试用版;

EclipseUML 2.0Q?span lang="EN-US" style="COLOR: black; FONT-FAMILY: Helvetica">http://www.omondo.com/

特色Q?br />

?/span> Eclipse ?/span> CVS 集成?/span> UML 工具。可以从字节码逆向工程到类囑֒序列图?br />

相关Q有免费版;

Poseidon for UML 5.0:

http://www.gentleware.com/

特色Q?br />

Z开源项?/span>ArgoUML的商业品,支持多国语言。集成到EclipseQ?/span>Poseidon利用其他工具的方便性大大增加,减少了许?/span>import/export的工作。支持团队徏模。下载量已经过1,000,000份?/span>3.2版本增强?/span>UML2.0序列囄支持?br />版本Q?/span>

Community Edition免费Q其他版本试?br />
IBM RationalQ?/span>

http://www.rational.com/

特色Q?

Rose/XDE的新版本?/span>ZUML2.0的高端徏模以及工具集Q还包括应用开发?/span>Web开发、Y仉|管理等工具. q些工具中都增加了对Eclipse3.0的支持,以及减少手工~码的各U新功能
版本Q有试用版;

Together 2006Q?/span>

http://www.borland.com/together/index.html
特色Q?br />

强有力的工具?/span>2006版本支持UML2?/span>BPMN产生BPEL4WS?br />但太庞大Qjava实现Q很慢;

Visio 2003Q?/span>

http://www.microsoft.com/office/visio/

微Y的主?/span>UML工具

国内使用q泛Q?br />
Codagen Architect 3.2Q?span lang="EN-US" style="COLOR: black; FONT-FAMILY: Helvetica">http://www.codagen.com/products/architect/default.htm
特色Q?br />

遵@MDA程Q能产生过90%?/span>J2EE?/span>.Netq_代码?/span>2003q获?/span>Jolt Productivity Award?/span>

支持Rational Rose 2000e或更新版本,Rational XDE 2003Q?/span>Borland Together ControlCenter 6.0, 或带Visio?/span>Visual Studio .NET for Enterprise Architects?/span>

版本Q?5天评估版Q?br />
Visual Paradigm for UML 5.1:

http://www.visual-paradigm.com/

特色Q?/p>

支持用例文档Q文本分析?/span>SDE for Eclipse?/span>2.0版本Q?/span>支持UML2.0Q?/span>支持文本分析?/span>CRC卡能。支?/span>Robustness Analysis。支持自定义形状或导?/span>Visio的图形?/span>


 



不断前进的小乌龟 2006-12-10 23:37 发表评论
]]>
Rational SoDA for Word中文q解决http://www.tkk7.com/flysky19/articles/86759.html不断前进的小乌龟不断前进的小乌龟Sun, 10 Dec 2006 13:46:00 GMThttp://www.tkk7.com/flysky19/articles/86759.htmlhttp://www.tkk7.com/flysky19/comments/86759.htmlhttp://www.tkk7.com/flysky19/articles/86759.html#Feedback0http://www.tkk7.com/flysky19/comments/commentRss/86759.htmlhttp://www.tkk7.com/flysky19/services/trackbacks/86759.html2006q?2?0?br />参考资料:http://www.rxiao.com/collection/csdn/软g工程/336991.xml

问:
请问由Rational SoDA for Word生成的文档中的中文都?Q?,如何解决呢?

q用ctrl+c和ctrl+v复制到word中的中文也是"????????????????"Q!Q?br />我该怎么办?Q?Q?Q?Q?Q?Q?Q?br />{:
在Rose建模的时候,应该讄字体为GB2312Q然后再用soda生成的文档就是中文的了?br />具体在那儿设Q我忘了。手头也没有Rose

反正在菜单里?br />问:
to run
我在菜单的tools中的genernal中把所有的font都改成了宋体Q字W集Ҏ了chinese_gb2312,l果生成的文档和文档N的中文还??"
我改的对不对Q?br />

to run
ok?谢谢Q太感谢了!Q!
xroseQ再打开后,ok了:Q?br />
其他相关Q?br />soda在从rose中生成文档的时候,对中文的支持非常不好Q所以现在仍然徏议大家尽量在Rose的模型中使用英文?br />
那么你们l客L什么呢Q?br />怎么让客户了解你们的q度呢?
老板L_见客h要给他看点什么,q样才好交流

客户了解q度可以通过很多方式Q比如说Q项目开发计划、品原型、用例阐q这些需求方面的工g{等。而实际上当项目进入分?设计阶段后生的工g一般是不需要用戯行确认和了解的,用户只要通过目开发计划和目计划可以了解到目的进度,如果要和用户交流Q那通过产品界面原型{工件与用户q行交流卛_?br />
修改模板Q?br />扑ֈ你的ROSE安装目录Q下面有SoDAWord->template->rose目录Q下面存攄是SoDA的word模板Q你可以Ҏ需要修改;





不断前进的小乌龟 2006-12-10 21:46 发表评论
]]>
Rational rose生成代码及其反向工程功能手册(转蝲和补?http://www.tkk7.com/flysky19/articles/86616.html不断前进的小乌龟不断前进的小乌龟Sun, 10 Dec 2006 03:19:00 GMThttp://www.tkk7.com/flysky19/articles/86616.htmlhttp://www.tkk7.com/flysky19/comments/86616.htmlhttp://www.tkk7.com/flysky19/articles/86616.html#Feedback0http://www.tkk7.com/flysky19/comments/commentRss/86616.htmlhttp://www.tkk7.com/flysky19/services/trackbacks/86616.html原文Q?/font> http://lzqdiy.bokee.com/5344025.html
2006q?2?0?br />关键?/b>Q? rose    生成代码    反向工程                                          

 rose是最行的徏模工?一是标?历史悠久用的人多),二是自始至终贯穿体现了RUP的思想(使用Rational suite)Q虽然实际工作中我们因ؓ诸多因素不能够完全按照RUPҎ来指导整体开发过E,但相信多数团队还是围l在rosew边使用?化版'的需求分析设计,而多半用了不怎么地道?XP'开?)
      ROSE思想是复杂的Q内涉|丰富的,操作是别扭的Q文档是单的Qh性是没有的。然而h们对它趋之若鹜的原因恐怕是我们现在的TEAMLEADER,SA受RUP?毒害'颇深的原因,而这也将影响到徒?-来的SA们?br />     
一 通过模型生成代码

rose帮助位于 HELP>>CONTENTS>>ROSE JAVA>>HOW TO >>FORWARD ENGINEER FROM  ROSE  TO JAVA SOURCE 


 当你试把模型组件{化成代码框架时候,应该考虑到先查将要生成的cL无语法错误?br /> 1 打开你要专化的目标diagram
 2 选择你要转化的包或者类
 3.单击  tools>java/j2ee>  Syntax Check 来检查目标代码是否符合规范,比如命名错误?br /> 4 察看rose logH口(下方Q察看检验结果,如果有错误,即errors那么生成的代码很可能无法?br /> q编?br /> 5 Ҏ需要校正这些组件或者图
 6重复 步骤3直到验不出错误,然后你就可以q入下一步了   
 假设以上步骤已经搞定了error
 7 选择你要转化的包或者类
 8单击 Tools > Java/J2EE > Generate Code
 一般来说如果你q没有将一个package或者组件映到一个rose的classpath目录?是指定?br /> 成的东西攑֓?Q那么系l不会允怽在接下来的界面里点okQ那么现在就~辑目标路径
 9点classpath entries下的edit按钮Q再出现的界面右上角找new(insert)(删除左边那个),然后在列表里新增的行里选择目标路径Q你可以选择目标是生成一个zipQjar,q是一个目录,我们选择
 目录。指定目录,ok,那么你选择的\径就新徏成功了,选择q个路径Q点ok回到界面Q层?br /> 好多阿,界面很丑阿)
 10现在你看到classpath entries里有东西了,选择右侧列表里你要{换的包或者组Ӟ点assign
 Q即分配l目标classpthQ理Z你可以把选择好的包组件或者类囑ֈ别分配个多个classptah
 对象。点ok开始生?br /> 11成功后就可以到指定的classpath下看代码了,生成的代码之间拥有如cd所C的关系?br /> 
 
?反向功能
rose帮助位于 HELP>>CONTENTS>>ROSE JAVA>>HOW TO >>REVERSE ENGINEER FROM  JAVA SOURCE TO ROSE          
反向工程是通过java代码生成或者更C个模型的q程。你可以用ROSE对以下文件进行反?br />  A.Java source code (.java files)
  B.Java bytecodes (.class files)
  C.zip, .cab, and .jar files
 1. Open the model you want to create or update.
 打开一个你刚创建或者想更新的模?br /> 新徏一个class diagramQ如果你q不会,那么q篇文章别看了Q?br /> 2.单击Tools > Java/J2EE > Reverse Engineer
 那么现在大家可以惌一下rose会怎么?刚才是选择了图Q创建目标\径,生成代码Q那?br /> 现在是否指定路径L件生成图呢,you can say that again!!
 在出现的界面上选择一个classpathQ如果已l存在)当然Q你也可以通过edit classpath按钮?br /> Z个(新徏路径的界面刚才讲q了Q不再篏赘)Q然后选择q个classpathQ更改下面的filter
 下拉列表Q更改目标文件类?注意不仅仅三行,可以滚动的,对rose的界面真是垃圾这一?br /> 又深有体会了)Q我们这里选择.javaQ如果这个classptah下存?java文gQ那么就会被列出?br /> ?br /> 注意Q你可以通过 addd选中的文Ӟ也可以通过add alld所有列出来的,更可以通过
 add recursive 递归dq个路径下所有的文g和子目录下所有文件等{。可以看到roseq不会自动列出甚xC有没有子目录(无h?
 从添加好的文仉选择你想反向的文Ӟ点Reverse 开始创建或者更?br /> 无论成功q是p|都会警告Qƈ有log。有错你改到没错ؓ止?br /> 假设你成功了Q点击donel束反向Q回到roseȝ面。          ?
 注意:roseq不会针对你反向q来的类和组件自动生成图Q生成的class已经按照包关pd在你?br />        class diagram下面Q你需要把他们加到你的图中??什么玩? ,你有两种Ҏ让这个半自动反向工程化上句号?br />   1手工把class或者组件拖拉到目的N
   2在目标图的界面下点击 Query > Add Classes 或?Query > Add Components Q选择视图方式
   Q一般是logic view,选择要拖拉的cL者组Ӟ>>或者allQ点ok完成。生成的cd卛_映了代码本n之间的关pR?br />     ok.教程l束,因ؓ没有抓图软g,懒得拷屏q,加之文字比较详细Q相信拥有写代码能力?br />     自学能力的诸位看官理解没问题。作Z个SE,SA,必须掌握的工PROSEq有很多功能?br />     藏在E奇古怪的界面下,如果你不是一个RUPҎ的顽固FANSQ也没有受到l典学院z'
     教导',或者干脆就是一个开发h?那么推荐大家q是快速的投入到together或者Poseidon的怀中吧?br />



自己的补充:
参考资料:
怎样由rational rosecd生成java代码
http://topic.csdn.net/t/20030410/19/1644982.html

1.安ROSE前先安JDKQ      ?br />  不然Q要讄一下jdk的\径或者用ROSE找一下JDK的目录:
  Tools-->java/J2EE-->Project Specification-->CLASSPATH-->new

2. 然后Q画囄时候,  
  打开J2EEQ这个最全啦 Q会自动导入三个包:java、javax、orgQ ?br />  否则Q复杂的c,可能转的不对Q?br /> 
  不过Q用J2EE model需要导入大量的包,会有ҎQ只是第一ơ练习“from  class diagram to java source”的话,打开rose时点cancle不选Q何model
  可以;
3.斜菱形表CpublicQ钥匙表CProtectedQ锁表示privateQT表示defaultQ?br />4.生成代码之前Q在“open standard specification”中的“Attributes”和“Operations”中讄属性的typeQ方法的q回值等Q?br />5.可以在“关联关pZ等的箭头中指定引用的名Uͼ
6.可以讄JAVADOCQ  ?br />   q能自动产生MAINQ(未找到相应项Q?br />
  可以对类的属性,加READ WRITEҎQ这个还是很好用的,不然QGET
  的,SET的会写好多,讄Q?br />  右键单击要生成代码的c,选open   standard   Specification->Attributes,再右键单
  击要生成setter/getter的属性,选specification->java.....
  然后按“edit   set? 
  “propertyType”改为“simple?可以了Q?br />Qread/write的默认值就已经是read/write);

参考:
http://topic.csdn.net/t/20020624/11/825787.html

7.一个小技巧:   
   把默认语a设ؓJAVAQ tools-option-notation-default
  因ؓQ你一般不会对使用的语a换来换去的,  
  q样的话Q   只要一产生c,是JAVAc,   
    
  q且Q ?叛_Q有一就相应变ؓ“java/J2EE?
Q如果默认语a时C++Q右ȝ那项是“ANSI C++”)
  双击的项也变了, 不是General的项了   直接是JAVAcd性  ;
 
8.我们要做的第一个步骤就是要先进行语法检查,   
  q一步,是关键;
 有时需要语法检查之后,“java/J2EE”中的“Genarate code?br />  q项才从灰色变ؓ可用;
    
  然后讄好CLASSPATH的输\径就可以了;

9.导出代码  
  在导Z码的q程中,我们可以看到“OK”按钮和两视N的“Assign”按钮都是灰色的。这时候,我们要选择两个部分Q?br />一个是在视图中左侧的“CLASSPATH   Entries”要选择一个你要导Z码的路径Q点击让它变成蓝色就可以了? 
  q时候,按钮“OK”和“Assign”按钮仍然是灰色的? 
  下面我们q要定双哪个包是要导出的Q这里很明显是“scInfoTech”。我们把它和它的lg视图全部选中。这时候,“OK”按钮和“Assign”按钮都变成可用的了?br />
10. ROSE产生的代码,每个c,每个ҎQ都会打上一个ROSEP  
  后期可反转,  
  是从代码到cdQ  ?br />  若想LroseidQTools-->java/J2EE-->Project Specification-->Code GenerationQ?br />
11.不过Q就本n而言Q? 
   
  产生的代码水q也是不敢^%#%$@%$#**^*&^^&^%#^%#  
   
  好象没有写的好!
 
  不过可以修改代码Qjava/J2EE-->edit code...;  
    
  但是ROSE的反转厉害的很,  
   
  可以转CLASS的,  
  生成的图Q带有关p,  
   
  用来分析别h的代码,  
  VERY爽 Q!Q ?br /> 
12.把类图、顺序图{图片保存到word中:
     点工h中的“fit in window”->“copy”?gt;_脓到wordQ?br />     q样得到的图片又清晰又完整又,通常不到10kQ如果图片太,在word?br />     可以?00Q的比例阅读Q“视䏀菜单?gt;“显C比例”;

13.Rational Rose怎么导入javacdQ:
     问:我想用java代码生成rose模型Q可是L有一些类找不刎ͼ需要导入jdk
             或者其他的cd,请问怎么操作Q?br />      {:菜单   tools   ->   Java/J2EE   ->   Project   Specification  
              在Classpaths中加入类库\径,比如  
              D:\JBuilder6\jdk1.3.1\src.jar

14.d了类图、顺序图Qƈ加上了所有的操作Q注释,说明{,怎么才能自动
     生成设计文档Q(现在q不会,q没装SODAQ?br />参考资料:
http://topic.csdn.net/t/20021209/19/1245009.html

  问:我在rose中画了一个类图,所有操作什么的都有了,也都写了注释? 
           但怎么才能自动生成设计文档呢?M能把注释一个一个的拷出来吧。 ?br />
 {:在report菜单总选择SoDA   ReportQ再选择report   templateQ比如Detail   of          all   of   attribute   and   operations   by   class   by   packageQ?br />
 问:怎么没有SoDA选项Q是不是要先装soda   for   word

 {:先装sodaQ还要有word
         
http://www.rational.com/    上有不少文档

问:谢谢怽的回{?我已l装上了,     虽然生成的文档有点儿?  
         但可以看是一个功能很强大的工?  

{:其实最好的办法是根据你们文档的要求自己定制soda的模版,定制的过E说
         h很麻烦,但是其实q不复杂Q看看soda的教学文档,半天可以掌握了

15.ȝ囄时候,最好把cL“包”组l;q跟java代码实现时的包结构对应;没有包,所有的cdU在一起将是一盘散沙?br />


okQ?br />




 
  




]]>
UMLcd关系全面剖析和C++代码表现Q{载)http://www.tkk7.com/flysky19/articles/86585.html不断前进的小乌龟不断前进的小乌龟Sat, 09 Dec 2006 13:27:00 GMThttp://www.tkk7.com/flysky19/articles/86585.htmlhttp://www.tkk7.com/flysky19/comments/86585.htmlhttp://www.tkk7.com/flysky19/articles/86585.html#Feedback0http://www.tkk7.com/flysky19/comments/commentRss/86585.htmlhttp://www.tkk7.com/flysky19/services/trackbacks/86585.htmlhttp://blog.csdn.net/dylgsy/archive/2006/08/16/1076044.aspx
2006q?2?0?br />

本文随便转蝲Q请保留出处Q?a >http://blog.csdn.net/dylgsy/

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

1、关?/strong>


双向兌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拥有Ҏ的一个指针,当然也可以是引用或者是倹{?/font>





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

class C3 
{
public:
    C4
* theC4;

}
;

class C4 
{

}
;

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




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

class C14 
{
public:
    C14
* theC14;

}
;

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

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



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

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、依?/strong>




依赖:
指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?/font>

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

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?/strong>




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

#include "C11.h"

class C12 : public C11
{
}
;


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



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

template<int>
class C13 
{
}
;

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


#  index 发表?006-08-17 11:42:00  IP: 218.81.82.*
对象Q或c)间的关系׃U:引用和ѝ?其他关系都是在这两种基础上演化而成?br />
#  jackezou 发表?006-08-17 22:04:00  IP: 221.216.173.*
聚合和组合那部分好象有些问题Q两者生成的代码怎么会是一L呢?
记得vckase.com有一文章《C++~程杂谈之四QO谈UML
》,里面说聚合是一U相Ҏ散的关系Q因此C9应该含有C10的指针而不是C10的对象?

希望作者能l箋p问题解释一下,谢谢Q!

#  一雨田 发表?006-08-17 22:33:00  IP: 219.136.188.*
对,聚合是一U相Ҏ散的关系Q文章里也说了,在ROSE里面生成的代码确实和l合是一L。他们的松散应该不在于是指针、值或者引用,你可以尝试用ROSEM个图——聚合和l合Q你可能发现ROSE不提供“组合关pZ这U图形(实心菱ŞQ我用的是ROSE2002Q,然后你打开关系(Aggregation)的Specification->Role B DetailQ你会发现有三项选(By Value, By Reference, UnspecifiedQ,在你选上By Value的时候,菱Ş变成实心的了,其他两个都是I心菱ŞQ这三种我都试过了,生成的代码都是一LQ所以我想组合和聚合的区别应该是一U语义上的区别,语义上的松散。当然在我们的印象中可能指针是比对象要松散一点,因ؓ如果是对象的话,p它的生命期了,所以实际应用时Q我觉得可以象你说的那样Q聚合用指针Q组合用对象。:Q?br />
#  jackezou 发表?006-08-19 09:17:00  IP: 61.149.248.*
OK, 谢谢Q?br />
#  sheismylife 发表?006-08-31 14:09:00  IP: 218.1.97.*
字太了

#  一雨田 发表?006-09-07 22:36:00  IP: 222.129.97.*
q个字是按照IE 讄的,如果惛_捯|字的大就按住CTRL然后用鼠标滚轮上下滚׃看到效果了?/div>


]]>cMcdpȝUML图与代码表现Q{载和自己的补充)http://www.tkk7.com/flysky19/articles/86524.html不断前进的小乌龟不断前进的小乌龟Sat, 09 Dec 2006 04:08:00 GMThttp://www.tkk7.com/flysky19/articles/86524.htmlhttp://www.tkk7.com/flysky19/comments/86524.htmlhttp://www.tkk7.com/flysky19/articles/86524.html#Feedback0http://www.tkk7.com/flysky19/comments/commentRss/86524.htmlhttp://www.tkk7.com/flysky19/services/trackbacks/86524.html 原文Q?a >http://www.javaeye.com/post/182099
2006q?2?0?br />
关键?   OO 泛化,依赖,兌,聚合

cMcM间的关系对于理解面向对象h很重要的作用Q以前在面试的时候也l常被问到这个问题,在这里我׃l一下?br />cMcM间存在以下关p?
(1)泛化(Generalization)
(2)兌(Association)
(3)依赖(Dependency)
(4)聚合(Aggregation)

UML图与应用代码例子:
1.泛化(Generalization)
[泛化]
表示cMcM间的l承关系Q接口与接口之间的承关p,或类Ҏ口的实现关系。一般化的关pL从子cL向父cȝQ与l承或实现的Ҏ相反?br />[具体表现]
父类 父类实例Qnew 子类()
[UML图](?.1)

?.1AnimalcMTigerc?Dogcȝ依赖关系

[代码表现]

  1. class  Animal{}   
  2. class  Tiger  extends  Animal{}   
  3. public   class  Test   
  4. {   
  5.      public   void  test()   
  6.     {   
  7.         Animal a= new  Tiger();   
  8.     }   
  9. }  

2.依赖(Dependency)
[依赖]
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例Q或者依赖另一个对象的服务Ӟq两个对象之间主要体Cؓ依赖关系?br />[具体表现]
依赖关系表现?font color="#ff0000">局部变?/font>Q?font color="#ff0000">Ҏ的参?/font>Q以及对静态方法的调用
[现实例子]
比如说你要去拧螺丝,你是不是要借助(也就是依?Z刀(Screwdriver)来帮助你完成拧螺?screw)的工?br />[UML表现](?.2)


?.2 PersoncMScrewdrivercȝ依赖关系

[代码表现]

  1. public class Person{   
  2.     /** 拧螺丝?/  
  3.     public void screw(Screwdriver screwdriver){   
  4.         screwdriver.screw();   
  5.     }   
  6. }  

3.兌(Association)
[兌]
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系Ӟq两个对象之间ؓ兌关系?br />[具体表现]
兌关系是?font color="#ff0000">实例变量
来实?br />[现实例子]
比如客户和订单,每个订单对应特定的客P每个客户对应一些特定的订单Q再例如公司和员工,每个公司对应一些特定的员工Q每个员工对应一特定的公?br />[UML图] (?.3)

?.3 公司和员工的兌关系


[代码表现]
  1. public class Company{   
  2.     private Employee employee;   
  3.     public Employee getEmployee(){   
  4.         return employee;   
  5.     }   
  6.     public void setEmployee(Employee employee){   
  7.         this.employee=employee;   
  8.     }   
  9.     //公司q作   
  10.     public void run(){   
  11.         employee.startWorking();   
  12.     }   
  13. }  
(4)聚合QAggregationQ?/font>
[聚合]
当对象A被加入到对象B中,成ؓ对象B的组成部分时Q对象B和对象A之间集关pR聚合是兌关系的一U,是较强的兌关系Q强调的?font color="#ff0000">整体?font color="#ff0000">部分
之间的关pR?br />[具体表现]
与关联关pMP聚合关系也是通过实例变量来实现这样关pȝ。关联关pd聚合关系来语法上是没办法区分的,?font color="#ff0000">语义
上才?font color="#ff0000">更好的区?/font>两者的区别?br />[兌与聚合的区别]
(1)兌关系所涉及的两个对象是处在同一个层ơ上的。比如h和自行R是一U关联关p,而不是聚合关p,因ؓZ是由自行车组成的?br />聚合关系涉及的两个对象处于不q等的层ơ上Q一个代表整体,一个代表部分。比如电脑和它的昄器、键盘、主板以及内存就是聚集关p,因ؓL是电脑的l成部分?br />(2)对于h聚集关系Q尤其是集关p)的两个对象,整体对象会制U它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期Q当整体消失Q部分也随之消失。比如张三的电脑被偷了,那么电脑的所有组件也不存在了Q除非张三事先把一些电脑的lgQ比如硬盘和内存Q拆了下来?br />[UML图](?.4)

?.3 电脑和组件的聚合关系

[代码表现]
  1. public class Computer{   
  2.     private CPU cpu;   
  3.     public CPU getCPU(){   
  4.         return cpu;   
  5.     }   
  6.     public void setCPU(CPU cpu){   
  7.         this.cpu=cpu;   
  8.     }   
  9.     //开启电?  
  10.     public void start(){   
  11.         //cpuq作   
  12.         cpu.run();   
  13.     }   
  14. }  


[参考资料]
1.《Java与模式?阎宏 ~著) W??l一建模语言UML?/strong>



补充Q?br />1.cM间的关系一般分为四U:兌Q依赖,泛化Q实玎ͼ
而聚合和l合只是一U特D的兌关系Q?
另外Q关联,泛化和实C格来说也都是依赖关系Q?br />
而楼L实现归ؓ泛化关系中了Q这是不对的Q?br />泛化对应extendsQ实现对应implementsQ对应java语法很好理解;

参考资料:
《UML参考手册》:W四?4.3关系 36?05q?月出版;
《UML用户指南》:
97中_
“泛化、关联,甚至包括实现其实都是某种依赖Q只不过它们本n有够重要的语义。如果你先对泛化、关联和实现建模Q然后把所有其他关p都看作是依赖,你就不会犯错误。?br />
101(高关系一章)中说Q?br />“Aggregation/Composition 聚合/l合 只是 Association 兌 的一U修饎ͼ一U高U用法,用于l节建模Q组合表CZU强拥有的聚合,整体与部分的生命周期一_。?br />
Q参考:http://www.umlchina.com/best/g24/u1127470.htmQ?br />
2.l上q文章补充一个实现的例子Q?br />?10QProfessorcdStudentcd现Person接口的类囑֮? src=
Q不q,应该l接口和实现都加上getEmailQgetTel之类的方法,q样才更好的体现接口的含义;囑֒java代码有待自己完善。)

3.补充l合的例子和uml图(实心Q:
l合关系的uml图:
先画聚合关系Q-》“open specification”-》“by value”;
q时聚合关系的图形就变成实心的了Q?/p>

]]> վ֩ģ壺 ձ߹ۿƵ| ҹþþþþþþõӰ | 337pձŷ޴| AVһ| aaҹѾ糡| Ƶѹۿ| ޸Ļ| ޹Ʒľþþ| AVרAVëվ| һѹۿ| ѿֻˬ͵Ƶ| 99ƷȫѹۿƵ..| ߹ۿAVƬ| ˾Ʒձ| еİjŽŮƵ| ҹįһۿ| þþƷ69Ʒ| ߹ۿѹۿ | Ů18ëƬˮѿ| AƬ߹ۿ| 鶹91Ƶ| ˽ӰԺƵվ | ޳| žѾƷƵ| ߹ۿձaƵ| С˵ͼۺ| ϺƷAV߲| պƷһҳһ| þѹۿƷ| ŷഺɫУ԰վ| ĻmvѸ | þþþavר| һëƬѿ| ޾Ʒþþþ| Ұ߹ۿ| ޻ɫ߹ۿ| Ƶ߹ۿ| AV˾ƷӰԺ| ޹һǻ| ŮǿƨͰˬ| ޲͵V͵Vɫ|