面向对象技术

时游大约 12 分钟

面向对象技术

面向对象的基本概念(必考、重点)

对象与类相关概念

对象与封装

将对象中的某些行为和属性封装起来,抽象为类。类也可以实例化为对象。

对象与类
对象与类
例题1
例题1
  1. 消息是对象之间通信的一种方式,不属于组成部分。
  2. 由同一个一个类定义的对象之间共享属性和行为。
例题2
例题2
  1. private私有属性,只能被此类中定义的方法访问。
  2. public公有属性,程序中所有方法都可以访问。

继承与泛化的基本概念

  1. 泛化:将对象之间的共性进行抽象的过程叫做泛化,生成一个父类。子类可以继承(extends)父类的属性和方法。
  2. 单重继承:一个类只能继承一个父类。
  3. 多重继承:一个类可以继承多个父类。
  4. 父类中可以定义抽象方法,其具体实现在子类中完成,子类继承父类中原有的抽象方法被覆盖(重置)为了子类中的实现。
  5. 重载:一个类中存在多个重名但是参数不同的方法。
例题1
例题1

多态与动态绑定的基本概念

  1. 多态:多态是指同一方法或接口在不同对象中具有不同实现方式的能力。
  2. 静态绑定:在编译时确定对象方法调用。
  3. 动态绑定:在运行时确定对象方法调用。
例题1
例题1
例题2
例题2

面向对象基本概念汇总

汇总
汇总
例题1
例题1
  1. 实体类
  2. 接口类
例题2
例题2
  1. 过载多态
  2. 参数多态
  3. 包含多态
  4. 强制多态

面向对象分析

  1. 面向对象分析
  2. 面向对象设计
  3. 面向对象程序设计
  4. 面向对象测试
面向对象过程
面向对象过程

面向对象设计

面向对象设计7大原则

  1. 单一职责原则:设计目的单一的类
  2. 开放-封闭原则(开闭原则):对扩展开放、对修改封闭
  3. 李氏(Liskov)替换原则:子类可以替换父类
  4. 依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现编程
  5. 接口隔离原则:使用多个专门的接口比使用单一的总接口更好
  6. 组合重用原则:要尽量使用组合,而不是继承关系达到重用目的
  7. 迪米特原则(最少知识法则):一个对象应当对其他对象尽可能少的了解

其他原则:

  1. 重用发布等价原则:重用的粒度就是发布的粒度
  2. 共同封闭原则:包中所有类对于同一性质的变化应该是共同封闭的。一个变化若多一个包产生影响,则将该包中所有类产生影响,而对于其他的包不造成任何影响
  3. 共同重用原则:一个包里的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类
  4. 无环依赖原则:在包的依赖关系图中不允许存在环,即包之间的结构必须是一个直接的无环图形。
  5. 稳定依赖原则:朝着稳定的方向进行依赖
  6. 稳定抽象原则:包的抽象程度应该和其稳定程度一致

UML

UML图概念

UML图分类:

  1. 静态图
    1. 类图:一组对象、结构、协作和它们之间的关系
    2. 对象图:一组对象以及它们之间的关系
    3. 包图:描述类或其他UML如何组织成包,以及包之间的依赖关系
    4. 组合结构图:分解类、组件或用例的内部结构
    5. 构件图(组件图):一组构件之间的组织和依赖,专注于系统的静态实现视图
    6. 部署图:软硬件之间映射,运行处理结点以及构件的配置,给出体系结构的静态实施视图
    7. 制品图
  2. 动态图
    1. 用例图:系统与外部参与者的交互,描述用例、参与者以及它们之间的关系
    2. 顺序图:强调按时间顺序
    3. 通信图(协作图),强调收发消息的对象之间的组织结构
    4. 定时图:关注对象在改变状态时的时间约束条件
    5. 状态图:展现了一个状态机,由状态、转换、事件和活动组成。
    6. 活动图:类似程序流程图,并行行为。专注于系统的动态视图,一个活动到另外一个活动到流程。
    7. 交互概览图
图例
图例

UML图关系

UML图关系
UML图关系

包含关系includes:必选关系

其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例体系:当可以从两个或两个以上的用例提取公共行为时,应该使用包含关系来表示它们。

扩展关系extend:可选关系

如果一个用例明显的混合来两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。

泛化关系:必选

当多个用例共同拥有一种类事的结构和行为的时候,可以将它们的共性抽象称为父用例,其他的用例作为泛化关系的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。

UML图关系
UML图关系
例题
例题

UML图图示

UML类图和对象图

类图描述类一组类、接口、协作和它们之间的关系。在OO系统的建模中,最常见的图就是类图。类图给出了系统的静态设计视图,活动类的类图给出了系统的静态进程视图。

对象图描述了一组对象及它们之间的关系。对象图描述了在类图中所建立的事物实例的静态快照。和类图一样,这些图给出系统的静态设计视图或静态进程视图,但它们是从真实案例或原型案例的角度建立的。

Alt text
Alt text
例题
例题

用例图

描述一组用例、参与者及它们之间的关系。关系包括:包含关系、扩展关系、泛化关系

例题图示
例题图示

顺序图和通信图

顺序图是一种交互图,展现了一种交互,它由一组对象或参与者以及它们之间可能发生的消息构成。交互图专注于系统的动态视图。顺序图是强调消息的时间次序的交互图。

顺序图
顺序图

注意:箭头指向的方向是包含方法的类

