类图use-a,has-a,contain-a(composition),implements,extends区别
来源:互联网 发布:手机淘宝怎么评价 编辑:程序博客网 时间:2024/06/05 17:51
一、横向关系:
1.depedency依赖,use-a 是类之间的一种很弱的联系 , use-a ,send-a,parameter-a 关系,常用是将一个类对象作为一个类里面方法的参数。是偶然的,临时的, 对象间是并列关系 调用了一个对象,以利用它的成员。
2.association关联,use-a 他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、;是固定的、长期的、对象间是并列的、可单向或双向的, 1被关联类对象以类属性的形式出现在关联类中,2也可能是关联 类A引用了一个类型为被关联类B的全局变量。一般不是依赖、聚合和组合的非整体与局部(特别是对类的全局变量引用 )就说关联关系。
属于关联下的聚合和组合关系(整体与局部关系):
3.aggregation聚合,has-a异步 ,学校与学院,用到了类a,因为要用类a的成员。弱的整体与局部关系,因为有a对象,但是a对象也可以被其他类拥有。他们之间不是生死与共的生命周期,然后是局部对象作为整体类的属性, 局部的对象是可以在外面先创建的,可以被多个整体类调用,毁灭时不一定毁灭它。 A relationship B用实线空菱形箭头表示。整体类属性,创建时间,其它类调用,毁灭时间。
4.composition组合,contain-a同步 ,窗口与菜单按钮,包含a,强的整体与局部的关系,拥有了a,且有且仅有它拥有a对象,是生死与共的生命周期,将局部的对象作为整体类的属性,创建时创建,只有被当前类使用,特别是毁灭时毁灭。 A relationship B用实线实心菱形表示。 整体类属性,创建时间,其它类调用,毁灭时间。
在C++语言中,从实现的角度讲,聚合可以表示为:
class A {...}
class B { A* a; .....} //* a只是引用指针,也就是A对象的创建不在这里。
即类B包含类A的指针;
而组合可表示为:
class A{...}
class B{ A a; ...}
即类B包含类A的对象。
其关系强弱为dependency<association<aggregation<composition
二、纵向关系:
5.implements, 实现接口 虚线实体大箭头表示.
6.extends IS-a 就是继承关系了,当添加了新的方法就是is-like-a,应该首先考虑组合而不是继承,因为组合可以毫不影响引用类,且可以动态的修改新类的成员(来自java编程思想)。泛化: 继承实现方法多态的形式,实线大箭头表示。
1.depedency依赖,use-a 是类之间的一种很弱的联系 , use-a ,send-a,parameter-a 关系,常用是将一个类对象作为一个类里面方法的参数。是偶然的,临时的, 对象间是并列关系 调用了一个对象,以利用它的成员。
2.association关联,use-a 他体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、;是固定的、长期的、对象间是并列的、可单向或双向的, 1被关联类对象以类属性的形式出现在关联类中,2也可能是关联 类A引用了一个类型为被关联类B的全局变量。一般不是依赖、聚合和组合的非整体与局部(特别是对类的全局变量引用 )就说关联关系。
属于关联下的聚合和组合关系(整体与局部关系):
3.aggregation聚合,has-a异步 ,学校与学院,用到了类a,因为要用类a的成员。弱的整体与局部关系,因为有a对象,但是a对象也可以被其他类拥有。他们之间不是生死与共的生命周期,然后是局部对象作为整体类的属性, 局部的对象是可以在外面先创建的,可以被多个整体类调用,毁灭时不一定毁灭它。 A relationship B用实线空菱形箭头表示。整体类属性,创建时间,其它类调用,毁灭时间。
4.composition组合,contain-a同步 ,窗口与菜单按钮,包含a,强的整体与局部的关系,拥有了a,且有且仅有它拥有a对象,是生死与共的生命周期,将局部的对象作为整体类的属性,创建时创建,只有被当前类使用,特别是毁灭时毁灭。 A relationship B用实线实心菱形表示。 整体类属性,创建时间,其它类调用,毁灭时间。
在C++语言中,从实现的角度讲,聚合可以表示为:
class A {...}
class B { A* a; .....} //* a只是引用指针,也就是A对象的创建不在这里。
即类B包含类A的指针;
而组合可表示为:
class A{...}
class B{ A a; ...}
即类B包含类A的对象。
其关系强弱为dependency<association<aggregation<composition
二、纵向关系:
5.implements, 实现接口 虚线实体大箭头表示.
6.extends IS-a 就是继承关系了,当添加了新的方法就是is-like-a,应该首先考虑组合而不是继承,因为组合可以毫不影响引用类,且可以动态的修改新类的成员(来自java编程思想)。泛化: 继承实现方法多态的形式,实线大箭头表示。
- 类图use-a,has-a,contain-a(composition),implements,extends区别
- 类图use-a,has-a,contain-a(composition),implements,extends区别
- is-a、 has-a、 use-a
- C++箴言:通过composition模拟“has-a”
- C++箴言:通过composition模拟“has-a”
- golang中的use-a和has-a
- use-a, has-a, is-a和实现关系 介绍
- use-a, has-a, is-a和实现关系 介绍
- has a / is a 的区别
- has a / is a 的区别
- IS-A/HAS-A的区别
- has a / is a 的区别
- is-A和has-A的区别
- 第九节,is-a,has-a区别
- has a / is a 的区别
- is-a 与 has-a的区别
- IS--A与 Has-a 区别
- is a 与 has a的区别
- Android开发 第三课 HelloActivity的源文件结构
- [转]Robust PCA 学习笔记
- Linux平台Makefile文件的编写基础篇
- Java数据类型之byte、char
- MTK feature phone ADC参数配置
- 类图use-a,has-a,contain-a(composition),implements,extends区别
- 【效率与整洁】
- mysql.h:没有文件或目录
- 常用日常英语缩写
- JAVA面试题总汇(含答案)
- SQLServer SQL总结
- 修改Oracle 字段类型
- 浏览器内存泄漏问题的跟踪与解决
- 幕后英雄的用武之地 ——浅谈Java内部类的四个应用场景