写点什么

第二周学习总结

用户头像
追风
关注
发布于: 2020 年 09 月 26 日

编程的历史


编程语言的本质

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

编程的过程:用计算机的模型(解空间)与现实世界的问题建立一种联系

编程语言是一种抽象机制,描述模型


问题领域

要解决的问题相关要素

抽象的种类

  • 对基础机器进行抽象


  • 对计算处理逻辑抽象


  • 结构化的程序设计


  • 面象对象的程序设计


  • 编程方法的演进


编程的核心要素


面向对象编程

定义:

  • 万物皆为对象

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

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

  • 每个对象都拥有其类型。

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

对象定义

  • 状态:每个对象有自己的数据

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

  • 标识:区别其它对象

面向对象编程三要素

封装、继承、多态



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

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

面向对象分析是将客观世界问题转换为对象描述与交互

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

目的:

强内聚、低耦合,从而是系统易扩展、更强壮、可移植、更简单

原则:

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

设计模式

用于解决某一种问题的通用的解决方案

Gof23:创建、行为、结构

框架 VS 工具

框架调用应用程序代码

应用程序代码调用工具

架构师用框架保证架构的落地

架构师用工具提高开发效率


面向对象设计原则

开/闭原则(OCP)

OCP - Open/Closed Principle

• 对于扩展是开放的(Open for extension)

• 对于更改是封闭的(Closed for modification)

• 简言之:不需要修改软件实体(类、模块、函数等),就应该能实现功能的扩展。


传统的扩展模块的方式就是修改模块的源代码。如何实现不修改而扩展呢?

• 关键是抽象!

依赖倒置原则(DIP)

DIP - Dependency Inversion Principle

• 高层模块不能依赖低层模块,而是大家都依赖于抽象;

• 抽象不能依赖实现,而是实现依赖抽象。

DIP 倒置了什么?

• 模块或包的依赖关系

• 开发顺序和职责

软件的层次化

• 高层决定低层

• 高层被重用

Liskov 替换原则(LSP)

子类型(subtype)必须能够替换掉它们的基类型(base type)

一个正确的继承必须满足 LSP


单一职责原则(SRP)

SRP - Single Responsibility Principle

• 又被称为“内聚性原则(Cohesion)”,意为: 一个模块的组成元素之间的功能相关性。

• 将它与引起一个模块改变的作用力相联,就形成了如下描述: 一个类,只能有一个引起它的变化的原因。

我们需要理解封装,知道要把什么样的内容放到一起;

我们需要理解分离关注点,知道要把不同的内容拆分开来;

我们需要理解变化的来源,知道把不同行为者负责的代码放到不同的地方。


接口分离原则(ISP)

ISP - Interface Segregation Principle

• 不应该强迫客户程序依赖它们不需要的方法。

ISP 和 SRP 的关系

• ISP 和 SRP 是相关的,都和“内聚性”有关。

• SRP 指出应该如何设计一个类 —— 只能有一种原因才能促使类发生改变。

• ISP 指出应该如何设计一个接口 —— 从客户的需要出发,强调不要让客户看到他们不需要 的方法。


用户头像

追风

关注

还未添加个人签名 2018.01.08 加入

还未添加个人简介

评论

发布
暂无评论
第二周学习总结