写点什么

「架构师训练营」学习笔记:第 2 周

用户头像
Amy
关注
发布于: 2020 年 06 月 14 日

1. 软件开发简史


在一贯的认知中,软件开发是要在计算机上进行的。如果有人跟我说在计算机出现之前,就有人在编程了,一定会想这是开玩笑吧。但是了解到下面的历史事件,才知道以前的思想太狭窄了。软件开发是一项创造性的工作,不应该画一个框把思维困在里面。跳出框框,你会有意想不到的收获。


1700 年代,德国人莱布尼兹期望将各种事务通过一种逻辑语言进行描述,然后用一种可执行盐酸规则的机器进行计算,就可以计算出事务的各种结果。结果发明了微积分(ps:莱布尼兹和牛顿谁现发明微积分的争论是数学界至今最大的公案,这里不讨论。)和二进制。


1800 年代,法国人雅卡尔发明了人类可编程的产品——织布机。


19 世纪中叶,英国人 Ada (是一名女生哦。)写出人类第一个软件程序。


2. 编程与编程语言


编程的目的:用计算机来解决现实世界的问题。


编程的过程:在计算机所理解的“模型”(解空间)和现实世界(问题空间)之间,建立一种联系。


编程语言是一种“抽象”的机制,问题是对“谁”来抽象。



2.1. 问题领域


​ 包含与系统所有解决的问题相关的实物和概念的空间

2.2. 抽象的种类


| 机器代码和汇编语言 | 对基础机器进行抽象 |

| ---------------------------------------- | -------------------------------- |

| 结构化的高级语言(如:Basic,Fortran 等) | 对计算处理逻辑抽象 |

| 结构化的程序设计 | 开始对问题领域进行一定程度的抽象 |

| 面向对象程序设计 | 直接表达问题空间内的元素 |


汇编语言 -> 高级语言 -> 结构化程序 -> OOP


2.3. 编程的核心要素


​ 人 、 客观业务领域、计算机

2.4. 面向对象编程


万物皆对象


程序是对象的集合,它们通过发送消息来告知彼此所要做的。


每个对象都有自己的由其他对象所构成的存储


每个对象都拥有其类型


某一特定类型的所有对象都可以接收同样的消息

2.4.1. 什么是对象


对象具有状态、行为和标识。


  • 状态:表明每个对象可以有自己的数据

  • 行为:表明每个对象可以产生行为

  • 标识:表明每个对象都区别与其他的对象(唯一地址)

2.4.2. OOP 的三要素(特征)


| 特征 |描述 |

| -------------------- | --------------------------------------------- |

| 封装(Encapsulation) | 隐藏实现细节(访问控制)<br />定义接口 |

| 继承(Inheritance) | IS-A 关系<br />Has-A 关系(组合) |

| 多态(Polymorphism) | 后期绑定(虚函数)<br />向上转型(Up Casting) |


注意:这 3 个特征并不是 OOP 特有的。

2.5. 面向对象编程与面向对象分析


面向对象编程是利用多态特性进行编程。


面向对象分析是将客观世界,即编程的业务领域进行对象分析。


充血模型与贫血模型


领域驱动设计 DDD

2.6. 面向对象设计的目的和原则

2.6.1. 目的


强内聚、低耦合,从而使系统


- 易扩展 —— 易于增加新的功能


- 更强壮 —— 不容易被粗心的程序员破坏


- 可移植 —— 能够在多样的环境下运行


- 更简单 —— 容易理解、容易维护

2.6.2. 原则


为了达到上述的设计目的,前人总结出了多种指导原则


“原则”是独立于编程语言的,甚至也可以用于非面向对象的编程语言中。

3. 框架


框架是用来实现某一类应用的结构性的程序,是对某一类架构方案可服用的设计与实现


  • 如同框架结构的大厦的框架

  • 简化应用开发者的工作

  • 实现了多种设计模式,使用应用开发者不需要花太大的力气,就能设计出结构良好的程序来


不用领域的框架:

  • 微软公司为 Windows 编程开发了 MFC 框架

  • Java 为它的 GUI(图形用户节目)开发了 AWT 框架

  • 开源的框架:MyBatis、String 等

  • Web 服务器也是框架:Tomcat

3.1. 框架 vs 工具

框架调用应用程序代码

应用程序代码调用工具

4. 面向对象设计的六大原则


​ 面向对象设计原则是前人在使用面向对象开发过程中,总结出来的一些指导性思想。它不是具体的方法,是指导思想。但是在实际工作中经常会被忽视、违背。


设计原则


用户头像

Amy

关注

还未添加个人签名 2018.06.10 加入

还未添加个人简介

评论

发布
暂无评论
「架构师训练营」学习笔记:第 2 周