UML2.0类关系基本概念与StarUML2操作
2016-02-25 20:22
405 查看
类很少独立存在,类之间彼此协作。为系统建模的时候,既要从问题域抽离出对象,还要描述他们的关系。
有依赖、类属、关联(聚合、组合)、实现四种关系。
转载请注明原文地址:http://blog.csdn.net/ts_dchs/article/details/50740248
一个元素的变化会引起另一个的变化。(被依赖的元素Target变化会引起依赖元素Source的变化)
依赖关系还可以再细分为5种类型:
绑定(Binding)依赖
实现(Realization)依赖
使用(Usage)依赖
抽象(Abstraction)依赖
授权(Permission)依赖
虚线,括号尖,依赖指向被依赖:
![](https://img-blog.csdn.net/20160225201442583)
对应的是基本元素(父类)与特殊元素(子类)的关系,
这就是多态(Polymorphism)的特性——++同一操作,用于不同对象,效果不同++。这个实现源于子类的方法可以覆盖父类的方法。
如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。
编码:父类extends子类
实线,三角空心箭头,子类指向父类:
![](https://img-blog.csdn.net/20160225201520662)
编码:成员变量存有对别的对象的引用。声明之后用构造函数或者成员方法赋值。
实线,可以没有箭头。
![](https://img-blog.csdn.net/20160225201551351)
关联关系可以用四种基本修饰:名字(Name),角色(Role),阶元(Multiplicity),聚合(Agrregation)。
是概念上的关系,没有联系整体与部分的生命周期。
一个部分可以被多个整体共享。比如一个墙和两个房间。
编码:关联和聚合在语法没法区分,只能从语义区分。
实线,菱形空心:
![](https://img-blog.csdn.net/20160225201612632)
部分不能共享,整体负责Parts的创建和破坏。整体销毁,部分也销毁。
编码:类中的(私有)成员类。在产生对象的时候一起产生。用构造函数自己new出来。
实线,菱形实心
典型例子是一个窗体:
![](https://img-blog.csdn.net/20160225201631164)
接口是操作的集合,实现了定义和实现的分离。
编码:Java中声明interface,再类声明implements
软件中是用圆圈代表interface,而且上述线型会转化为如图的线
![](https://img-blog.csdn.net/20160225201641695)
虚线,空心三角
![](https://img-blog.csdn.net/20160225201717621)
这可以通过右键Icon形式的Interface通过修改Format来自动实现decoration或者label的添加。不用认为方式添加。
名字(Name)
角色(Role)
阶元(Multiplicity)
聚合(Agrregation)。
Role:关系中的类,扮演的角色。
在starUML2:在属性的end.name的位置设置。加号是自动带的,代表public,减号private。
![](https://img-blog.csdn.net/20160225201742821)
Multiplicity:多少个对象参与关联。类似ER图中的数量关系
编码:用一个list做参数?
StarUML2:可以双击name来选择,也可以填写end.multiplicity属性。
![](https://img-blog.csdn.net/20160225201801931)
有时候,关联本身带有一些信息,不能与二者之间的任何一方合并,需要独立存在,那么就可以用Association Classes表示。
比如,雇佣关系的例子中,可以抽象出关联类-Job
编码:声明一个类代表关系,通过关系类建立两个类的联系。
StarUML2:Calss(Advanced)用Association Class链接一个class和一个关系。
![](https://img-blog.csdn.net/20160225201829275)
如果有多个关联类,可以抽象出一个父类,大家集成之后在成为各自的关联类。
Navigation,导航:关联关系可以有方向。表明单方向,否则双向。
常见的单向关联有账号和密码,想让账号可以找到密码,但不希望密码找到账号。
编码:通过让账号(源)含有对密码(目标)的引用实现。
StarUML2:有单独的,Directed Association。
![](https://img-blog.csdn.net/20160225201845137)
notification
source: 资料源于网络。个人所学有限,若有错误和不足还请不吝赐教,我会及时更正。Terrence Zhou.
http://blog.csdn.net/ts_dchs
转载请注明原址
有依赖、类属、关联(聚合、组合)、实现四种关系。
转载请注明原文地址:http://blog.csdn.net/ts_dchs/article/details/50740248
1 依赖关系 - Dependency
Dependency Relationship一个元素的变化会引起另一个的变化。(被依赖的元素Target变化会引起依赖元素Source的变化)
依赖关系还可以再细分为5种类型:
绑定(Binding)依赖
实现(Realization)依赖
使用(Usage)依赖
抽象(Abstraction)依赖
授权(Permission)依赖
虚线,括号尖,依赖指向被依赖:
2 类属关系 - Generalization (继承关系)
共同特性的元素抽象成类,通过增加内涵进一步细分。对应的是基本元素(父类)与特殊元素(子类)的关系,
这就是多态(Polymorphism)的特性——++同一操作,用于不同对象,效果不同++。这个实现源于子类的方法可以覆盖父类的方法。
如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。
编码:父类extends子类
实线,三角空心箭头,子类指向父类:
3 关联关系 - Association
两个类之间存在的某种语义的联系,一种弱联系。关联本身是松散的,因为某个场景联系在一起。不过拆开可以独立存在。编码:成员变量存有对别的对象的引用。声明之后用构造函数或者成员方法赋值。
实线,可以没有箭头。
关联关系可以用四种基本修饰:名字(Name),角色(Role),阶元(Multiplicity),聚合(Agrregation)。
4 聚合关系 - Agrregation
是一种特殊的关联关系。他们之间的联系是整体、部分的关系。整体对部分是依赖的。是概念上的关系,没有联系整体与部分的生命周期。
一个部分可以被多个整体共享。比如一个墙和两个房间。
编码:关联和聚合在语法没法区分,只能从语义区分。
实线,菱形空心:
5 组合关系 - Composition
组合是聚合的变种,加强了整体与部分有一致的生命周期。部分不能共享,整体负责Parts的创建和破坏。整体销毁,部分也销毁。
编码:类中的(私有)成员类。在产生对象的时候一起产生。用构造函数自己new出来。
实线,菱形实心
典型例子是一个窗体:
6 实现关系 - Realize
常被用于接口和实现接口的类的关系。接口是操作的集合,实现了定义和实现的分离。
编码:Java中声明interface,再类声明implements
软件中是用圆圈代表interface,而且上述线型会转化为如图的线
虚线,空心三角
这可以通过右键Icon形式的Interface通过修改Format来自动实现decoration或者label的添加。不用认为方式添加。
7 关联关系的修饰
四种:名字(Name)
角色(Role)
阶元(Multiplicity)
聚合(Agrregation)。
Role:关系中的类,扮演的角色。
在starUML2:在属性的end.name的位置设置。加号是自动带的,代表public,减号private。
Multiplicity:多少个对象参与关联。类似ER图中的数量关系
编码:用一个list做参数?
StarUML2:可以双击name来选择,也可以填写end.multiplicity属性。
有时候,关联本身带有一些信息,不能与二者之间的任何一方合并,需要独立存在,那么就可以用Association Classes表示。
比如,雇佣关系的例子中,可以抽象出关联类-Job
编码:声明一个类代表关系,通过关系类建立两个类的联系。
StarUML2:Calss(Advanced)用Association Class链接一个class和一个关系。
如果有多个关联类,可以抽象出一个父类,大家集成之后在成为各自的关联类。
Navigation,导航:关联关系可以有方向。表明单方向,否则双向。
常见的单向关联有账号和密码,想让账号可以找到密码,但不希望密码找到账号。
编码:通过让账号(源)含有对密码(目标)的引用实现。
StarUML2:有单独的,Directed Association。
notification
source: 资料源于网络。个人所学有限,若有错误和不足还请不吝赐教,我会及时更正。Terrence Zhou.
http://blog.csdn.net/ts_dchs
转载请注明原址
相关文章推荐
- UML类图中的六种关系
- 比较常用UML类图几种关系的小结
- Class Model(类模型)
- 深入浅出UML类图(一)
- 一个在线的画UML图的网站
- visio画UML用例图没有include关系的解决方法
- 认识UML类图元素
- Visual Studio 2010中的UML
- 设计模式基础:类及类关系的UML表示
- UML基本概念
- 用UML做好系统分析
- UML-泛化,依赖,关联,聚合
- 八大UML类图符号的表示法
- UML类图的各种标识法
- UML三大建模工具的比较
- uml中六大关系
- UML用例的取名规则
- UML类图中箭头和线条的含义和用法
- 我所理解的OOP——UML六种关系
- UML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图