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

一、学习PlantUML类图

在类图中一共包含了以下几种模型元素,分别是:类(Class)、接口(Interface)以及类之间的关系。

  • 类(Class)

  在面向对象编程中,类是对现实世界中一组具有相同特征的物体的抽象。

  •  接口(Interface)

  接口是一种特殊的类,具有类的结构但不可被实例化,只可以被实现(继承)。在UML中,接口使用一个带有名称的小圆圈来进行表示。

  • 类图中关系(relation)

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

  •  泛化(Generalization)

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

          例如:老虎是动物的一种,即有老虎的特性也有动物的共性。

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

  •  实现(Realization)

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

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

  •  关联(Association)

          【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生。

             双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

          【代码体现】:成员

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

二、简单的类图之间的关系

关系上的标识

在关系之间使用标签来说明时, 使用 :后接 标签文字。

对元素的说明,你可以在每一边使用 "" 来说明.

@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

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

 

 

定义可访问性

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

Character Icon for field Icon for method Visibility
- private
# protected
~ package private
+ public
@startuml

class Dummy {
 -field1
 #field2
 ~method1()
 +method2()
}

@enduml

你可以采用以下命令停用这些特性 skinparam classAttributeIconSize 0

@startuml
skinparam classAttributeIconSize 0
class Dummy {
 -field1
 #field2
 ~method1()
 +method2()
}

@enduml

 

 

抽象与静态

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

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

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

 三、用PlantUML 编写 “学生” 类 绘图脚本

@startuml class

学籍注册{

-注册代码

-学号

-学期代码

-是否注册

 

~注册()

~登录查看()

}

class 学生基本信息

{ -姓名:string

-性别:string

-系别:string

-专业:string

-班级:string

-出生日期:string

-民族:string

-籍贯:string

-政治面貌:string

-学制:int

-入学日期:string

-联系电话:string

-家庭住址:string

 

~登录()

~查看信息()

~修改信息()

~删除信息()

}

class 学生成绩信息{

-姓名

-班级

-学号

-课程名

-学期代码

-课程类型 -

平时成绩

-期末成绩

-总成绩

-教师

-录入日期

-操作人 -

修改日期

-修改人

-修改内容

-补考成绩

-重修成绩

~登录()

~查看成绩()

~核对成绩()

~确认成绩()

~补考成绩()

~重修成绩()

}

class 学生奖励信息{

-奖励代码

-姓名

-学号

-奖励日期

-奖励类型

-奖励原因

-奖励金额

-备注

 

~登录查看()

~确认名单()

~确认类型()

}

 

学籍注册 *-- 学生基本信息

学籍注册 *-- 学生成绩信息

学籍注册 *-- 学生奖励信息

 

@enduml

 

四、我的用例图

  

 

posted @ 2019-04-01 13:05  马家旺mjw  阅读(552)  评论(0编辑  收藏  举报