聚合和组合 的描述 及 在 java里的描述
1.聚合的定义**聚合**:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。 2.组合的定义**组合**:也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。3.区别于联系***聚合和组合的区别在于***:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。我们用浅显的例子来说明聚合和组合的区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系。而相反的,计算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独立存在,还可以接在别的计算机上。在聚合关系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用。 mark : 依赖,关联,聚合,组合 4.实例描述 组合和聚合是有很大区别的,这个区别不是在形式上,而是在本质上: 4.1 组合package com.orclight.model.compVO; /** * @Description:Hand * @author: orclight * @since 2013-4-30 下午6:46:50 * @version 1.0.0 */ public class Hand { } /** * @Description:Person 和 Hand 是组合关系(具有相同的) * @author: orclight * @since 2013-4-30 下午6:46:36 * @version 1.0.0 */ public class Person { private Hand hand; /** * person 和 hand具有相同的生命周期 */ public Person() { hand = new Hand(); } public Hand getHand() { return hand; } public void setHand(Hand hand) { this.hand = hand; } } 4.2 聚合package com.orclight.model.aggVO; /** * @Description:Computer * @author: orclight * @since 2013-4-30 下午6:52:37 * @version 1.0.0 */ public class Computer { } package com.orclight.model.aggVO; import com.orclight.model.compVO.Person; /** * @Description:Person 和 Computer是聚合关系 * @author: orclight * @since 2013-4-30 下午6:51:35 * @version 1.0.0 */ public class Student extends Person{ private Computer computer; public Student() { } public Computer getComputer() { return computer; } /** * * setComputer(需要的时候再设置进去) * @param computer * @return void * @since 1.0.0 */ public void setComputer(Computer computer) { this.computer = computer; } } 参考 :1.http://topic.csdn.net/u/20090414/20/4d6f98c7-94aa-4e6c-be7c-88d9e3e15bdc.html 2.http://wenwen.soso.com/z/q178801871.htm (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |