面向对象

三大特性

封装

利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体

  • 减少耦合
  • 有利于维护
  • 提供代码复用
  • 降低重构风险

继承

继承实现了 IS-A 关系,子类可以继承父类,获得父类的非private属性与方法 父类引用指向子类对象称为 向上转型

Aniaml dog = new Dog()

多态

  • 运行时多态
    • 对象引用指向的具体类型到运行期间才确定
  • 编译时多态

类图

泛化关系

继承关系

202038191245

实现关系

202038191327

聚合关系

整体和部分不是强依赖的,整体不存在了部分还是会存在

20203819147

组合关系

组合中整体和部分是强依赖的,整体不存在了部分也不存在了

20203819154

关联关系

这是一种静态关系,与运行过程的状态无关

可以用 1 对 1、多对 1、多对多这种关联关系来表示

20203819164

依赖关系

依赖关系是在运行过程中起作用的

两个类是依赖关系有三种形式:

  • 局部变量
  • 参数
  • 对象消息

202038191818

SOLID设计原则

单一职责原则

修改一个类的原因应该只有一个

就是让一个类只负责一件事,当这个类需要做过多事情的时候,就需要分解这个类

开放封闭原则

类应该对扩展开放,对修改关闭

该原则要求在添加新功能时不需要修改代码

里氏替换原则

子类对象必须能够替换掉所有父类对象

animal.run();
// ↓
cat.run();

如果不满足这个原则,那么各个子类的行为上就会有很大差异,增加继承体系的复杂度

接口分离原则

不应该强迫客户依赖于它们不用的方法

使用多个专门的接口比使用单一的总接口要好

依赖倒置原则

高层模块不应该依赖于低层模块,二者都应该依赖于抽象 抽象不应该依赖于细节,细节应该依赖于抽象。

  • 变量都不应该持有指向具体类的引用

其他一些原则

  • 迪米特法则

又叫作最少知识原则(Least Knowledge Principle,简写 LKP),就是说一个对象应当对其他对象有尽可能少的了解

  • 合成复用原则

多使用组合,少使用继承

  • 共同闭包原则

一起修改的类,应该组合在一起

  • 稳定抽象原则

最稳定的包应该是最抽象的包,不稳定的包应该是具体的包

  • 稳定依赖原则

包要依赖的包要比自己更具有稳定性

面向对象分析

OOA

概述

  • 基本任务
  • 模型

    批注 2019-07-23 145316

  • 过程

识别类

  • 研究用户需求,明确系统责任
  • 研究问题域
  • 确定系统边界

  • 考虑问题域

    批注 2019-07-23 150223

  • 审查筛选

    • 舍弃无用对象
    • 精简对象
    • 与实现条件有关的对象
  • 识别主动对象

  • 对象分类

识别属性和操作

识别对象之间的关系

  • 继承

    • 当前领域的分类学知识
    • 常识
    • 集合关系,特征关系
    • 属性与操作的适用范围
    • 领域范围内的复用
  • 关联

  • 聚合
  • 依赖

面向对象设计

  • 提高软件生产率
  • 提高质量
  • 加强可维护性

问题域

  • 编程语言
  • 基础设施
  • 复用支持
  • 数据管理系统
  • 界面支持系统

设计

  • 为复用设计与编程的类增加结构
  • 增加一般类以建立共同协议
  • 按编程语言调整继承和多态
  • 提高性能
  • 为实现对象永久存储做修改
  • 为编程方便添加低层细节

人机交互部分

  • 设计准则

    • 使用简便
    • 减少人脑记忆负担
    • 减少重复输入
    • 容错性
    • 及时反馈
    • 防止灾难性错误

控制驱动部分

数据管理部分

面向对象编程

程序设计范型

  • 面向过程程序设计范型
  • 模块化程序设计范型

OOP语言

选择

评价标准

  • 能否描述类和对象
  • 能够实现一般-特殊结构
  • 如何实现整体-部分结构
  • 如何实现属性和操作
  • 如何实现关联和消息通讯

用非OO编程语言实现OOD模型

results matching " "

No results matching " "

results matching " "

No results matching " "