快生活 - 生活常识大全

产品经理必学类图


  本篇文章主要介绍了UML静态视图中的类图,包括类图的概念、用途及相关元素,供大家一起参考和学习。
  UML(Unified Modeling Language)又称统一建模语言或标准建模语言,可以看做用于系统设计阶段给开发做参考的一种方式,其中很多图需要用到面向对象程序的思维。
  上图为产品经理经常用到的UML图,包括静态视图(类图)和动态视图(用例图、状态图、顺序图、活动图),其中静态视图主要用来分析业务概念,描述静态场景;动态视图描述业务行为,分析动态场景。
  本文主要介绍类图。
  一、概念
  类图(Class Diagrame)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。
  类图包含7个元素:类、接口、协作、依赖关系、泛化关系、实现关系以及关联关系。
  二、用途
  对系统的词汇建模(建立抽象系统词汇,如班级、学生);
  对简单协作建模(将系统词汇中是事物协同工作的方式可视化和详述,如班级和学生的关系表示);
  对逻辑数据库模式建模。
  三、类图元素
  在类图中,类用矩形来表示,分为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)关系
  表示某一类元以某种形式依赖于其他类元,它表现了这样一种场景,如下图,对于一个元素(提供者)的某些更改会影响或提供消息给其他元素(客户),即客户以某种形式依赖于提供者。
  (2) 泛化(Generalization)关系
  表示一种存在于一般元素和特殊元素之间的分级关系,描述了"is a kind of"(是……的一种)的关系,如汽车是交通工具的一种。在类中一般元素称为超类或父类,特殊元素称为子类。
  (3) 关联(Association)关系
  表示一组具有共同结构特征、行为特征、关系和语义的链接,是一种结构关系,指明一个事物的对象与另一个事物的对象间的关系。如学生和大学的关系,学生在大学里学习,大学又包括了很多学生,所以可以在学生和大学之间建立关联关系。
  (4) 聚合(Aggregation)关系
  是一种特殊形式的关联关系。表示整体与部分关系的关联,简单来说,就是关联关系中的一组元素组成了一个更大、更复杂的单元。描述了"has a"的关系。如大学和学院,大学是由很多个学院组成的,因此两者之间是聚合关系。
  (5) 实现(Realization)关系
  表示规格说明和其实现之间的关系,将一种模型元素和另一种模型元素连接起来,比如类和接口。如打字员和键盘,键盘保证自己的部分行为可以实现打字员的行为。
  四、连接关系图形小结
  由于连接关系之间使用的图形较为相似,基本由箭头和直线组成,容易混淆,在此进行总结,以便查看。
  五、小练习——简易听歌系统类图
  用户与歌手:关联关系,1个用户可能关注0到n个歌手;
  用户与歌曲:关联关系,1个用户可能播放或者收藏0到n首歌曲;
  歌曲与歌手:关联关系,1首歌曲对应至少1位歌手;
  歌曲与歌曲列表:聚合关系,1到n首歌组成了1个歌曲列表;
  用户实现接口注册和登录。
  第一次写,若有错误的地方,欢迎批评指正。后续会更新用例图、活动图等,可关注等待哦。
网站目录投稿:怀芹