面向对象开发
- 对象:数据及其操作构成的封装体,描述客观事物的一个实体,由对象名、属性和方法组成
- 类:实体的形式化描述,对象是类的实例,类是对象的模板。可分为三种
- 实体类:现实生活中真实的实体
- 接口类:为用户提供一种==与系统合作交互==的方式
- 控制类:控制活动流,充当协调者
- 抽象:通过特定的实例抽取共同特征后形成概念的过程。强调主要特征,忽略次要特征
- 封装:信息隐蔽技术
- 继承:表示类之间的层次关系(父类与子类)
- 多态:不同对象收到同一个消息时产生完全不同的接过。包括
- 函数多态:不同类型参数多种结构类型
- 包含多态:父子类型关系
- 过载多态:类似于重载,一个名字不同含义
- 强制多态:强制类型转换
- 接口:只说明操作应该做什么
- 消息:对象间交互
- 覆盖(重写):同名同参数
- 函数重载:同名不同参数
- 绑定:把过程调用和响应调用所需要执行的代码加以结合
- 动态绑定:运行时绑定
- 静态绑定:在编译时绑定
- 面向对象的分析:确定问题域,理解问题。包含五个活动
- 认定对象
- 组织对象
- 描述对象间的相互作用
- 确定对象的操作
- 定义对象的内部信息
- 面向对象需求建模
- 面向对象设计:设计分析模型和实现相应的源代码
- 分析模型:由顶层架构图、用例与用例图、领域概念模型构成
- 设计模型:以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理结果的活动图
- 面向对象设计原则
- 单一责任原则:一个类仅有一个引起变化的原因
- 开放-封闭原则:实体应该是可以扩展的(开放的),但是是不可修改的(封闭的)
- 里氏替换原则:子类型必须能够替换掉他们的基类型
- 依赖倒置原则:抽象不应该依赖于细节,细节应该依赖于抽象
- 接口分离原则:依赖于抽象、不要依赖于具体
- 面向对象软件测试分为下列四个层次
- 算法层:测试类中的每个方法
- 类层:测试封装在同一类中的所有方法与属性之间的相互作用
- 模板层:测试一组协同工作的类之间的相互作用
- 系统层:把各个子系统组装成完整的面向对象软件系统
统一建模语言语言 UML
- 一种可视化的建模语言,而非程序设计语言
- 结构包含
- 构造块:事物、关系和图
- 公共机制
- 规则
- 事物分类
- 结构事物
- 行为事物
- 分组事物
- 注释事物
- 关系分类
- 依赖:一个事物的语义依赖于另一个事物的语义的变化而变化
- 关联:分为组合(有共同的生命周期)和聚合,都是部分和整体的关系
- 泛化:一般/特殊的关系
- 实现:一个类元指定了另一个类元保证执行的契约
- 类图:静态图,是系统的静态设计视图,展现一组对象、接口、协作和它们之间的关系
- 对象图:静态图,展示某一时刻一组对象及它们之间的关系,为类图的某一快照
- 用例图:静态图,展现了一组用例、参与者以及他们之间的关系
- 用例图中的参与者是人、硬件或者其他系统可以扮演的角色
- 用例之间的关系有 ==扩展、包含和泛化==
- 序列图:动态图,即顺序图,是场景的图形化表示,描述了以时间顺序组织的对象之间的交互活动。三种消息
- 同步消息:实心箭头
- 异步消息:空心箭头
- 返回消息:从右到左的虚线箭头
- 通信图:动态图,即协作图,强调参加交互的对象的组织
- 状态图:动态图,展现一个状态机,描述单个对象在多个用例中的行为,包含简单状态和组合状态
- 转换通过事件触发器触发
- 触发后响应的监护条件会检查
- 活动图:动态图,是一种特殊的状态图,展现在系统内从一个活动到另一个活动的流程
- 并发分叉
- 并发汇合
- 监护表达式
- 分支
- 流
- 构件图(组件图):静态图,为系统静态实现图,展现一组构件之间的组织和依赖
- 部署图:静态图,为系统静态部署图,展示物理模块的节点分布
- UML 4+1 视图
- 逻辑视图:设计视图,类、子系统、包和用例
- 进程视图:可执行线程和进程作为活动类的建模,是逻辑视图的一次执行实例,描述了并发与同步结构
- 实现视图:物理代码的文件和构件的建模
- 部署视图:构件部署到一组物理节点上
- 用例视图:最基本的需求分析模型
设计模式
- 架构模式:高层决策
- 设计模式:描述了不断重复发生的问题,以及该问题的解决方案的核心。包含四个基本要素
- 模式名称
- 问题(何时使用)
- 解决方案(设计的内容)
- 效果(模式应用的效果)
- 惯用法:关注软件系统的设计与实现,实现时通过某种特定的程序设计语言
- 创建型设计模式
- 结构型设计模式
- 行为型设计模式