`
xue777hua
  • 浏览: 8825 次
  • 性别: Icon_minigender_1
  • 来自: 当下的世界
社区版块
存档分类
最新评论

[读书笔记]《Java编程思想》——包权限、3种关联关系的区别

阅读更多

说明:

 

[0] 最近一段时间开始看早就想看的一本书了《Java编程思想》。本系列日志为读书笔记,将记录书中自己认为值得记录的,和值得思考的,以及不太明白的,希望和大家交流和分享。暂且按照12地支来命名吧,文章会更新,如果感觉字太多了,则考虑新开一篇来续写。第二天我就觉得这个不合适了,还是按照topic来命名比较好。

 

[1] 楼主是中英文结合起来看的,以中文版为主(方便自己跳读),中文不清楚的地方回去翻英文版。

 

[2] 需要下载地址的,请猛戳:中文版 http://www.kuaipan.cn/file/id_13851514342742520.htm(网上的很多中文版都不给力,几M而已,而这个是高清无码86.5M的,绝对给力。不过需要有金山快盘账号,没有的可以点此注册一个 http://www.kuaipan.cn/?channel=in0n4j )  英文版:http://ishare.iask.sina.com.cn/f/34338054.html

 

[3] 本人邮箱: xue777hua@gmail.com  欢迎交流。

 

[4] 文章的标注字母分别代表:

  • K : Knowledge,知识点,结论性的东西。
  • Q: Question,疑惑,往往是对书中不明白的地方的疑问,这里往往会有自己的思考。

 

 

///////////////////////////////////////////////////此处是分割线///////////////////////////////////////////////////////

 

 

[0][K] 不写任何修饰符的权限为默认的访问权限,为包权限,包内其他类可以访问本包内的无修饰符类的成员。

 

[1][Q] 中文版的书中第五页的最后一段对于组合和聚合解释的不是很明晰。书中说明如下:

 

 

由文中,我们可以得到这样的结论:聚合是一种组合。

然而在我之前的UML知识中,我记得组合是一种聚合,是一种更强的聚合关系。对此怀疑,便去百度

 

  1. http://www.blogjava.net/lukangping/archive/2010/08/01/327693.html 此处中指出:聚合是一种特殊的关联,而组合又是一种特殊的聚合
  2. http://blog.csdn.net/xhf55555/article/details/6896516 这一篇文章把类的4中关系解释的很清楚,尤其是关联关系。
我们都知道,类之间有4种关系:关联、依赖、泛化、实现。而关联关系中,有一种叫聚合,有一种叫组合。下面我将详细说说自己对于这三种关系的区别的思考:关联、聚合、组合。
  • 关联关系:英文是association,动词为associate,联合。常用短语为:associate A with B。两家公司珠联璧合,但是A公司不会对B公司的生产经营负责,B公司也不会对A公司的业绩负责,故而association关系不对另一方的生命周期负责,一般就表示引用。关联关系有单向的也有双向的,参考 http://www.modernanalyst.com/Careers/InterviewQuestions/tabid/128/Default.aspx?ArticleType=ArticleView&ArticleID=1807 可知,所谓单向:即navigable,如果A是navigable,则在A与B的关联关系中,B知道A的存在,这里说起来有点抽象。例如:楼主爆料:陈冠希和张柏芝有染。在该系统中,陈冠希、张柏芝都与楼主关联,陈冠希和张柏芝对于楼主是navigable的,楼主对于陈冠希和张柏芝来说是non-navigable的,即为单向的关联关系。关联关系的UML标记是用一条实线将2个对象连接起来,单向就是单箭头,双向就是双箭头,如果系统中无所谓方向与否,则用一条实线即可。
  • 聚合关系:英文是aggregation,动词为aggregate,意为,聚集、集合、合计。古人云:“积土成山,风雨兴焉。积水成渊,蛟龙生焉。积善成德,而神明自得,圣心备焉。故不积跬步,无以至千里;不积小流,无以成江海。”英文对于聚合关系的解释是:has a,是整体与部分的关系。部分聚合起来,从而成其为整体,但是“聚合”的部分具有独立性,他可以独立于整体而存在。聚合关系的UML表示符是空心的菱形。
  • 组合关系:这种关系也是一种整体与部分的关系。英文是composition,我觉得这个词语用的太好了。为何?compose意思是“构成”的意思,但是它还有另一个意思“作曲”,我更加愿意用第二个意思来解释composition关系。作曲用的是音符,每个音符独立存在则无实在意义,故而,“组合”关系的部分不具备独立性,它依赖于整体而存在,整体消亡,则部分也不复存在。作曲中的每个音符有长有短,即,有生命周期,故而“组合”关系中的整体控制了部分的生命周期。对于组合关系的英文解释是:contains a,这个解释也非常好。contain有两个意思:1)包含2)控制,抑制。这完全说明了,组合关系,不仅仅是含有,而且还对其生命周期进行控制,故而,这是一种强的聚合关系。组合关系的UML表示符是实心的菱形。这里的实心与上面的空心相区别,可以理解为:“组合”是实实在在的占有,并且可控制。

注意:

 

  1. 以上三种关联关系,并不是对立出现的,可能会重叠。一句话概括:聚合是特殊的关联关系,组合是特殊的聚合关系。中文好像没法表示其内在含义,大家还是记英文吧:association,aggregation,composition。
  2. 到底是关联关系、组合关系还是聚合关系,并没有定论,而要依据我们分析的系统和实际来设计,大家可以记住一句话:设计没有对错之分,只有好坏之分。例如:有人认为,木头和家具之间就是组合关系,因为他认为木头离开了家具就体现不出用处了,听着好像是对啊,起码在家庭这个场景中是对的吧?但也有人认为:木头和家具之间是聚合关系,木头离开了家具,可以用来做很多事情啊,例如,做一个旋转木马?如果把场景(也就是系统上下文)扩大到整个世界范围来说的话,这也是也对的吧?所以,不要争执,而去理解和体会

 

 

 

  • 大小: 46.7 KB
7
6
分享到:
评论
14 楼 xue777hua 2012-10-22  
zpfnfsa2 写道
楼主加油,支持一个。

:)
13 楼 zpfnfsa2 2012-10-22  
楼主加油,支持一个。
12 楼 xue777hua 2012-10-22  
tom31203120 写道
的确不怎么的

嗯,会继续努力的。
11 楼 tom31203120 2012-10-22  
的确不怎么的
10 楼 xue777hua 2012-10-22  
天朗java 写道
表 支持

9 楼 xue777hua 2012-10-22  
guokwei 写道
楼主加油,支持一个。

谢谢,一起加油
8 楼 天朗java 2012-10-22  
表 支持
7 楼 guokwei 2012-10-22  
楼主加油,支持一个。
6 楼 xue777hua 2012-10-21  
hyneng 写道
兄弟,继续加油,不要太在乎某些人


嗯嗯 不过的确是初学者
5 楼 hyneng 2012-10-21  
兄弟,继续加油,不要太在乎某些人
4 楼 xue777hua 2012-10-21  
jasshine 写道
鼓励一下吧。。呵呵


谢谢 呵呵
3 楼 jasshine 2012-10-21  
鼓励一下吧。。呵呵
2 楼 xue777hua 2012-10-21  
xieyongwei 写道
楼主肯定自我感觉良好
但是人家一看,P hua 连篇之流!


本人才疏学浅,劳烦指出不当之处?本意就是为了交流想法的,我也只是写出了自己的思考。
1 楼 xieyongwei 2012-10-21  
楼主肯定自我感觉良好
但是人家一看,P hua 连篇之流!

相关推荐

Global site tag (gtag.js) - Google Analytics