第二部分 从基础构建开始:编程范式——第三章 总览 ~第五章 面向对象

引言

1938年,图灵打下了计算机编程的地基。到如今,编程语言层出不穷。在另一方面,编程范式也从中孕育而出。

今天,我们只有三种编程范式,未来也几乎不可能出现新的。

正文

第三章

编程范式总览

  • 结构化编程
  • 面向对象编程
  • 函数式编程

结构化编程起源于goto的滥用,无限制的goto会损害程序的结构。
且所有的goto均被证明可用if else do while等关键字替代,因而废除goto,诞生了结构化编程

面向对象,函数在类内运行,可以保证函数return后的值继续保存在类中,诞生了面向对象。

函数式编程来源于数学的函数,是λ(lambda)演算的衍生物,其中最重要的思想是数据的不可变性

结构化编程对程序控制权的直接转移进行了限制和规范
面向对象编程对程序控制权的间接转移进行了限制和规范
函数式编程对程序的赋值进行了限制和规范

这三种范式恰好对应了软件架构的三个重点

  • 功能性--结构化
  • 组件独立性--面向对象
  • 数据管理--函数式

第四章

结构化编程被发现的历史(略)
大量的goto不易被拆分为独立,方便测试的模块,因而被废除。

第五章

面向对象编程

几种对于面向对象的解释

  • 数据与函数的组合

  • 对真实世界的建模方式

  • 一些神秘的词语,封装,继承,多态
    面向对象的特性有他们三个,但他们并不是面向对象的真正含义

  • 封装

  • 继承

  • 多态

封装

我们将一组关联的数据和函数,画一个圈,圈起来。
让圈外面的代码只能看到,想让他看到的部分

一个实例,不面向对象的C 可以完美的做出封装。面向对象的C++,因为头文件声明的原因,反而封装的不彻底。

继承

继承在面向对象编程之前早已存在,但是面向对象编程更加便利

多态

面向对象封装了使用函数指针的危险性。

从此可以方便的面向接口,一个抽象的概念体展开编程。

控制反转

不面向接口编程,是A调取B,则A依赖于B。

面向接口编程,
A调取B的抽象接口C,A依赖于C,
B实现C,B也依赖于C,
但是从此,D、E、F等都可以实现C,只要实现C,即可被A调用。
那么将A、C封装在一起看作一体的新A,即可达成了(依赖倒置)控制反转,B依赖于新A。

微信图片编辑_20191229014237.jpg

面向对象就是以多态为手段,对源代码中的依赖关系进行控制的能力

因为此,面向对象规避了互相依赖的复杂关系,使得各个模块真正做到独立部署,也产生了不同的组件,更在此基础上产生了软件的分层。

你可能感兴趣的:(第二部分 从基础构建开始:编程范式——第三章 总览 ~第五章 面向对象)