写点什么

【架构课笔记 - 第二周】编程方法演进与 OOP

用户头像
Nelson
关注
发布于: 2020 年 06 月 17 日

一、软件开发与编程方法演进历史

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)

不要强迫客户程序依赖它不需要的方法



用户头像

Nelson

关注

还未添加个人签名 2017.09.04 加入

还未添加个人简介

评论

发布
暂无评论
【架构课笔记 - 第二周】编程方法演进与OOP