面向对象范式

  • 科学思维
    • 理想化
    • 将未知问题转换为已知问题
  • 工程思维
    • 受到实际因素制约
    • 局部最优解

分解与抽象

两种方式都是降低复杂度的手段

分层

分解与抽象组合使用对系统进行分层,缩小关注点,降低复杂性

结构化编程

  • 按算法分解
  • 结构化的方式,使代码更好地被理解

问题

  • 不容易读
  • 不容易维护

数据流图

所有的计算系统都是信息的处理与转换系统

结构图

代表模块之间的依赖关系

消除重复

  • 抽象

测试

  • 语句覆盖
  • 分支覆盖
  • 路径覆盖

特性

  • 变更是不可避免的
    • 做好对可以预期到的变更的设计
  • 可修改
  • 可操作性

世界观

数据职责(对象的本质特征)与行为职责(拥有数据后体现的行为)绑定

class Person {
  Date birthday;
  getAge();
}

  • 对现实世界进行建模
  • 抽象、隐藏细节

确定类

  • 确定名词概念
  • 确定所有数据与行为是否为必要
    • 有行为有状态 -> 概念类
    • 有状态无行为 -> 其他类
    • 无状态有行为 -> 划分到概念类
    • 无状态无行为 -> 抛弃

重用

  • 不要重复造轮子?

架构、框架/类库、模式、继承

封装

将需求的变更封装在类里

防御式编程

所有的输入,认为都有可能出错

职责

执行一项任务或掌握某种信息的义务

协作

  • 自底向上职责聚合
  • 自顶向下职责拆分

类关系

  • 依赖
  • 关联
  • 聚合
  • 组合

可修改性

  • 可修改
  • 可扩展
  • 灵活

继承

  • 代码重用
  • 抽象

组合与继承

在继承中,如果父类是脆弱的,那么父类接口发生一点改变就会影响到子类的行为

使用时,保证使用继承是一种is a的关系

多态

作用:消除类型之间的耦合关系

编译器策略与运行时策略不一致

接口

一个纯抽象的类,少了抽象类的一些限制

按接口编程

定义一个契约,将变化隔离在某一部分内

results matching " "

No results matching " "

results matching " "

No results matching " "