目录

类图

类的表示法

画类图

接口的表示法

类与类之间关系

泛化(Generalization)关系

依赖(Dependency)

关联(Association)

聚合(Aggregation)

组合关系


 类图

  • 类图是面向对象系统建模中最常用的图。是定义其他图的基础.
  • 类图主要是用来显示系统中的类,接口以及它们之间的关系.
  • 类图包含的主要元素有类,接口和关系。
    • 其中关系有泛化关系,关联关系,依赖关系和实现关系。
    • 在类图中也可以包含注释和约束.

类的表示法

  • 类是类图的主要组件,由3部分组成:类名,属性和方法。
  • 在UML中,类用矩形来表示,顶端部分存放类的名称,中间部分存放类的属性,属性的类型及值,底部部分存放类的方法,方法的参数和返回类型.
  • 在UML可以根据际情况有选择的隐藏属性部分或方法部分或两者都隐藏
  • 在UML中,公有类型有+表示私有类型用-表示 ,保护类型用#表示
  • UML的工具开发商可以使用自已定义的符号表示不同的可见性

画类图

接口的表示法

  • 接口中包含方法,但不包含属性
  • 在UML中接口用一个带有名称的圆圈表示,并且通过一条实线与它的模型元素相连

  • 有时候接口也使用普通类的矩形符号表示
  • 实现关系

类与类之间关系

泛化(Generalization)关系

  • 在UML中,泛化关系用来表示类与类接口与接口之间的继承关系,类对接口的实现关系
  • 泛化关系有时也称为"is a kind of关系
  • 在UML中泛化关系用一条实线空心箭头有子类指向父类
  • 父类 父类实例=new 子类()
  • 案例:Animal类与Tiger类,Dog类的泛化关系

  • 代码表示:
class Animal{}
class Tiger extends Animal{}
public class Test
{    public void test()    {    Animal a=new Tiger();    }
}

依赖(Dependency)

  • 对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。

  • 类A的实现需要引用类B,这就是依赖。这种使用关系是具有偶然性的、临时性的、非常弱的,而B类的变化会影响到A,则A与B存在依赖关系,依赖关系是弱的关联关系。

  • 依赖关系表现在局部变量,方法的参数,以及对静态方法的调用

  • 案例:比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作

  • 类图:Person类与Screwdriver类的依赖关系

  • 代码表现
public class Person{    /** 拧螺丝 */   public void screw(Screwdriver screwdriver){    screwdriver.screw();    }   Void drive(Car &mycar){}
}

关联(Association)

  • 对于两个相对独立的对象,当一个对象的实例另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
  • 关联关系是使用实例变量来实现
  • 案例:比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司
  • 公司和员工的关联关系

  • 代码表现
public class Company{    private Employee employee;    public Employee getEmployee(){    return employee;    }    public void setEmployee(Employee employee){    this.employee=employee;    }    //公司运作    public void run(){    employee.startWorking();    }
}

聚合(Aggregation)

  • 当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系。
  • 聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系
  • 整体与部分之间是可分离的,即没有了整体,局部也可单独存在
  • 与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。
  • 关联与聚合的区别
    • 关联关系所涉及的两个对象是处在同一个层次上的。

      • 比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。
      • 聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。

组合关系

  • 这是一种比聚合更强的关系,又称强聚合整体的生命周期即为组成部分的生命周期
  • 比如公司不存在,部门也没有意义了。
  • 再例如:人和五脏六腑、四肢的关系。组合关系。

