九种关系总结,EA图中会用到:

关联关系(Association):双向关联,单向关联,自关联、多重性关联Multiplicity、

聚合(Aggregation):整体与部分的关系,整体对象销毁时成员对象不销毁,一般是构造函数或Set方法传入成员对象。

组合(Composition)整体与部分的关系,整体对象销毁时成员对象一并销毁,一般在构造函数中创建成员对象。

依赖关系(Dependency):Driver类依赖Car类的move方法,Driver--->Car

泛化关系(Generalization):父类与子类之间,由子类指向父类

实现关系(Realization):接口与实现类之间,由实现类指向接口

在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)

1. 泛化(Generalization)

【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

【箭头指向】:带三角箭头的实线,箭头指向父类

        2. 实现(Realization)

【实现关系】:是一种类与接口的关系,表示类是接口所有特征和行为的实现.

【箭头指向】:带三角箭头的虚线,箭头指向接口

        3. 关联(Association)

【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

【代码体现】:成员变量

【箭头及指向】:带普通箭头的实心线,指向被拥有者

上图中,老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。但学生与某课程间的关系为单向关联,一名学生可能要上多门课程,课程是个抽象的东西他不拥有学生。

下图为自身关联:

        4. 聚合(Aggregation)

【聚合关系】:是整体与部分的关系,且部分可以离开整体而单独存在。如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。

聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

【代码体现】:成员变量

【箭头及指向】:带空心菱形的实心线,菱形指向整体

        5. 组合(Composition)

【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

【代码体现】:成员变量

【箭头及指向】:带实心菱形的实线,菱形指向整体

        6. 依赖(Dependency)

【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

【代码表现】:局部变量、方法的参数或者对静态方法的调用

【箭头及指向】:带箭头的虚线,指向被使用者

各种关系的强弱顺序:

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

下面这张UML图,比较形象地展示了各种类图关系:

用例图:

用例图各部分:

  • 操作者Actor(其他图比如说类图中,需要对构造型进行设置)
  • 空心三角代表泛化关系,三角指向的对象是父类
  • 关联关系(带箭头的实线,箭头指向用例)include(虚线箭头+<<include>>字样,箭头由基础用例指向被包含的用例)、extend关系(虚线箭头+<<extend>>字样,箭头指向被扩展的用例(基础用例),添加新的行为到已有用例-可能不执行)
  • 区别include和extend:include包含的用例对基础用例可见,并且去掉被包含的用例后基础用例将不完整。Extend扩展的用例对基础用例不可见,并且去掉扩展的用例后基础用力依然完整。
    **绘制注意事项:
  1. 用例是动宾短语,要体现系统功能
  2. 参与者不一定是人**
  3. 不必要的时候不使用include、extend

甘特图

也称为条状图,是一种按照时间进度标出工作活动,用于项目管理的图表。甘特图用横轴表示时间,纵轴表示活动,线条表示在计划期间活动的安排以及完成情况。以图示的方式通过活动列表和时间刻度形象地表示出任何特定项目的活动顺序与持续时间。

类图

类图是软件的蓝图,用于详细描述系统内各个对象的相关的类,以及这些类之间的静态关系。设计类是已经完成了规格说明并且达到能够被实现程度的类。
类组件:类名-如果是抽象类需要斜体
类属性:可见性 名称:类型 [=缺省值]
+(public) –(private) #(protected) ~(package)
** 六种类间关系(耦合度由低到高)**
依赖关系use-a、关联关系has-a、聚合关系、组合关系、泛化关系is-a、实现关系(类与接口)

  • 关联关系-单向关联:一个类知道另一个类的属性和方法
  • 关联关系-双向关联:互相知道
  • 关联关系-多元关联
  • 关联关系-聚集:整体包含部分,但是部分可以脱离整体单独存在。(图书馆与图书)【空心菱形,菱形在整体的那一边】
  • 关联关系-组合:整体包含部分,部分不可以脱离整体单独存在。(图书与目录)【实心菱形】
  • 关联关系-关联类:基于关联关系,既是关联也是类(比如一个方法不知道放到那个类的时候可以使用)【面向对象的编程不支持,可以转化】
  • 依赖关系:被依赖对象改变的时候会影响到依赖对象
    区分依赖和关联:某个类以成员变量的形式出现在另一个类中,这就是关联;而若是以一个局部变量的形式出现,则是依赖关系。(他的耦合度比关联关系低,相当于短暂使用关联)是一个临时的使用关系,不是静态关系,是非结构化的【比如借阅列表和图书的关系】或者用引用的概念来加以区分:属性引用-关联关系;参数引用-依赖关系;局部声明引用-依赖关系;全局引用(B对象是一个全局对象)-依赖关系。
  • 泛化关系:继承是耦合程度最高的,对绝大多数语言来说,继承是一种静态关系(注意LSP原则、从抽象类继承)
    注:只要有可能,不要从具体类继承。行为集中的方向是向上;数据集中的方向是向下
  • 实现关系:将一个类和一个接口连接起来,类是对接口的实现。
  • 类间关系的多重性:1-一个;-0或多个;1..一个或多个;0..1零或一个

