产品经理必学UML:类图

本篇文章主要介绍了UML静态视图中的类图,包括类图的概念、用途及相关元素,供大家一起参考和学习。

产品经理必学UML:类图

UML(Unified Modeling Language)又称统一建模语言或标准建模语言,可以看做用于系统设计阶段给开发做参考的一种方式,其中很多图需要用到面向对象程序的思维。

产品经理必学UML:类图

上图为产品经理经常用到的UML图,包括静态视图(类图)和动态视图(用例图、状态图、顺序图、活动图),其中静态视图主要用来分析业务概念,描述静态场景;动态视图描述业务行为,分析动态场景。

本文主要介绍类图。

一、概念

类图(Class Diagrame)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。

类图包含7个元素:类、接口、协作、依赖关系、泛化关系、实现关系以及关联关系。

产品经理必学UML:类图

二、用途

  • 对系统的词汇建模(建立抽象系统词汇,如班级、学生);
  • 对简单协作建模(将系统词汇中是事物协同工作的方式可视化和详述,如班级和学生的关系表示);
  • 对逻辑数据库模式建模。
  • 三、类图元素

    在类图中,类用矩形来表示,分为3个部分:名称部分(Name)、属性部分(Attribute)和操作部分(Operation,也可称作方法)。

    1. 类名称(ClassName)

    类的名称是一个文本串,分为简单名称和路径名称。简单名(single name)即单独的名称不含冒号;路径名(path name)即用类所在的包的名称作为前缀。

    简单名、路径名

    2. 属性(Attribute)

    描述类在软件系统中代表的事物所具备的特性。UML中类属性的语法: [可见性] 属性名 [:类型] [=初始值] [{属性字符串}], 如【-姓名: string】,其中中的部分是可选的。

    (1) 可见性

    包括共有(Public)、私有(Private)和受保护(Protected)3种。

    共有类型可以被外部查看和使用,用“+”表示;私有类型即不可以从其他类中访问该属性,用“-”表示;

    受保护类型常与泛化和特化一起使用,用“#”表示。如果没有符号,表示没有定义该属性的可见性

    (2) 属性名

    由描述所属类的特性的名词或名词短语组成。按约定,单字属性名小写,多个单词的话需要合并,且除第一个单词之外的其余单词首字母大写,比如className。当然,若为中文就不必如此。

    (3) 类型

    典型的属性类型有:整数(int)、布尔型、实型和枚举类型。当一个类的属性被完整定义后,任何一个对象的状态都由这些属性的特定值所决定。

    (4) 初始值

    保证系统的完整性;为用户提供易用性。

    (5) 属性字符串

    关于属性的其他信息。

    3. 操作(Operation)

    类的操作是对类的对象所能做的事务的抽象,相当于服务的实现。UML中类操作的语法:[可见性] 操作名 [ (参数表)] [: 返回类型] [{属性字符串}],如【+查询( ): 歌曲】,其中中的部分是可选的。

    (1) 可见性

    包括共有(Public)、私有(Private)、受保护(Proteted)和包内公有(Package)4种。

    其中公有类型即只要调用对象能访问操作所在的包,就可调用该操作,用“+”表示;私有类型即只有属于同一个类的对象才可以调用,用“-”表示;

    受保护类型即只有子类的对象才可以调动父类,用“#”表示;

    包内公有类型即只有在同一个包里的对象才可以调用,用“~”表示。

    (2) 操作名

    描述所属类的行为的动词或动词短语。约定同属性名。

    (3) 参数表

    指一些按顺序排列的属性定义了操作的输入。定义方式采取“名称:类型”,多个参数用逗号隔开。

    (4) 返回类型

    绝大部分编程语言只支持一个返回值,即返回类型至多一个。

    4. 接口(Interface)

    接口是指类或组件所提供的、可以完成特定功能的一组操作的集合。接口描述了类或组件的对外的、可见的动作,通常一个类实现一个或多个接口。

    定义看起来比较枯燥,通俗点说接口就像螺丝和螺帽的关系,是为类制定了一种规范,是类与类之间的一种约束和协定。

    对于一些小程序,一般不需要接口,因为功能的改动对整体的影响不大;但对于大的程序,一旦用户需求对功能进行变动,而功能之间的耦合度高的话就会对整个程序造成影响,而如果使用接口的话,就能在使用之前就想好它要实现的全部功能,即功能的封装。之后需求变化只需要重新写实现类,同样其他人只需要调用接口,不需要知道类的消息。

    5. 关系(Ralationship)

    (1) 依赖(Dependency)关系

    表示某一类元以某种形式依赖于其他类元,它表现了这样一种场景,如下图,对于一个元素(提供者)的某些更改会影响或提供消息给其他元素(客户),即客户以某种形式依赖于提供者。

    产品经理必学UML:类图

    (2) 泛化(Generalization)关系

    表示一种存在于一般元素和特殊元素之间的分级关系,描述了“is a kind of”(是……的一种)的关系,如汽车是交通工具的一种。在类中一般元素称为超类或父类,特殊元素称为子类。

    (3) 关联(Association)关系

    表示一组具有共同结构特征、行为特征、关系和语义的链接,是一种结构关系,指明一个事物的对象与另一个事物的对象间的关系。如学生和大学的关系,学生在大学里学习,大学又包括了很多学生,所以可以在学生和大学之间建立关联关系。

    (4) 聚合(Aggregation)关系

    是一种特殊形式的关联关系。表示整体与部分关系的关联,简单来说,就是关联关系中的一组元素组成了一个更大、更复杂的单元。描述了“has a”的关系。如大学和学院,大学是由很多个学院组成的,因此两者之间是聚合关系。

    产品经理必学UML:类图

    (5) 实现(Realization)关系

    表示规格说明和其实现之间的关系,将一种模型元素和另一种模型元素连接起来,比如类和接口。 如打字员和键盘,键盘保证自己的部分行为可以实现打字员的行为。

    产品经理必学UML:类图

    四、连接关系图形小结

    由于连接关系之间使用的图形较为相似,基本由箭头和直线组成,容易混淆,在此进行总结,以便查看。

    五、小练习——简易听歌系统类图

    产品经理必学UML:类图

  • 用户与歌手:关联关系,1个用户可能关注0到n个歌手;
  • 用户与歌曲:关联关系,1个用户可能播放或者收藏0到n首歌曲;
  • 歌曲与歌手:关联关系,1首歌曲对应至少1位歌手;
  • 歌曲与歌曲列表:聚合关系,1到n首歌组成了1个歌曲列表;
  • 用户实现接口注册和登录。
  • 第一次写,若有错误的地方,欢迎批评指正。后续会更新用例图、活动图等,可关注等待哦。

    本文由 @AugTalk 原创发布于人人都是产品经理,未经许可,禁止转载。

    题图来自Unsplash,基于CC0协议。

    来源:人人都是产品经理

    原创文章,作者:jinwe2020,如若转载,请注明出处:https://www.biaojianku.com/archives/56389.html

    (0)
    jinwe2020jinwe2020
    上一篇 2019年 7月 12日
    下一篇 2019年 7月 12日

    相关推荐

    发表回复

    登录后才能评论