美文网首页
详解UML中的6大关系(OC代码)

详解UML中的6大关系(OC代码)

作者: 淡水湖 | 来源:发表于2018-05-21 16:23 被阅读20次

一 。UML中的6大关系

依赖 聚合 组合 泛化 实现 关联

1 依赖 (Dependence):假设A类的变化引起了B类的变化,则说明B类依赖于A类.
(1)类B以参数的形式传入类A的方法。
(2)类B以局部变量的形式存在于类A的方法中。
(3)类A调用类B的静态方法。

依赖关系(Dependency) 是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。

• 在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。


dependence.png
#import "Driver.h"

@interface Car : NSObject

- (void)move;

@end

@implementation Car

- (void)move{
    
}
@end

@interface Driver : NSObject

- (void)drive:(Car *)car;

@end

@implementation Driver

- (void)drive:(Car *)car{
    [car move];
}
@end

依赖关系有如下三种情况:

1、A类是B类中的(某中方法的)局部变量;

2、A类是B类方法当中的一个参数;

3、A类向B类发送消息,从而影响B类发生变化;

2 关联(Association)
关联关系使一个类知道另外一个类的属性和方法;某个对象会长期的持有另一个对象的引用,关联的两个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,它们在生命期问题上没有任何约定。被关联的对象还可以再被别的对象关联,所以关联是可以共享的。 在代码层面上,被关联类以类属性的形式出现在关联类中,也可能是关联类引用了一个类型为被关联类的全局变量。目前定义有五种不同类型的关联。双向(Bi-directional)和单向(uni-directional)的关联是最常见的。

双向(Bi-directional) 顾客可以有若干个制造者属性。但是你不能去指使制造者去干活。制造者也不能强制消费者来消费。
因为两个类都知道对面所有的公共方法。所以这个双向关联不成立。

biassociation@2x.png

单项关联 将军知道自己的士兵 而且随时可以命令自己的士兵去做该做的事情


biAssociation.png

3 聚合关系(Aggregation):表示的是整体和部分的关系,整体与部分 可以分开。表现在代码层面,和关联关系是一致的,只能从语义级别来区分。
是弱的关联关系。聚合关系是整体和个体的关系。普通关联关系的两个类处于同一层次上,而聚合关系的两个类处于不同的层次,一个是整体,一个是部分。同时,是一种弱的“拥有”关系。此时整体与部分之间是可分离的,他们可以具有各自的生命周期, 部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;
UML图中实现使用一条带有虚心菱形的线来表示,如下:

asmemble@2x.png

4 组合(Composition)
组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的大脑;表现在代码层面,和关联关系是一致的,只能从语义级别来区分.

Compose@2x.png

5 6 泛化,实现

泛化(Generalization)。表示的类与类之间的继承关系。指的是一个类(称为父类、父接口)具有另外的一个(或一些)类(称为子类、子接口)的共有功能。子类可视为其父类的特例,并可以增加新功能。用带空心三角形箭头的实线表示。(就是继承)

Generalization@2x.png

实现(Realization)指的是一个class类实现interface接口(可以是多个)的功能;在Java中此类关系通过关键字implements明确标识。实现表示类对接口的实现。
UML图中实现使用一条带有空心三角箭头的虚线指向接口

Realization@2x.png

相关文章

  • 详解UML中的6大关系(OC代码)

    一 。UML中的6大关系 依赖 聚合 组合 泛化 实现 关联 1 依赖 (Dependence):假设A类的变化引...

  • (转)UML类图

    UML中常见关系详解(泛化、实现、依赖、关联、组合、聚合) UML中类与类,已经类与接口,接口与接口的关系有:泛化...

  • UML类图

    UML类图与类的关系详解 原链接:https://www.cnblogs.com/pangjianxin/p/78...

  • iOS设计模式-单例

    直接上代码,后面详解 OC实现 swift实现 详解 注:如果不实现copy,mutableCopy方法,在掉用的...

  • Swift: 将WKWebView转成PDF

    WKWebView详解--OC版使用的webView是WKWebView,核心代码是Swift4.0

  • UML详解,详细介绍什么是UML:

    UML详解,详细介绍: UML概念: 1. UML-Unified Model Language 统一建模语言,又...

  • UML类图

    转:UML各种关系符号UML类图感知 UML中描述 对象 / 类 之间相互关系的方式包括:依赖(继承,实现),关联...

  • OC 与 Swift

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(中)—— OC对象的种类

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

  • OC对象的本质(下)—— 详解isa&supercl

    OC对象的本质(上):OC对象的底层实现原理OC对象的本质(中):OC对象的种类OC对象的本质(下):详解isa&...

网友评论

      本文标题:详解UML中的6大关系(OC代码)

      本文链接:https://www.haomeiwen.com/subject/jafqjftx.html