Week_02 学习总结
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
不应该强迫客户程序依赖它们不需要的方法。
评论