顺序图

描述了一组对象的交互方式,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。
组成元素:参与者、对象、生命线、控制焦点、消息
用例图是系统外部对象(参与者)与系统这两大对象之间的互动,而类图是对系统中涉及到得所有对象,进行抽象描述。顺序图是参与者和系统进行交互、系统内部对象之间具体互动的实现。所以,顺序图关联了类图与用例图,可以通过用例图和类图进行整合。
【顺序:参与者-边界类-控制类-实体类,控制类只有一个,边界类和实体类可以有多个。】

  • 边界类:位于系统与外界的交界处,窗体、报表、以及表示通讯协议的类、直接与外部设备交互的类、直接与外部系统交互的类等都是边界类。
  • 控制类:控制其他类工作的类。每个用例通常有一个控制类,控制用例中的事件顺序,控制类也可以在多个用例间共用。
  • 实体类:保存要放进持久存储体的信息,就是数据库、文件等可以永久存储数据的介质。通常每个实体类在数据库中有相应的表,实体类中的属性对应数据库表中的字段。

EA操作

  • 用例图
    新建一个.eap文件:打开EA-文件新建项目-不选模板-Module右键添加-新建增图-用例图
    绘制用例图:右键新建的图-添加图-选择UML Behavioral-Use Case
  • 类图
    -模板-core modeling-class
    -新建图-structural-class
    -新建类-右键功能属性
    -关联-右键多重值
  • 顺序图
    -新建图-behavioral-sequence
    -关联-右键特性-设置同步异步等等
  • 图导出
    选中需要导出的Model-右键仅仅图报告-BMP格式-运行

操作举例

题目:
游客可以通过输入关键词①检索美食、②店铺。③注册后,游客获得平台账号
登录后,游客成为正式用户
正式用户除①检索外,还可以对美食②发布评价、点赞其他用户评价以及举报违规评价正式用户还可以③收藏店铺
用户如果想要④申请店铺主页,可以在填写店铺基本信息后提交申请
系统管理员负责①处理主页申请以及②举报信息。

复习顺序图

复习用例图

复习类图

附加:面向对象设计7大原则

  • 单一职责原则:一个类只应该做和一个职责相关的事情,不要把过多的业务放在一个类中完成。
  • 迪米特法则:软件实体之间应该做到最少的交互。不要和陌生人说话。调用方只关心他需要使用的方法。
  • 接口隔离原则:使用专门的接口,比用统一的接口要好。便于分工,在实现接口时,不应该看到自己不用关心的方法。
  • 开闭原则:软件实体应该对扩展开放,对修改关闭。开闭原则是设计原则的核心原则,其他的设计原则都是开闭原则表现和补充。实现开闭原则的方法就是抽象。
  • 合成复用原则:多使用聚合/组合达到代码的重用,少使用继承复用。
  • 依赖倒置原则:面向抽象编程,不要面向具体编程。
  • 里氏替换原则:子类可以扩展父类的功能,但不能改变父类原有的功能。

