【架构课笔记 - 第二周】编程方法演进与 OOP
一、软件开发与编程方法演进历史
1.1 计算机的演化
二进制演算(莱布尼茨) --> 打孔纸带编2程的织布机(Ada) --> 现代计算机(图灵、冯诺依曼)
1.2 各种编程语言
汇编(CPU 依赖)
早期 Basic(保留了地址)
结构化 Basic(取消地址和 Goto)
Perl (正则表达式)
C语言(结构化、面向过程)
C++ (提供面向对象机制)
Java(完全面向对象)
1.3 编程方法的演进
逐渐抽象的过程
机器代码和汇编语言 ----- 对机器进行抽象
非结构化高级语言 -----对处理逻辑进行抽象
结构化高级语言 ------对问题领域进行一定抽象
面向对象语言 -------直接表达问题空间的元素
二、面向对象编程
2.1 什么是对象
状态(属性)、行为(方法)、标识(每个对象有唯一地址)
2.2 面向对象编程的三要素
封装、继承、多态
注:
1. C 语言也可以有封装,比如通过头文件暴露方法;
2. C 语言也可以有继承,比如结构体A 包含结构体 B 的定义;
3. C 语言也可以实现多态,通过指向函数的指针。
2.3 面向对象设计的目的与原则
2.3.1 目的
强内聚、低耦合--->易扩展、更强壮、可移植、更简单
2.3.2 原则
开闭原则(OCP)
不修改实体,就可以实现功能扩展
设计模式:策略模式、适配器模式、观察者模式
依赖倒置原则(DIP)
高层不能依赖底层、抽象不能依赖实现
Don't call me, I'll call you
里式替换原则(LSP)
子类型必须能替换掉它的基类型
子类的契约不能比基类更严格
单一职责原则(SRP)
一个类只能有一个变化它的原因
接口分离原则(ISP)
不要强迫客户程序依赖它不需要的方法
评论