UML作业第二次:类图中类的表示

一、PlantUML类图 语法学习小结

1.类之间的关系通过下面的符号定义 :

Type Symbol Drawing
Extension <|--
Composition *--
Aggregation o--

 

 

 
 
@startuml
Class01 <|-- Class02
Class03 *-- Class04
Class05 o-- Class06
Class07 .. Class08
Class09 -- Class10
@enduml
@startuml
Class11 <|.. Class12
Class13 --> Class14
Class15 ..> Class16
Class17 ..|> Class18
Class19 <--* Class20
@enduml
@startuml
Class21 #-- Class22
Class23 x-- Class24
Class25 }-- Class26
Class27 +-- Class28
Class29 ^-- Class30
@enduml
 

2.关系上的标识 :

在关系之间使用标签来说明时, 使用 :后接 标签文字。对元素的说明,你可以在每一边使用 "" 来说明.

@startuml
Class01 "1" *-- "many" Class02 : contains
Class03 o-- Class04 : aggregation
Class05 --> "1" Class06
@enduml

在标签的开始或结束位置添加< 或 >以表明是哪个对象作用到哪个对象上。

@startuml
class Car

Driver - Car : drives >
Car *- Wheel : have 4 >
Car -- Person : < owns

@enduml

3.添加方法 :

为了声明域或者方法,你可以使用 后接域名或方法名。

系统检查是否有括号来判断是方法还是域。

@startuml
Object <|-- ArrayList

Object : equals()
ArrayList : Object[] elementData
ArrayList : size()

@enduml

也可以使用{} 把域或者方法括起来

@startuml
class Dummy {
  String data
  void methods()
}

class Flight {
   flightNumber : Integer
   departureTime : Date
}
@enduml

You can use {field} and {method} modifiers to override default behaviour of the parser about fields and methods.

@startuml
class Dummy {
  {field} A field (despite parentheses)
  {method} Some method
}

@enduml

4.抽象与静态 :

通过修饰符{static}或者{abstract},可以定义静态或者抽象的方法或者属性。

这些修饰符可以写在行的开始或者结束。也可以使用{classifier}这个修饰符来代替{static}.

@startuml
class Dummy {
  {static} String id
  {abstract} void methods()
}
@enduml

5.备注和模板 :

模板通过类关键字("<<"和">>")来定义

你可以使用note left of , note right of , note top of , note bottom of这些关键字来添加备注。

你还可以在类的声明末尾使用note leftnote right,note topnote bottom来添加备注。

此外,单独用note这个关键字也是可以的,使用 .. 符号可以作出一条连接它与其它对象的虚线。

更多注释可以在注释中使用部分html标签。

@startuml
class Object << general >>
Object <|--- ArrayList

note top of Object : In java, every class\nextends this one.

note "This is a floating note" as N1
note "This note is connected\nto several objects." as N2
Object .. N2
N2 .. ArrayList

class Foo
note left: On last defined class

@enduml

6.抽象类和接口 :

用关键字abstractabstract class来定义抽象类。抽象类用斜体显示。 也可以使用interfaceannotation 和 enum关键字。

@startuml

abstract class AbstractList
abstract AbstractCollection
interface List
interface Collection

List <|-- AbstractList
Collection <|-- AbstractCollection

Collection <|- List
AbstractCollection <|- AbstractList
AbstractList <|-- ArrayList

class ArrayList {
  Object[] elementData
  size()
}

enum TimeUnit {
  DAYS
  HOURS
  MINUTES
}

annotation SuppressWarnings

@enduml

7.隐藏类 :

你也可以使用 show/hide 命令来隐藏类

如果你定义了一个大的!included 文件,且想在文件包含之后隐藏部分类,该功能会很有帮助。

@startuml
class Foo1
class Foo2
Foo2 *-- Foo1
hide Foo2
@enduml

8.泛型 :

你可以用 < 和 > 来定义类的泛型。

@startuml
class Foo<? extends Element> {
  int size()
}
Foo *- Element
@enduml

It is possible to disable this drawing using skinparam genericDisplay old command.

9.指定标记 :

通常标记字符 (C, I, E or A) 用于标记 类, 接口, 枚举和 抽象类.

但是当你想定义原型时,可以增加对应的单个字符及颜色,来定义自己的标记,就像下面一样:

@startuml
class System << (S,#FF7700) Singleton >>
class Date << (D,orchid) >>
@enduml

、以“学生”类为例,分析属性和方法

属性:    学生本人信息(班级,学号,姓名,性别,职务,联系方式)

    学生课程信息(课程号,课程名,教室,教师)

    学生成绩信息(学号,姓名,成绩)

三、plant uml 脚本程序

@startuml
class 学生个人信息 {
-班级:string
-学号:varchar
  -姓名:string
  -性别:string
  -职务:string
-联系方式:varchar
  __
  +登录
  +修改个人信息
  +退出登录
}
class 学生课程信息{
-课程号:varchar
  -课程名:string
  -教室:string
  -教师:string
  __
  +登陆
  +选课
  +退出
  +查看课程
  +课程成绩
}
class 学生成绩 {
  -学号:varchar
  -姓名:string
  -成绩:varchar
  __
  +登陆
  +查看成绩
  +退出
}
学生课程信息 --> 学生个人信息
学生成绩-left-> 学生个人信息
@enduml 
四、类图示例

posted @ 2019-05-07 13:16  周文力  阅读(381)  评论(0编辑  收藏  举报