UML:类图(Class)

前言

寒假看设计模式的时候,经常会遇到类图,但是由于《软件工程》这门课学的乱七八糟,于是总是选择略过类图,直接看代码。在写博客记录学习记录的时候也没有画类图,如果把软件当作房子,那么类图就是最后的施工图,没有施工图怎么能搭出“高楼大厦”呢?这学期正好学习了《需求工程与 UML 》也理解了 UML 的重要性,所以先从基础概念和类图开始吧!

面向对象

对象是组成系统的基本单元,是一个含有组织形式信息的实体。面向对象有以下四大要素。

抽象

  1. 将需要的事物进行简化
  2. 将事物的特征进行概括
  3. 将抽象模型组织为层次结构
  4. 保证软件的可重用性

封装

  1. 避免对为封装数据的未授权访问(protected、private)
  2. 帮助保护数据的完整性
  3. 当私有方法名称被修改时,缩小影响范围

继承

  1. 继承是一种连接类与类之间的层次模型,是指特殊类的对象用有其一般类(抽象程度更高的类)的属性和行为
  2. 特殊类既有自己的属性和方法又有继承下来的属性和方法
  3. 特殊类只需要描述和一般类不同的地方,要修改某一属性或者方法时只需要修改一般类,提高了软件的可扩展性和可维护性

多态

多态指两个或者多个属于不同类的对象,对同一方法调用的响应不同(例如特殊类重写了一般类的方法)

UML 建模要素

  1. 构造块:事物、关系、图
  2. 规则:命名、范围、可见性、完整性、执行
  3. 公共机制:详述、修饰、通用划分、扩展机制

事物

  1. 结构事物:描述静态部分、概念元素和物理元素
  2. 行为事物:模型的动态部分,跨越时间和空间的行为
  3. 分组事物:模型的组织事物(包 package)
  4. 注释事物:注解

关系

  1. 泛化关系(Generalization)
  2. 实现关系(Realization)
  3. 依赖关系(Dependency)
  4. 关联关系(Association)
    • 聚合关系(Aggregation)
    • 组合关系(Composition)

其中聚合是更强形式的关联,组合是更强形式的聚合。

类图

类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。

如果用例是系统的“面子”,那么类图则是系统的“里子”

面子请人吃一支烟,可能里子就得除掉一个人
《一代宗师》

类的定义

  • 类是包装信息和行为的基本单元,是面向对象的重要特征之一
  • 类是对一组具有相同属性、操作、关系和语义的对象的描述

类由三部分组成:类名(Name)、属性(Attribute)和方法(Method)

类名

类名书写规范:正体字说明类是可被实例化的,斜体字说明类为抽象类。

属性

属性和方法书写规范:
修饰符 属性名称 [:类型] [多重性] [=初始值] [{特性}]
修饰符 方法名称 [(参数列表)] [:返回类型] [{特性}]

修饰符(作用域):

  • 加号 + 表示 public
  • 减号 - 表示 private
  • #号表示 protected

~号或者省略这些修饰符表示具有package(包)级别的可见性。

多重性:低值..高值

低值,高值均为正整数,表示该类对象中该属性实例的个数
0..*表示从0个到无穷多个
1..1表示1个,可缺省

初始值:初始值是作为该类对象创建时这个属性的默认值

特性:对属性性质的约束说明

如果属性或方法具有下划线,则说明它是静态的。

疏影横斜水清浅,暗香浮动月黄昏