说明:
[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编程语言中,面向对象编程是核心概念之一。本篇笔记主要围绕面向对象的三大特性——封装、继承和多态,以及类和对象的基本概念进行阐述。 首先,对象是描述现实世界中事物的实体,它可以是抽象的,也可以是...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
《基于YOLOv8的智慧社区独居老人生命体征监测系统》(包含源码、可视化界面、完整数据集、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计
Android Studio Meerkat 2024.3.1 Patch 1(android-studio-2024.3.1.14-mac.dmg)适用于macOS Intel系统,文件使用360压缩软件分割成两个压缩包,必须一起下载使用: part1: https://download.csdn.net/download/weixin_43800734/90557060 part2: https://download.csdn.net/download/weixin_43800734/90557056
侧轴承杯加工工艺编制及夹具设计.zip
NASA数据集锂电池容量特征提取(Matlab完整源码和数据) 作者介绍:机器学习之心,博客专家认证,机器学习领域创作者,2023博客之星TOP50,主做机器学习和深度学习时序、回归、分类、聚类和降维等程序设计和案例分析,文章底部有博主联系方式。从事Matlab、Python算法仿真工作8年,更多仿真源码、数据集定制私信。
板料折弯机液压系统设计.zip
C6150车床的设计.zip
机器学习之KNN实现手写数字
python爬虫;智能切换策略,反爬检测机制
mpls-vpn-optionA-all
56tgyhujikolp[
GB 6442-86企业职工伤亡事故调查分析规则.pdf
汽车液压式主动悬架系统的设计().zip
2000-2024年各省专利侵权案件结案数数据 1、时间:2000-2024年 2、来源:国家知识产权J 3、指标:专利侵权案件结案数 4、范围:31省 5、用途:可用于衡量知识产权保护水平
资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。
内容概要:本文档详细复现了金融数学课程作业,涵盖欧式看涨期权定价和投资组合优化两大部分。对于欧式看涨期权定价,分别采用Black-Scholes模型和蒙特卡洛方法进行了计算,并对彩虹期权进行了基于最大值的看涨期权定价。投资组合优化部分则探讨了最小方差组合、给定收益的最小方差组合、最大效用组合以及给定风险的最大收益组合四种情形,还对比了拉格朗日乘数法和二次规划求解器两种方法。文中不仅提供了详细的MATLAB代码,还有详尽的中文解释,确保每一步骤清晰明了。 适合人群:金融工程专业学生、量化分析师、金融数学爱好者。 使用场景及目标:①帮助学生理解和掌握金融衍生品定价的基本原理和方法;②为从事量化分析的专业人士提供实用工具和技术支持;③作为教学材料辅助高校教师讲授相关内容。 其他说明:文档还包括了完整的论文结构建议,从封面页到结论,再到附录,涵盖了所有必要元素,确保提交的作业符合学术规范。此外,还特别强调了数据预处理步骤,确保代码可以顺利运行。
脉冲电解射流加工喷射装置设计(1)
ThinkPad S1 (2nd Generation) 和ThinkPad Yoga 260 用户指南V3.0,包含如何拆机更换硬件