uml类图的关系:

泛化关系也就是继承。

实现关系就是一个类实现另外一个接口。

依赖关系就是一个类使用了另外一个类,是一种使用关系,在这个类的某个服务中需要另外一个类来协助。

关联关系就是一类拥有另外一个类,是一种拥有关系,这个类在创建的时候需要另外一个类的协助,可以是双向的但是最好依据业务的关注点变成单向的。

聚合关系是整体与部分的关系但是部分可以离开整体而存在。

组合关系也是整体与部分的关系但是两者的生命周期是绑定在一起的,部分不能离开整体而存在。

更喜欢我们大哥的分类:

多态:

泛化关系,实现关系

依赖:

依赖关系

关联:

关联关系,聚合关系,组合关系

详见博客

类图关系的图形表示:

泛化关系(继承)
(带三角箭头的实线,箭头指向父类)

实现关系
(带三角箭头的虚线,箭头指向接口)

依赖关系
(带箭头的虚线,指向被使用者)

关联关系:
(带普通箭头的实心线,指向被拥有者)

聚合关系
(带空心菱形的实心线,菱形指向整体)

组合关系
(带实心菱形的实线,菱形指向整体)

代码层面的表示:

泛化关系
public Class Tigger extends Animal{
实现关系
public Class Course implements Goods{
依赖关系
局部变量、方法的参数或者对静态方法的调用

关联关系,聚合关系,组合关系都是成员变量

实际应用需注意:

要依据真实需求的描述来确定类关系

类与类之间关系的确定必须是依据实际需求,换句话说就是在某个语义下才能确定两个类的关系,客观真实的反应真实需求。
比如:语义环境是:"汽车有四个车轮,有了车轮汽车才可以行驶,车轮本身有自己的特征(颜色,大小)"
那么我们就可以抽取出汽车类和车轮类,那么如何确定他们的关系??
根据uml类关系我们可以排除实现和继承,那么就剩下关联和依赖,依赖强调的是使用关系,关联强调的是拥有关系,“有车轮才可以行驶”这句话就可以
推断出他们不是使用关系,而是拥有关系,汽车必须拥有车轮。所以应该是:

比如:语义环境“卸掉的车轮要放到车库中去”依据这句话我们可以抽取两个类
车轮类和车库类,那么他们之间的关系又是什么呢?
肯定也不是实现和继承,那究竟是依赖还是关联呢,根据"车轮放到车库中"这句话可以得出,车库要提供一个存放车轮的服务,
两者不是拥有关系而是使用关系。所以:

另外一种方式确定类的关系

语义描述"一个学习视频有多个知识点,一个知识点又可以被多个视频拥有"
还有一种方法来确定两个类的关系,使用类关系的代码体现确定类关系:
依赖关系的代码体现是方法参数,局部变量,静态方法调用。
关联关系的代码体现是成员变量。
根据"一个学习视频有多个知识点"的描述我们可以知道,视频类肯定有一个list<知识点类>的成员变量,
根据"一个知识点又可以被多个视频拥有"的描述我们可以知道,知识点类也有一个list<视频类>的成员变量,
所以可以断定视频类和知识点是关联关系。

注意:并不是所有的成员变量都是关联关系,如果说这个对象在创建的时候就需要这个属性,那么就可以断定是关联关系,
但是如果这个属性可以放在创建这个对象之后赋值,那么它就是依赖关系。

针对多对多一对多这种关系的指向如何确定以哪一类为起点呢??

还是上面的语义描述"一个学习视频有多个知识点,一个知识点又可以被多个视频拥有"
由上面的分析我们已经可以确定视频类和知识点是关联关系,那我们在做指向的时候做双向箭头的话,理解起来会有问题,如:

所以我们团队的做法是根据你的业务关注程度,比如说你正在做视频有关的业务,那你就应该讲箭头指向知识点类。

确定完类关系为关联关系之后我们创建的类要如何体现类关系呢?比如:关联关系的一对多,多对多?

可能有人觉得前面已经讲过关联关系的代码体现是成员变量吗,直接使用成员变量不就完了吗?
比如:
一对多:
一里面放一个类型为多的集合成员变量。
多对多:
双方都存放彼此类型集合的成员变量。
但是,这样我们在做数据持久的时候非常麻烦。
所以我们的做法是:
如果是一对多就在以里面存放一个多的主键ID,比如:
一个视频一定是属于某个老师的,代码如图:

如果是多对多我们采用的是关系表去做,
比如说视频和知识点的关系我们会创建一个关系表去承载这个多对对关系,在实体类中不做体现。

我对uml类图关系的理解的更多相关文章

  1. UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父 ...

  2. 图解六大UML类图关系

    在学习UML类图的过程中,UML类图关系是必须要掌握的问题,UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. UML类图关系简介 依赖(Dependen ...

  3. UML类图关系大全

    UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法.在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设 ...

  4. UML[1] UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)(转)

    转自:http://blog.csdn.net/zhaoxu0312/article/details/7212152 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是 ...

  5. UML类图关系大全【转】

    UML类图关系大全 1.关联 双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设 ...

  6. 【UML】UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的 ...

  7. UML类图关系(继承、泛化、实现、依赖、关联、聚合、组合)

    继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者 ...

  8. UML类图关系(转,添加了实例)

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Associati ...

  9. UML类图关系表示方法

    本文转载: http://blog.csdn.net/fengsh998/article/details/8105631 分类: UML2012-10-24 10:18 1175人阅读 评论(0) 收 ...

随机推荐

  1. linux内核中的每cpu变量

    一.linux中的每cpu变量 看linux内核代码的时候,会发现大量的per_cpu(name, cpu),get_cpu_var(name)等出现cpu字眼的语句.从语句的意思可以看出是要使用与当 ...

  2. C# 将excel表格嵌入到Word中

    C# 将excel表格嵌入到Word中 继续开扒,今天要实现的是使用C#将excel表格嵌入到Word中这个功能,将word表格导入到excel中我已经写过了,如有需要可参考我之前的文章,在开始前还有 ...

  3. 多种方法实现Loading(加载)动画效果

    当我们ajax提交一个按钮的时候,给那个按钮来个Loading效果会高端很多,体验也会上升个层次. 既能让用户知道正在提交中,也能防止二次提交,好处多多呢.

  4. grunt任务之seajs模块打包

    grunt与seajs grunt是前端流行的自定义任务的脚手架工具,我们可以使用grunt来为我们做一些重复度很高的事情,如压缩,合并,js语法检查等.通过定义grunt的配置文件Gruntfile ...

  5. Net设计模式实例之建造者模式(Builder Pattern)

    一.建造者模式简介(Brief Introduction) 建造者模式(Builder Pattern),将一个复杂对象的构建与它的表示分离,使的同样的构建过程可以创建不同的表示. 建造者模式的优点是 ...

  6. 数据结构(c语言第2版)-----了解链表,栈,队列,串

    关于链表我觉得这都是最基本的东西,但是不常见,在实际的应用中很少的使用,了解它会用就OK,不需要研究的那么深,除非做那种内存压缩,存储方面工作. C语言中动态申请空间 malloc() q=(dlin ...

  7. 【原创】kafka admin源代码分析

    admin包定义了命令行的一些实现 一.AdminOperationException.scala 一个异常类,表示执行admin命令时候抛出的异常 二.AdminUtils.scala admin一 ...

  8. processModel与ASP.NET进程模型

    配置 Microsoft Internet 信息服务 (IIS) Web 服务器上的 ASP.NET 进程模型设置.其作用是配置IIS或IIS中的应用程序池(IIS7及以后版本)的安全性,性能,健壮性 ...

  9. webapi文档描述-swagger

    最近做的项目使用mvc+webapi,采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用word文档方式进行交流 ...

  10. WebAPI2使用AutoFac依赖注入完整解决方案。

    WebApi2上进行依赖注入,在百度里能搜到的的完整解决方案的文章少之又少,缺胳膊断腿. 和MVC5依赖注入的不同之处,并且需要注意的地方,标记在注释当中.上Global代码: namespace S ...