UML 类图、类与类之间关系相关推荐

  1. UML类图画法及类之间几种关系

    文章目录如下: 一.类图画法 二.类之间的几种关系:泛化(Generalization).实现(Realization).关联(Association)(又分一般关联.聚合(Aggregation). ...

  2. UML类图简介及类与类之间的关系

    UML(Unified Modeling Language,统一建模语言)建模是面向对象开发设计方法中的第一步,用UML来表达设计模式不仅方便了开发人员的交流,而且更加清晰.准确.UML定义了5类10 ...

  3. UML类图是描述类之间的关系

    UML类图是描述类之间的关系 概念 类(Class):使用三层矩形框表示. 第一层显示类的名称,如果是抽象类,则就用斜体显示. 第二层是字段和属性. 第三层是类的方法. 注意前面的符号,'+'表示pu ...

  4. java uml 类图 加号_UML建模基础 UML类图的组成元素和关系解析

    本文和大家重点讨论一下在UML建模中UML类图的java代码表现,主要包括UML类图元素和关系两大部分内容,相信通过本文的介绍你对UML类图的概念一定会与明确的认识. 在UML建模中UML类图的jav ...

  5. 区分 UML 类图中的几种关系

    区分 UML 类图中的几种关系   2010-12-23 作者:fnw 来源:网络      区分 UML 类图中的几种关系  UML 类图中的 "关联关系(association) &qu ...

  6. 怎样用uml类图生成java类_JAVA:面向对象编程的底层逻辑,深度剖析

    什么是面向对象 在目前的软件开发领域有两种主流的开发方法,分别是结构化开发方法和面向对象开发方法.早期的编程语言如C.Basic.Pascal等都是结构化编程语言,随着软件开发技术的逐渐发展,人们发现 ...

  7. 类与类图,以及类间关系

    文章目录 前言 叙述 类与类图 如何表示 类图间关系 关联关系 1.双向关联 2.单项关联 3.自关联 4.多重关联 5.聚合关系 6.组合关系 依赖关系 泛化关系 接口与实现关系 前言 叙述 类与类 ...

  8. java uml类图举例_UML类图介绍

    UML类图非常简单,可以用下面的图表示一个类: 该图表示一个叫做Person的类,该类有name.age.sex三个private属性,每个属性的类型紧跟在冒号的后面.该类有walk和speak两个方 ...

  9. Java类的继承学生研究生类图_UML part3 类图、对象图

    UML part3 类图.对象图 四种关系 1. 依赖关系 ①定义:依赖描述了两个模型元素之间的关系,如果被依赖的模型元素发生变化就会影响到另一个模型元素 ②举例:动物有生命和水进行繁殖,动物和水,动 ...

  10. UML建模与软件开发设计(六)——类图设计与类之间的关系

    3.2.5.关联关系的分类 然而,通过关联关系来描述类与类时还是比较抽象,有些关系的细节难以通过关联关系表达出来,比如类A与类B的角色定位.数量关系,关联方向等都描述得不够清晰准确(但你不能说仅仅通过 ...

最新文章

  1. 用 Parser Combinator 解析 Cirru 的缩进语法
  2. html引用单文件组件,vue之单文件组件 纯网页方式引入
  3. The 6th Zhejiang Provincial Collegiate Programming Contest-ProblemA:Second-price Auction
  4. 2021.C/C++静态代码分析工具
  5. nginx 性能优化的概述及在CPU资源方面的处理
  6. matlab 运算程序时间计算
  7. rHadoop分布式安装与配置
  8. switch芯片上的QoS,VLAN介绍
  9. 软件生命周期创建B2C电子商务网站
  10. 开放式虚拟仿真实验服务器,润尼尔开放式虚拟仿真实验教学及资源共享平台
  11. 砸金蛋c语言编程,CSS3 简单的砸金蛋样式
  12. Element系列之阻止el-switch冒泡事件
  13. 基于STM32的智能温室控制系统仿真电路设计(温控补光)-基于STM32的智能蓝牙温控风扇控制系统设计-基于STM32的无线蓝牙心电监护仪系统设计【毕设课设分享】
  14. CPU位数、操作系统位数、指令集、寄存器位数、机器字长等
  15. activiti删除流程
  16. MountVolume.NewMounter initialization failed for volume “pvc-61dedc85-ea5a-4ac7-aaf3-e072e2e46e18“
  17. StringTokenizer类的用法
  18. springAop学习笔记(二,springboot进本配置和使用)
  19. 办公套件Office LTSC 2021中文
  20. [C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密

热门文章

  1. 让子盒子水平和垂直居中的五种方法
  2. 操作系统思维导图(一)
  3. 110配线架打法图解_配线架打线的方法以及110配线架的按照流程
  4. R语言基于决策树的银行信贷风险预警模型
  5. 解除360个人图书馆文档禁止复制限制Chrome浏览器插件
  6. JAVA sleep函数如何用_转载:java中Thread.sleep()函数使用
  7. 基于IEC61499 的楼宇自动控制系统
  8. 全球电视出货量或下跌一成,对中国液晶面板企业的打击或较小
  9. MVP Architecture on Android
  10. 光束法空三的计算问题,误差方程的多余观测数,未知数个数、多余观测值的计算