EA类图之间的关系,用例图、类图、顺序图操作相关推荐

  1. [UML] 类图之间的关系 | 1.关联关系

    [UML] 类图之间的关系 | 1.关联关系 1.关联关系 关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系 在UML类图中, ...

  2. PHP 中的类, 对象之间的关系

    最近,看了一篇介绍关于PHP中类与对象关系的文章,感觉对类和对象的理解又加深了一层,这里总结一下: (1):创建一个新的类 class Test{public $class_name = " ...

  3. 3.UML中的类图及类图之间的关系

    统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...

  4. 4、UML类图及类图之间的关系

    在 UML 2.0 的 13 种图中,类图(Class Diagrams)是使用频率最高的 UML 图之一.类图描述系统中的类,以及各个类之间的关系的静态视图,能够让我们在正确编写代码之前对系统有一个 ...

  5. UML学习笔记(4)——类图之间的关系

    为什么80%的码农都做不了架构师?>>>    在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Associa ...

  6. Uml 理解Rational Rose软件中四种视图和Uml 9类图之间的关系

    对于一个稍有规模的软件来说,列出系统内类之间的关系,对象之间的时序协作,有利于系统的梳理和扩展,使系统逻辑更有条理.下面这片文章对于四种视图的使用有提纲挈领而又不失详细的说明,可以一看. http:/ ...

  7. 软件毕业设计文档流程与UML图之间的关系

    每个模型都是用一种或者多种UML图来描述的,映射关系如下: 1.用例模型:使用用例图.顺序图.通信图.活动图和状态图来描述. 2.分析模型:使用类图和对象图(包括子系统和包).顺序图(时序图).通信图 ...

  8. 静态联编,动态联编,类指针之间的关系,虚函数与多态性,纯虚函数,虚析构函数

    1.静态联编,是程序的匹配,连接在编译阶段实现,也称为早期匹配.重载函数使用静态联编. 2.动态联编是指程序联编推迟到运行时进行,所以又称为晚期联编.switch语句和if语句是动态联编的例子. #i ...

  9. python中类的属性一般来说_python中实例属性和类属性之间的关系

    匿名用户 1级 2018-06-25 回答 一般来说,在Python中,类实例属性的访问规则算是比较直观的. 但是,仍然存在一些不是很直观的地方,特别是对C++和Java程序员来说,更是如此. 在这里 ...

最新文章

  1. tableau实战系列(十八)-通过可视化实现购物篮关联分析( Market Basket Analysis),关联物品之间的关联关系
  2. vue-admin项目启动踩过的坑
  3. ubuntu docker慢_基于docker搭建MulVAL攻击图
  4. args和kwargs以及argv用法
  5. vue mint-ui 弹出框
  6. 知乎: 如何评价阿里开源的企业级 Node.js 框架 egg? #18
  7. ASP.NET会话(Session)保存模式
  8. 数据库设计三范式(3NF)
  9. FusionCharts 分类以及各个属性参数列表
  10. python 线程-threding示例使用
  11. UML基础(八)--构件图
  12. lj245a引脚功能图_74HC245引脚图应用电路与中文资料
  13. 神奇的分形艺术(一):无限长的曲线可能围住一块有限的面积
  14. 互联网大厂面试考点————JVM
  15. 基于MATLAB的指纹识别系统设计
  16. 深度解密阿里达摩院:如何让科技与商业共舞
  17. 学习笔记——共阳数码管的静态显示
  18. 令人困惑的fitsSystemWindows
  19. 组合游戏 - SG函数和SG定理
  20. 计算机网络 网际控制报文协议 ICMP

热门文章

  1. PM、PMP、PMO分别都是什么 以及三者的关系
  2. 如何自学通过PMP考试
  3. 分类模型(将回归模型的输出离散化)
  4. 软件测试面试简历测试技能
  5. 草草读罢《苏菲的世界》
  6. 分享几个常用的可以从外部攻击视角发现甲方公司安全问题的开源工具
  7. 计算机学硕需要发表论文才能毕业吗,计算机相关专业的研究生,马上快要毕业了,还写不出毕业论文......
  8. ipad 查看电池寿命
  9. OSPFv2-Sham Link模拟实验(华为 DataCome)
  10. 7.MPLS VP恩 后门链路shamlink