全面认识类图元素
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知识的好图,初学UML者的绝佳材料
实际的UML图示例能展示理论在具体问题中的应用,让学习者能够通过实例加深对UML图表类型的理解。无论是对于复杂的交互关系,还是对于系统组件的部署情况,UML图例子都能提供直观的展示。通过观察和分析这些例子,...
UML建模示例与步骤.ppt
其UML图示例展示了如何通过一个静态工厂方法来创建对象。 - **工厂方法模式**:工厂方法模式提供了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂方法让类的实例化延迟到了子类。相比于简单工厂模式,...
二手车交易网UML图,基于Visio 2016开发的UML示例图。
《Think in 大象》书中uml建模示例,Rose版本
**UML(统一建模语言)**是一种标准的图形化建模工具,广泛应用于软件工程领域,用于描述、可视化、构建和文档化软件系统。...通过深入研究这些示例,我们可以更好地掌握UML的各种图表和概念,提升软件设计能力。
在这个压缩包文件中,我们可以期待找到一些示例图或一个工具,演示了如何绘制和操作UML图的基本元素。 UML包括多种图表类型,如用例图、类图、序列图、协作图、状态图、活动图等。每个图表都有其特定的用途: 1. *...
rationalrose 有关图书管理系统的用例。
统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML...
通过这份“大象UML-建模示例HTML版”资源,用户可以深入理解UML的各种图型,学习如何创建和解读这些图,从而更好地应用于实际项目中。同时,HTML格式的教程使得学习更加灵活,无论是在电脑还是移动设备上,都能...
UML 精彩PPT 示例,可以看看
2. **熟悉图示例**:通过阅读和分析不同类型的UML图示例,了解每种图如何表达系统特性。 3. **实践绘制**:动手绘制UML图是深化理解的关键,可以从简单的类图开始,逐步尝试更复杂的用例图和序列图。 4. **案例...
**打包大全**通常指的是UML工具或资源集合,可能包含各种UML图示例、教程、模板、最佳实践和实用工具,旨在帮助用户全面掌握UML的使用。这些资源可以帮助初学者快速入门,同时也为经验丰富的开发者提供了深入学习和...
"UML.rar_uml例子"这个压缩包很可能包含了以上提到的UML图示例,通过这些图,我们可以深入了解课程管理系统的各个层面,理解其设计思路和功能实现。这些图表对于需求分析、系统设计和沟通交流都是极其有价值的工具。...
【标签】"UML"是本次讨论的核心,UML2.0是目前广泛使用的版本,包括了类图、对象图、用例图、序列图、协作图、状态图、活动图、组件图、部署图等九种主要的图表类型。这些图表在软件开发的不同阶段扮演着不同角色,...
**UML图示例:** - **类图**:展示投稿系统中各个实体之间的关系,例如会员类、稿件类、编辑类等。 - **序列图**:描述会员登录、提交稿件时的对象交互过程。 - **活动图**:展示稿件从提交到审核的整个流程。 ###...