面向对象基础杂记(下)

399 阅读6分钟

类与类图

三个格子的长方形,类名-属性-操作 image.png

属性

  • 根据详细程度不同,属性可以包括属性的可见性,属性名称,类型,多重性,初始值和特性
  • 可见性
      • / 蓝色框 public 共有
      • / 蓝框+锁 private 私有
    • / 蓝框+钥匙 protected 受保护

    • ~ / package 最高级包

类的关系

关联

对具有相同结构特性,行为特性,关系和语义的链的描述

  • 链就是一个实例,链式关联关系的实例,表示类之间的关系。表示为两个类之间的一条实现
  • 关联可以有两个或多个关联端,每个关联端连接到一个类。
  • 可以用箭头表示单项关联
  • 关联的元素
    • 关联名:在肩头上进行标识,表示A与B是‘’关系
    • 关联角色:两端的类可以由某种角色参与。表示为直线两端的表示。上面是角色名下面是数量。
    • 关联类:关联本身可以由类来进一步描述。表示为从线上连接出的虚线。
    • 关联的约束:表示为两个关联线之间的虚线,用文字表示类型。如表示两个关联是互斥关系,不可同时
    • 限定关联:在两端表限定符,表示只在这个限定内起作用,一般与非限定关联连用
  • 关联种类
    • 自返关联/递归关联:同一个类多个对象之间的关联
    • 二元关联:最多见的
    • N元关联:多个类之间的关联 关联 image.png 关联角色 image.png 关联约束 image.png 限定关联 image.png N元关联 image.png

聚集和组合

  • 聚集:特殊的关联,表示类之间整体与部分的关系。(空菱形指向整体)
    • 图形A可以有样式B,A+B可以表示有样式的图形,但A与B又可以单独存在
  • 组合:一种特殊的聚集,与聚集的不同为,组合关系的整体与部分具有同样的生命周期(实心菱形指向整体)
    • 图形A和图形中心B是组合,图形A不存在时B也会不存在 image.png

泛化

一般元素与特殊元素的分类关系。类似于类与类之间的继承关系。
空三角形指向被泛化的类。 image.png

依赖

修改X的定义会导致Y的定义也被修改,则Y依赖于X。虚线箭头指向被依赖类。
例如更改课程类名称会影响学生类选课方法的参数。 image.png

边界类,控制类,实体类

  • 边界类:位于系统和外界的交界处,直接与外部设备交互的类等,每个参与者至少与一个边界类相连 image.png
  • 实体类:保存要放进持久存储体的信息。如数据库文件等 image.png
  • 控制类:负责其他工作的类。 image.png

寻找类

  • 根据用例描述中的名词确定类的候选者
  • 使用CRC(类、职责、协作)分析法寻找类。
  • 根据边界类、实体类和控制类的划分来帮助发现系统中的类
  • 对领域进行分析,或利用已有的领域分析结果得到类
  • 参考设计模式来确定类
  • 根据某些软件开发过程提供的指导原则

状态图与活动图

状态图

主要用于描述一个对象在其生存期间的动态行为,表现一个对象所经历的状态序列,引起状态转移的事件,以及因状态转移而伴随的动作。

元素

  • 包括状态。转换,事件,动作
  • 状态:指在对象的生命周期种话的某个条件或状况,在此期间对象满足某些条件,执行某些活动或等待事件。
    • 所有对象都具有状态,是对象执行了一系列活动的结果,事件发生后对象的状态发生变化。
    • 初态:一个状态图只有一个初态。表示状态图的起始,必须要有一个输出的无触发转换来保证总保持在初态(实心圆)
    • 终态:可以有多个或没有。(空心圆)
    • 组合状态:包含一些嵌套的子状态,其中也有初始态与终态
    • 历史状态:记住组合状态中退出时所处的子状态,可以直接进入这个状态而不是从组合状态的开始
    • 中间状态:名字域+内部转移域,后者可选。下图为一个完整中间态例子
      image.png
  • 动作
    • 入口动作:表示进入这个状态所要执行的第一个动作entry/...
    • 出口动作:退出的最后一个动作exit/...
    • 内部变迁:在状态内的动作不引起状态变化do/...
  • 事件:触发状态转换的条件,如开门,打开开关等。如果没有触发事件则原状态执行完毕自动换到目标状态
    • 可以理解为if线
    • event-name ( comma-separated-parameter-list )
  • 动作:事件发生后执行的一组动作,并把状态由原状态转为目标状态,动作前加“/”
  • 转换
    • 当一个特定事件发生或者某些条件满足,一个源状态下的对象在完成一定动作后将发生状态的转变,转向另一个称为目标状态的状态。
    • event-signature [ guard-condition ] / action
    • 外部转换: 一种改变对象状态的转换。从源状态箭头指向目标状态
    • 内部转换:状态转后仍然是本身,不触发入口动作出口动作
    • 完成转换:又称为自转换,没有表明触发器的事件,由状态中活动的完成引发的转换。
      • 与内部转换的不同:是离开后重新进入,会触发入口出口动作。
    • 复合转换:由简单转换组成,通过分支合并组合在一起,在箭头上标有触发器判定

活动图

用于描述系统的工作流程和并发行为
表示内容与状态图类似。用泳道根据活动职责划分区域,根据活动职责放入不同泳道。 image.png 元素:活动,动作流,分支与合并,分叉与汇合,泳道,对象流

构件图/部署图

构件图

  • 构件:系统中遵从一组接口且提供其实现的物理的,可替换的部分。是定义了良好接口的软件模块。
  • 构件图:一组构件以及他们之间的相互关系,包括编译,连接,或执行时构建之间的依赖关系。
    • 描述了如何把软件的逻辑模型映射为运行的实体。
  • 元素:构件,接口,依赖关系 image.png

部署图

与构件图一起是对OO系统物理方面建模的两个图。用来显示系统中计算节点的拓扑结构和通信路径,与节点上允许的软构件等。

  • 结点:存在于允许时的代表计算资源的物理元素,节点一般具有一些内存。有处理机和设备两种类型。
    • 处理机:可以执行程序的硬件构件|CPU等
    • 设备:无计算能力的硬件构件|调制解调器,终端等
  • 连接:两个硬件之间的关联关系。由于连接关系是关联,所以可以加上角色多重性等。 image.png