面向对象的基础概念
【只介绍一些我个人不太熟悉的概念】
- 继承和泛化:泛化和继承可以理解为是一个逆过程:泛化就是有子类抽象出一个父类,而继承就是由父类具体化一个子类。
- 接口:只是一种形式,接口自身不能做任何事情【只是说明操作应该做什么( What),但没有定义操作如何做( How)】。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。
- 组件:是系统中实际存在的可更换部分,它实现特定的功能,符合一套接口标准并实现一组接口【可理解为具有一定功能、能够独立工作或同其他组件组合起来协词工作的对象】。在UML的定义中,组件之间唯一的关系就是依赖。
- 模式:一个名词。每一个模式描述了一个不断重复发生的问题,以及该问题的解决方案。设计模式通常是对于某一类软件设计问题的可重用的解决方案。
- 复用:一个动词。软件复用是指将已有的软件及其有效成分用于构造新的软件或系统。
面向对象的设计原则
- 单一职责原则:设计目的单一的类
- 开放-封闭原则:对扩展开放、对修改封闭
- 李氏(Liskov)替换原则:子类可以替代父类
- 依赖倒置原则:依赖于抽象而不是具体实现;针对接口编程而不是实现编程
- 接口隔离原则:使用多个专门的接口比使用单一的总接口要好
- 组合重用原则:尽量使用组合而不是继承关系来实现重用
- 迪米特(Demeter)原则【最少知识原则】:一个对象应当对其它对象有尽可能少的了解
选择题:面向对象的软件设计原则是:迪米特法则的应用。
UML的各类图
- 用例图的分类不定,但大部分时候归为动态。
- 部署图:是用来显示系统中软件和硬件的物理架构。从部署图中,可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。
设计模式
对比
- 架构模式:软件设计中的高级决策,例如C/S
- 设计模式:只要关注软件系统的设计,与具体的实现语言无关
- 惯用法:通过某种特定的程序设计语言来描述构件与构件之间的关系
分类
- 创建型模式:工厂方法模式【类模式/对象模式】、抽象工厂模式、原型模式、单例模式、构建器模式
- 结构型模式:适配器模式【类模式/对象模式】、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式
- 行为型模式:职责链模式、命令模式、解释器模式【类模式/对象模式】、迭代器模式、中介者模式、备忘录模式、状态模式、观察者模式、策略模式、模板方法模式【类模式/对象模式】、访问者模式
(以上,无特别标识的都为对象模式)