Contents

UML类图

定义

UML即统一建模语言(Unified Modeling Language)

  • 这种统一建模语言是由图表组成的。
  • 常用的有:序列图、类图、状态图、对象图、组件图和部署图等

类之间的关系

泛化(Generalization)

  • 在Java中也叫作继承关系
  • 空心三角箭头
  • Studen类,警察Policemen类,均继承自Person类 ..%2F..%2Fpost%2FGeneralization.png

实现(Realization)

  • Java中类与接口的实现关系
  • 空心三角箭头加虚线
  • 由于Student和Policeman都是职业,学生的职业就是学习,而警察的职业为保护人民。所有定义一个职业接口。 ..%2F..%2Fpost%2FRealization.png

依赖(Dependence)

  • 依赖关系是一种很弱的关系,一般是指一个类使用另一个类
  • 带箭头的虚线
  • 这里学生捡到钱交给警察叔叔,学生和警察叔叔就是一种依赖关系。 因为学生捡到钱给警察是一种偶然的事情,交给警察后他们之间就没有关系了。 ..%2F..%2Fpost%2FDependence.png

关联(Association)

  • 比较强的关系,他们的关系是比较持久的,稳定的(一个类作为另一个类的属性)

  • 分单向关联和双向关联

  • 单向关联:带箭头的实线 ..%2F..%2Fpost%2FAssociation.png

    ..%2F..%2Fpost%2FAssociation2.png

聚合(Aggregation)

  • 特殊的关联关系(强调整体和部分的关系,部分可以脱离整体而存在)
  • 带空心菱形的实线(其中菱形指向整体)
  • 警察与制服的关系,制服也是警察的一部分,制服可以脱离警察而存在 ../../post/Aggregation.png

组合(Composition)

  • 特殊的关联关系(强调整体和部分的关系,部分无法脱离整体存在)
  • 带空心菱形的实线(其中菱形指向整体)
  • 学生用手捡钱,其中手就是学生的一部分,但是手不能脱离学生而单独存在 ..%2F..%2Fpost%2FComposition.png

按关系强度:组合>聚合>关联>依赖。

..%2F..%2Fpost%2FUML%E7%B1%BB%E5%9B%BE.png

  • 图是用PlantUML画的
@startuml
interface ICareer {
    +career()
}

class Persion {
    -name:String
    -age:Integer = 1
    +setName(String name):void
    +getName():String
    +setAge(String age):void
    +getAge():String
}

class Student {
    +policeman:Policeman
    +teacher:Teacher
    +home:Home
    +hand:Hand
    +sendCoin()
}

class Hand {
}

class Home {
}

class Teacher {
    +student:Student
}

class Policeman {
    +uniform:Uniform
    +receiveCoin()
}

class Uniform {
}

ICareer <|.down. Student:实现
ICareer <|.down. Policeman:实现

Persion <|-down- Student:继承
Persion <|-down- Policeman:继承

Student .> Policeman:依赖
Student -left> Home:单向关联
Student -left Teacher:双向关联
Student *-down- Hand:组合

Uniform -up-o Policeman:聚合
@enduml