您的位置:首页 > 游戏 > 游戏 > 网站免费建站性盈盈影院_app开发公司哪个靠谱_六种常见的网站类型_靠谱的代运营公司有哪些

网站免费建站性盈盈影院_app开发公司哪个靠谱_六种常见的网站类型_靠谱的代运营公司有哪些

2025/5/23 7:46:05 来源:https://blog.csdn.net/weixin_55850954/article/details/144308165  浏览:    关键词:网站免费建站性盈盈影院_app开发公司哪个靠谱_六种常见的网站类型_靠谱的代运营公司有哪些
网站免费建站性盈盈影院_app开发公司哪个靠谱_六种常见的网站类型_靠谱的代运营公司有哪些

背景

类图是UML模型中的静态视图,其主要作用包括:

  • 描述系统的结构化设计,显示出类、接口以及它们之间的静态结构和关系。
  • 简化对系统的理解,是系统分析与设计阶段的重要产物,也是系统编码和测试的重要模型依据。

在UML中,一个类通常由名称、属性和操作等构成,除此之外,类的构成还包含类的职责、约束和注释等信息。

使用

创建plantUML文件

在PlantUML中,要创建类图,首先我们要创建一个plantUML文件,选择class类型

创建完成后,会自动生成一个模板文件供我们参考。

类的定义

在UML的类图中,一般我们需要表示出一个类各个字段的可见性,UML中可见性和符号的对应关系如下:

可见性符号
public+
package private~
protected#
private-

在Java中,类用class关键字、接口使用interface关键字,而抽象类使用abstract class,枚举类使用enum。在PlantUML中,我们同样可用用class、interface、abstract class和enum来分别表示出类、接口、抽象类和枚举。

如下图所示,我们定义了Person类,其中Person类有id、name、birthday属性,并且它们的可见性为private,此外,含有getId、getName和getBirthday这些public方法。然后还定义了Car接口和List抽象类,最后定义了一个Size枚举类,这个枚举类包含SMALL、MEDIUM、LARGE和EXTRA_LARGE这些实例。

@startumlclass Person {- id- name- birthday+ getId()+ getName()+ getBirthday()
}interface Car abstract class Listenum Size{SMALLMEIDUMLARGEEXTRA_LARGE
}@enduml

在这里插入图片描述

类型关系

在UML中,类与类之间,包含以下6种关系:

关系plantUML表示描述
泛化(Generalization)>
实现(Realization)>
关联(Association)–>关联关系表示“拥有”,相比依赖关系的临时性和单向性,关联关系具有长期性、平等性(可双向),所以关联表示的关系比依赖更强。
聚合(Aggregation)–o聚合关系相对组合弱一些,在聚合关系中,整体与部分是可分离的,比如学校和学生,一个学校有多个学生,当学生毕业后,学校仍然存在,不受影响,而学生实体也不会因为离开学校而被销毁。
组合(Composition)–*在组合关系中,整体与部分是不可分离的,整体与部分的生命周期保持一致,比如人体和四肢,就是一种典型的组合关系。
依赖(Dependency)…>依赖表示使用关系,在java中,被依赖的类,一般以方法参数、局部变量和静态方法调用等形式出现

以下图为例,Student继承于Person类,然后Student的study方法中,会以Book作为参数,因此,Student和Book之间是依赖关系。然后List接口有两个实现——AbstractList和AbstractLinkedList,因此,它们之间是实现关系,而ArrayList继承自AbstractList,因此它们之间是泛化关系。最后,一个学校有多个学生,学校和学生之间是聚合关系。

@startumlclass Person {- id- name- birthday+ getId()+ getName()+ getBirthday()
}class Student {- grade+ getGrade()+ study(Book book)
}class Book {
}Person <|-- StudentStudent ..> Bookinterface List
abstract class AbstractList
abstract class AbstractLinkedListAbstractList ..|> List
AbstractLinkedList ..|> Listclass ArrayList
class LinkedListArrayList --|> AbstractList
LinkedList --|> AbstractLinkedListclass School {- List<Student> student
}Student --o School@enduml

在这里插入图片描述

箭头方向

在上面的类图中,我们发现这个箭头方向有时候指向上面,有时候指向下面,当我们需要对箭头方向进行调整时,

可以使用up、down、left和right来表示。以下代码为例,表示School的上面是Person,School的右边是School

Student -up-|> Person
Student -right-o School
@startumlclass Person {- id- name- birthday+ getId()+ getName()+ getBirthday()
}class Student {- grade+ getGrade()+ study(Book book)
}class Book {
}Student -up-|> Person
Student .left.> Bookinterface List
abstract class AbstractList
abstract class AbstractLinkedListAbstractList .up.|> List
AbstractLinkedList .up.|> Listclass ArrayList
class LinkedListArrayList -up-|> AbstractList
LinkedList -up-|> AbstractLinkedListclass School {- List<Student> student
}Student -right-o School@enduml

在这里插入图片描述

颜色

在PlantUML中,我们可以对相关的元素去设置对应的颜色,其语法也很简单,就是在类的声明后面,加上颜色的定义,比如说我们想设置Person为红色,Student为绿色,那么定义如下:

class Person #red {- id- name- birthday+ getId()+ getName()+ getBirthday()
}class Student #green {- grade+ getGrade()+ study(Book book)
}

对于类与类之间的连线,同样可以设置对应的颜色,比如我们希望类与类之间颜色为蓝色,那么可以在右边加上对应的颜色定义,示例如下:

Student -up-|> Person #blue
Student .left.> Book #blue
@startumlclass Person #red {- id- name- birthday+ getId()+ getName()+ getBirthday()
}class Student #green {- grade+ getGrade()+ study(Book book)
}class Book #6ACCEF {
}Student -up-|> Person #blue
Student .left.> Book #blueinterface List #6ACCEF
abstract class AbstractList #6ACCEF
abstract class AbstractLinkedList #6ACCEFAbstractList .up.|> List #blue
AbstractLinkedList .up.|> List #blueclass ArrayList #6ACCEF
class LinkedList #6ACCEFArrayList -up-|> AbstractList #blue
LinkedList -up-|> AbstractLinkedList #blueclass School #6ACCEF{- List<Student> student
}Student -right-o School #blue@enduml

在这里插入图片描述

包图

在我们的类图中,有时候这些类散落在不同的包下,因此,我们需要定义包图,来反映这些类归属于哪些包和这些包之间的依赖关系,包的声明很简单,使用package关键字接口,示例如下:

package com.yang {
}

声明包之后,我们将类的定义,写在对应的包代码块下,以表示这个类归属于当前包。

@startumlpackage com.yang.model #orange{class Person #red {- id- name- birthday+ getId()+ getName()+ getBirthday()}class Student #green {- grade+ getGrade()+ study(Book book)}
}package com.yang.valueobject #grey{class Book #6ACCEF {}class School #6ACCEF{- List<Student> student}
}
package java.util {interface List #6ACCEFabstract class AbstractList #6ACCEFabstract class AbstractLinkedList #6ACCEFclass ArrayList #6ACCEFclass LinkedList #6ACCEF
}Student -up-|> Person #blue
Student .left.> Book #blueAbstractList .up.|> List #blue
AbstractLinkedList .up.|> List #blueArrayList -up-|> AbstractList #blue
LinkedList -up-|> AbstractLinkedList #blueStudent -right-o School #blue@enduml

在这里插入图片描述

参考文档

https://blog.csdn.net/zhangwei_david/article/details/125477021

https://blog.csdn.net/vitaviva/article/details/120639074

https://www.cnblogs.com/lanqiu5ge/p/9502419.html

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com