说明:
[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知识中,我记得组合是一种聚合,是一种更强的聚合关系。对此怀疑,便去百度
- http://www.blogjava.net/lukangping/archive/2010/08/01/327693.html 此处中指出:聚合是一种特殊的关联,而组合又是一种特殊的聚合。
- 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表示符是实心的菱形。这里的实心与上面的空心相区别,可以理解为:“组合”是实实在在的占有,并且可控制。
注意:
- 以上三种关联关系,并不是对立出现的,可能会重叠。一句话概括:聚合是特殊的关联关系,组合是特殊的聚合关系。中文好像没法表示其内在含义,大家还是记英文吧:association,aggregation,composition。
- 到底是关联关系、组合关系还是聚合关系,并没有定论,而要依据我们分析的系统和实际来设计,大家可以记住一句话:设计没有对错之分,只有好坏之分。例如:有人认为,木头和家具之间就是组合关系,因为他认为木头离开了家具就体现不出用处了,听着好像是对啊,起码在家庭这个场景中是对的吧?但也有人认为:木头和家具之间是聚合关系,木头离开了家具,可以用来做很多事情啊,例如,做一个旋转木马?如果把场景(也就是系统上下文)扩大到整个世界范围来说的话,这也是也对的吧?所以,不要争执,而去理解和体会。
- 大小: 46.7 KB
分享到:
相关推荐
通过阅读和学习这些JAVA学习笔记,开发者不仅可以掌握JAVA编程的基本技能,还能深入了解其设计理念,从而更好地应对各种实际开发问题。不断更新和完善自己的JAVA知识体系,对于成为一名优秀的JAVA开发者至关重要。
Java,作为一种广泛使用的编程语言,尤其在企业级应用开发中占据着重要地位。"Java学习笔记——良葛格"是一份专为初学者设计的教程资料,由良葛格精心编写,旨在帮助读者掌握JDK5.0版本的Java基础知识。JDK(Java ...
【狂神Java学习笔记——前端入门——HTML、CSS、JavaScript学习代码】是针对初学者的一份详实的学习资料,这份笔记记录了跟随B站知名up主“遇见狂神说”的java系列视频中关于前端开发的基础内容。笔记内容不仅与视频...
读书笔记:JAVA编程思想阅读
java编程思想笔记,建议与书本结合使用。。。。。。。。。。。
读书笔记:java编程思想
读书笔记:java 编程思想
本笔记涵盖了Java编程思想的多个方面,包括访问权限控制、封装、继承、多态、接口、内部类、持有对象等。 访问权限控制 访问权限控制是为了把变动的事物与保持不变的事物区分开来。Java中有四种访问权限修饰词:...
读书笔记:Java编程思想实践
读书笔记:java编程思想学习
读书笔记:Java编程思想源码
读书笔记:Java编程思想实例
读书笔记:java编程思想代码
读书笔记:Java编程思想5
读书笔记:java编程思想记录
读书笔记:Java编程思想习题
读书笔记:java编程思想demo