全面认识类图元素
http://uml.chinaitlab.com/UML/17681.html
1.generalization
2.实现realization.
二、依赖,关联,聚合和组合
1.实例化(依赖)
A将B作为局部变量进行使用.
程序1
void A::foo()
{
B b;
b.SomeMethod();
}
2.关联
A与B存在一定的关系. 这里只考虑单向导航. 关联在代码中有多种表现形式.
第一种, 作为参数:
程序2
void A::foo(B& b) // (B* b) or (B b)
{
b.SomeMethod();
}
第二种, 作为成员变量:
程序3
class A
{
public:
A(B& b)
{
b_ = b;
}
void foo()
{
b_.SomeMethod();
}
private:
B& b_; // B* b_
};
3.聚合
聚合是一种特殊的关联, 聚合更明确指出聚合的主体具有整体-部分关系. 代码的表现形式见程序3.
4.组合
组合是一种特殊的聚合, 组合中的某个主体控制着另外一个主体的生命周期,而且他们还存在整体-部分关系.
程序4
class A
{
public:
A()
{
b_ = new B;
}
~A()
{
delete b_;
b_ = NULL;
}
void foo()
{
b_->SomeMethod();
}
private:
B* b_;
};
UML中聚合和组合的关系
聚合:指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为…部分”等词常意味着聚合关系。
组合:也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。
聚合和组合的区别在于:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
我们用浅显的例子来说明聚合和组合的区别。“国破家亡”,国灭了,家自然也没有了,“国”和“家”显然也是组合关系。而相反的,计算机和它的外设之间就是聚合关系,因为它们之间的关系相对松散,计算机没了,外设还可以独立存在,还可以接在别的计算机上。在聚合关系中,部分可以独立于聚合而存在,部分的所有权也可以由几个聚合来共享,比如打印机就可以在办公室内被广大同事共用
关联和聚合的区别主要在语义上,关联的两个对象之间一般是平等的,例如你是我的朋友,聚合则一般不是平等的,例如一个公司包含了很多员工,其实现上是差不多的。聚合和组合的区别则在语义和实现上都有差别,组合的两个对象之间其生命期有很大的关联,被组合的对象是在组合对象创建的同时或者创建之后创建,在组合对象销毁之前销毁。一般来说被组合对象不能脱离组合对象独立存在,而且也只能属于一个组合对象,例如一个文档的版本,必须依赖于文档的存在,也只能属于一个文档。聚合则不一样,被聚合的对象可以属于多个聚合对象,例如一个员工可能可以属于多个公司。 我想举个通俗的例子。
你和你的心脏之间是composition关系(心脏只属于你自己)
你和你买的书之间是aggregation关系(书可能是别人的)
你和你的朋友之间是association关系
分享到:
相关推荐
第一大题uml图示例.vsdx
UML类图 用例图 协作图 序列图 状态图 活动图 属性、事件和委托 继承 抽象类与抽象方法 接口 一对一关联 一对多关联 双向关联 聚集 组合 依赖 相互依赖的包
UML 设计模式 示例 代码 软件工程 facade commander
图解UML知识的好图,初学UML者的绝佳材料
Uml 简单示例介绍,比较简单,权当入门看看吧。
UML建模示例与步骤.ppt
二手车交易网UML图,基于Visio 2016开发的UML示例图。
《Think in 大象》书中uml建模示例,Rose版本
UML建模实例,包含班级通讯录和东方商城的全部建模示例。
rationalrose 有关图书管理系统的用例。
统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML...
UML 精彩PPT 示例,可以看看
myeclipse UML 示例
UML参考手册+面向对象设计UML实践(第2版)+UML图例子+23种经典设计模式UML类图汇总
因工作需求,从网上下载了MyGraph的源代码,与本地一个例子做了一个demo,目前已实现UML图形编辑、本地打开、保存功能(google浏览器已测) 部署到tomcat后,打开URL: ...即可使用
包含UML活动图(流程图)、泳道图、状态图、用例图、类图、时序图六类常用图表元件及示例图,可快速、便捷地在Axure中进行产品建模分析。基于Axure的UML绘图元件库。可用于绘制UML用例图、流程图、时序图、泳道图、...
MVP模式在Android中的应用UML图(应用于RecyclerView)高清图
一个简单的例子,里面提供图形连接拖动等功能,供大家学习
统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法...用例图
里边有通过UML设计的完整示例项目来快速地学习使用Rational Rose 软件,主要有亲手绘制的UML图,分别是用例图,活动图,类图,顺序图,协作图,状态机图,构件图,部署图。有快速教程doc和详细UML pdf书