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

一、类图

类图,是UML(统一建模语言)中用于描述"类"以及"类与类"之间的示意图。它形象的描述出了系统的结构,帮助人们理解系统。 类图是在"所有的UML图"中,实用频率非常之高;掌握它对于我们软件设计,以及交流都很有帮助。对于类图而言,它的基本单位是类。类主要由三部分组成:类名、属性、操作(函数)。

类名:类的名称

属性UML类图中,属性的基本格式: 可见性 名称: 类型 [=缺省值]

操作:UML类图中,属性的基本格式: 可见性 名称(参数类表) [:返回类型]

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

@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

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

添加方法

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

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

@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

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

@enduml

定义可访问性:一旦你定义了域或者方法,你可以定义 相应条目的可访问性质

抽象与静态:

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

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

高级类体:

PlantUML自动方法属性重新分组,你可以自己定义分隔符来重排方法属性,下面的分隔符都是可用的:--..==__.

备注和模板:

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

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

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

@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

链接的注释:

在定义链接之后,你可以用 note on link 给链接添加注释

如果想要改变注释相对于标签的位置,你也可以用 note left on link, note right on link, note bottom on link。(对应位置分别在label的左边,右边,下边)

抽象类和接口:

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

使用非字母字符:

如果你想在类(或者枚举)的显示中使用非字母符号,你可以:

  • 在类的定义中使用 as 关键字
  • 在类名旁边加上 ""

 隐藏类:

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

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

泛型:

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

包:

可以通过关键词 package 声明包,同时可选的来声明对应的背景色(通过使用html色彩代码名称

注意:包可以被定义为嵌套。

二、“学生” 类的属性方法
属性有: 学生基本信息(姓名,学号,年龄,班级,职务)
学生课程信息(课程名,上课教室,老师姓名)
生成绩信息(学号,姓名,成绩)
三、plant uml 脚本程序
@startuml
class 学生个人信息 {
  -姓名:string
  -学号:varchar
  -年龄:varchar
  -班级:string
  -职务:string
  __
  +登录
  +修改个人信息
  +退出登录
}
class 学生课程信息{
  -课程名:string
  -教室:string
  -老师:string
  __
  +登陆
  +选课
  +退出
  +查看课程
  +课程成绩
}
class 学生成绩 {
  -学号:varchar
  -姓名:string
  -成绩:varchar
  __
  +登陆
  +查看成绩
  +退出
}
学生课程信息 --> 学生个人信息
生成绩-left-> 学生个人信息
@enduml

 

 


 


 

 


 


 

相关文章

UML有助于在软件开发生命周期的所有阶段理解和可视化系统。以...
UML各种图总结-精华 https://www.cnblogs.com/jiangds/p/65...
MicrosoftOfficeVisio“UML模型图”模板为创建复杂软件系统的...
用例图1.用例图是UML用于描述软件功能的图形。用例图包括用例...
一、用例图:用例图(usecasediagram)是UML用于描述软件功能...
1.A类B类C类这三个类是什么关系?B类依赖A类和C类因为最主要...