Week_02 学习总结

用户头像
golangboy
关注
发布于: 2020 年 09 月 27 日

1. 编程的本质是什么,为什么会有面向对象?

编程是为了计算机来解决现实世界的问题。将现实世界的问题进行抽象分解,构造出合适的数据模型,以模型之间的交互关系表达现实世界的问题,从而获得问题解。

面向对象的出现是为了更好的表达这种模型,获得更好的系统抽象

2. 如何评判一个软件系统设计的好坏?

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

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

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

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

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

3. 应该怎么设计软件,有哪些原则?

OCP - Open/Closed Principle

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

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

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

DIP - Dependency Inversion Principle

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

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

在Java/C++ 这样的静态类型语言中,实现OCP 的关键在于抽象,而抽象的威力在于多

态和继承。

  • 一个正确的继承要符合什么要求呢?

  • 答案:Liskov 替换原则

SRP - Single Responsibility Principle

  • 又被称为“内聚性原则(Cohesion)”,意为:

一个模块的组成元素之间的功能相关性。

  • 将它与引起一个模块改变的作用力相联,就形成了如下描述:

一个类,只能有一个引起它的变化的原因。

ISP - Interface Segregation Principle

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



用户头像

golangboy

关注

还未添加个人签名 2018.09.18 加入

还未添加个人简介

评论

发布
暂无评论
Week_02学习总结