通信图也是一种交互图,它强调收发消息的对象或参与者的结构组织。顺序图和通信图表达了类似的基本概念,但它们所强调的概念不同,顺序图强调的是时序,通信图强调的是对象之间的组织结构关系。

例题
例题

活动图

活动图将进程或其他计算结构展示为计算内部一步步的控制流和数据流。活动图专注于系统的动态视图。它对系统的功能建模和业务流程建模特别重要,并强调对象间的控制流程。

活动图图示1
活动图图示1
泳道活动图
泳道活动图
活动图术语
活动图术语
例题1
例题1

状态图

状态图描述了一个状态机,它由状态、转移、事件和活动组成。状态图给出了对象的动态视图。对接口、类或协作的行为建模尤为重要,而且它强调事件导致的对象行为。

状态图
状态图
例题1
例题1
例题2
例题2

构件图

描述了一个封装的类和它的接口、端口以及其内嵌的构件和连接件构成的内部结构。构件图用于表示系统的静态设计实现视图。对于由小的部件构建成大的系统来说,构件图是重要的。构件图是类图的变体。

构件图
构件图
例题1
例题1

部署图

描述对运行时的处理节点及在其中生存的构件的配置。部署图给出了架构的静态部署视图,通常一个节点包含一个或多个部署图。

部署图
部署图

设计模式(必考)

23种设计模型

创建型设计模型:5种

1. 抽象工厂模式(Abstract Factory)

提供一个接口,可以创建一系列相关或相互依赖的对象,而无需指定它们具体的类。

抽象工厂设计模式
抽象工厂设计模式

2. 构建器模式(Builder),也可叫做生成器模式

将一个复杂类的表示与其构造相分离,使得相同的构建过程能得出不同的表示。

生成器模式
生成器模式

3. 工厂方法模式(Factory Method)

定义一个创建对象的接口,但由子类决定需要实例化哪一个类。工厂方法使得子类实例化的过程推迟。

工厂方法模式
工厂方法模式

4. 原型模式(Prototype)

用原型实例指定创建对象的类型,并且通过拷贝这个原型来创建新的对象。

原型模式
原型模式

5. 单例模式(Singleton)

保证一个类只有一个实例,并提供一个访问它的全局访问点。

单例模式
单例模式
例题1
例题1
例题2
例题2

结构型设计模型:7种

1. 适配器模式(Adapter)

将一个类的接口转换成用户希望得到的另外一种接口,使得本不相容的接口得以协同工作。

适配器模式
适配器模式

2. 桥接模式(Bridge)

将类的抽象部分和它的实现部分分离,使得它们可以独立地变化。

桥接模式
桥接模式

3. 组合模式(Composite)

将对象组合成树形结构以表示“整体-部分”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。

组合模式
组合模式

4. 装饰模式(Decorator)

动态地给一个对象添加一些额外的职能。它提供了用子类扩展功能的一个灵活替 换,比派生一个子类更加灵活。

装饰模式
装饰模式

5. 外观模式(Facade)

定义一个高层接口,为子系统中的一组接口提供一个一致的外观,从而简化了该子系统的使用。

外观模式
外观模式

6. 享元模式(Flyweight)

提供支持大量细颗粒度对象共享的有效方法。

享元模式
享元模式

7. 代理模式(Proxy)

为其他对象提供一种代理以控制这个对象的访问。

代理模式
代理模式
例题1
例题1

行为型设计模式:11种

1. 职责链模式(Chain of Responsibility)

通过给多个对象处理请求的机会,减少请求的发送者与接收者之间的耦合。将接受对象链接起来,在链中传递请求,知道有一个对象处理了这个请求为止。

职责链模式
职责链模式

2. 命令模式(Command)

将一个请求封装成一个对象,从而可用不同的请求对客户进行参数化,将请求排队或记录请求日志,支持可撤销的操作。

命令模式
命令模式

3. 解释器模式(Interpreter)

给定一种语言,定义它的文法表示,并定义一个解释器,该解释器用来根据文法表示来解释语言中的句子。

解释器模式
解释器模式

4. 迭代器模式(Iterator)

提供一种方法来顺序访问一个聚合对象中的各个元素,而不需要暴露该对象的内部表示。

迭代器模式
迭代器模式

5. 中介者模式(Mediator)

用一个中介对象来封装一系列的对象交互。它使各对象不需要显式地相互调用,从而达到低耦合,还可以独立的改变对象间的交互。

中介者模式
中介者模式

6. 备忘录模式(Memento)

在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,从而可以在以后将该对象恢复到原先保存的状态。

备忘录模式
备忘录模式

7. 观察者模式(Observer)

定义对象间的一种一对多的依赖关系,当一个对象的状态发生了改变时,所有依赖于它的对象都将得到通知并自动更新。

观察者模式
观察者模式

8. 状态模式(State)

允许一个对象在其内部状态变化时改变它的行为。

状态模式
状态模式

9. 策略模式(Strategy)

定义一系列算法,把他们封装起来,并且使它们之间可互相替换,从而让算法可以独立于使用它的用户而变化。

策略模式
策略模式

10. 模板方法模式(Template Method)

定义一个操作中的算法骨架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义算法的某些特定步骤。

模版方法模式
模版方法模式

11. 访问者模式(Visitor)

表示一个作用于某对象结构中的各元素的操作,使得在不改变各元素的前提下定义作用于这些元素的新操作。

访问者模式
访问者模式
例题1
例题1
例题2
例题2
例题3
例题3

设计模式拼写及分类汇总

设计模式分类
设计模式分类
上次编辑于:
贡献者: 15327360835
Loading...