理论一:当谈论面向对象的时候,我们到底在讨论什么?

设计模式 / 2022-08-20

理论一:当谈论面向对象的时候,我们到底在讨论什么?

------ 极客时间 《设计模式之美》 王争

什么是面向对象编程和面向对象编程语言?

  • 面向对象编程是一种范式一种编程的规则,是以类和对象为基本单位,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石。
  • 面向对象编程语言是支持类或者对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性的编程语言。

一般来说,面向对象编程都是使用面向对象编程语言去实现的,但是不用面向对象编程语言也可以实现面向对象编程,即使我们使用面向对象编程语言,写出来代码也不一定是面向对象编程风格的。这两个东西相辅相成,但是也可以独立使用。

如何判定某编程语言是否是面向对象编程语言?

实际上根据情况,只要某种编程语言支持类或者对象的语法概念,并且以此作为组织代码的基本单元,就可以粗略的认为这是一种面向对象编程语言了。 是否有现成的语法机制,是否完全地支持了面向对象编程的四大特性、是否对四大特性有所取舍和优化,的判定标准可以不作为判定标准。

如果按照严格的的定义,需要有现成的语法支持类、对象、四大特性才能叫作面向对象编程语言。如果放宽要求的话,只要某种编程语言支持类、对象语法机制,那基本上就可以说这种编程语言是面向对象编程语言了,不一定非得要求具有所有的四大特性。

面向对象编程一般使用面向对象编程语言来进行,但是,不用面向对象编程语言,我们照样可以进行面向对象编程。反过来讲,即便我们使用面向对象编程语言,写出来的代码也不一定是面向对象编程风格的,也有可能是面向过程编程风格的。

什么是面向对象分析和面向对象设计

面向对象编程(OOP)、面向对象分析(OOA)、面向对象设计(OOD)

面向对象分析英文缩写是 OOA,全称是 Object Oriented Analysis;面向对象设计的英文缩写是 OOD,全称是 Object Oriented Design。

OOA、OOD、OOP 三个连在一起就是面向对象分析、设计、编程,正好是面向对象软件开发要经历的三个阶段。

分析和设计就是字面意思,加上面向对象是因为,我们是围绕对象活类来做需求分析和设计的。分析和设计两个阶段最终的产出是类的设计,包括程序被拆解为哪些类,每个类有哪些属性方法,类与类之间的交互等等,比其他的分析和设计更具体,这也是前面加上面向对象的原因。

面向对象分析就是要搞清楚做什么。面向对象设计就是要搞清楚怎么做,面向对象编程就是讲分析和设计的结果翻译成代码的过程。

什么是UML?我们是否需要UML?

UML(Unified Model Language),统一建模语言。

很多讲解面向对象或者实际模型的书书籍常用它来画图表达,实际上UML学习成本过高,在互联网公司的项目开发中,用处可能并不大。为了文档话软件设计或者方便讨论软件设计,大部分情况都是使用不那么规范的草图,主要能表达意思,方便沟通就好了。


1.在文章中,我讲到 UML 的学习成本很高,沟通成本也不低,不推荐在面向对象分析、设计的过程中使用,对此你有何看法?

答:应付大部分互联网企业的交流,可以不用去浪费时间成本去学习UML,但是就算不会也要简单了解UML的规范 在使用的时候看看 https://blog.csdn.net/zhaxun/article/details/124017566,并且推荐一个学习 UML的网站 https://app.zenuml.com

2.有关面向对象的概念和知识点,除了我们今天讲到的,你还能想到其他哪些吗?

答:面向对象还有接口概念。