设计模式之美学习(二):到底什么是面向对象?

提到面向对象,相信不少人都不陌生,随口均可以说出面向对象的四大特性:封装、抽象、继承、多态。实际上,面向对象这个概念包含的内容还不止这些。编程

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

面向对象编程的英文缩写是 OOP,全称是 Object Oriented Programming。对应地,面向对象编程语言的英文缩写是 OOPL,全称是 Object Oriented Programming Language设计模式

面向对象编程中有两个很是重要、很是基础的概念,那就是类(class)和对象(object)。这两个概念最先出如今 1960 年,在 Simula 这种编程语言中第一次使用。而面向对象编程这个概念第一次被使用是在 Smalltalk 这种编程语言中。Smalltalk 被认为是第一个真正意义上的面向对象编程语言。编程语言

什么语言才算是面向对象编程语言呢?若是非得给出一个定义的话,能够用下面两句话来归纳。学习

  • 面向对象编程是一种编程范式或编程风格。它以类或对象做为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,做为代码设计和实现的基石。优化

  • 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。编码

通常来说,面向对象编程都是经过使用面向对象编程语言来进行的,可是,不用面向对象编程语言,咱们照样能够进行面向对象编程。反过来说,即使咱们使用面向对象编程语言,写出来的代码也不必定是面向对象编程风格的,也有多是面向过程编程风格的。翻译

如何断定某编程语言是不是面向对象编程语言?

实际上,对于什么是面向对象编程、什么是面向对象编程语言,并无一个官方的、统一的定义。并且,从 1960 年,也就是 60 年前面向对象编程诞生开始,这两个概念就在不停地演化,因此,也没法给出一个明确的定义,也没有必要给出一个明肯定义。设计

实际上,面向对象编程从字面上,按照最简单、最原始的方式来理解,就是将对象或类做为代码组织的基本单元,来进行编程的一种编程范式或者编程风格,并不必定须要封装、抽象、继承、多态这四大特性的支持。可是,在进行面向对象编程的过程当中,人们不停地总结发现,有了这四大特性,咱们就能更容易地实现各类面向对象的代码设计思路。code

实际上,只要某种编程语言支持类或对象的语法概念,而且以此做为组织代码的基本单元,那就能够被粗略地认为它就是面向对象编程语言了。至因而否有现成的语法机制,彻底地支持了面向对象编程的四大特性、是否对四大特性有所取舍和优化,能够不做为断定的标准。基于此,才有了前面的说法,按照严格的定义,不少语言都不能算得上面向对象编程语言,但按照不严格的定义来说,如今流行的大部分编程语言都是面向对象编程语言。对象

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

实际上,跟面向对象编程常常放到一起来说的还有另外两个概念,那就是面向对象分析(OOA)和面向对象设计(OOD)。面向对象分析英文缩写是 OOA,全称是 Object Oriented Analysis;面向对象设计的英文缩写是 OOD,全称是 Object Oriented DesignOOAOODOOP 三个连在一块儿就是面向对象分析、设计、编程(实现),正好是面向对象软件开发要经历的三个阶段。

之因此在前面加“面向对象”这几个字,是由于咱们是围绕着对象或类来作需求分析和设计的。分析和设计两个阶段最终的产出是类的设计,包括程序被拆解为哪些类,每一个类有哪些属性方法,类与类之间如何交互等等。它们比其余的分析和设计更加具体、更加落地、更加贴近编码,更可以顺利地过渡到面向对象编程环节。这也是面向对象分析和设计,与其余分析和设计最大的不一样点。

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

什么是 UML?咱们是否须要 UML?

讲到面向对象分析、设计、编程,就不得不提到另一个概念,那就是 UMLUnified Model Language),统一建模语言。不少讲解面向对象或设计模式的书籍,经常使用它来画图表达面向对象或设计模式的设计思路。

UML 是一种很是复杂的东西。它不只仅包含咱们常提到类图,还有用例图、顺序图、活动图、状态图、组件图等。在我看来,即使仅仅使用类图,学习成本也是很高的。就单说类之间的关系,UML 就定义了不少种,好比泛化、实现、关联、聚合、组合、依赖等。

UML 在互联网公司的项目开发中,用处可能并不大。为了文档化软件设计或者方便讨论软件设计,大部分状况下,随手画个不那么规范的草图,可以达意,方便沟通就够了,而彻底按照 UML 规范来将草图标准化,所付出的代价是不值得的。

重点回顾

1. 什么是面向对象编程?

面向对象编程是一种编程范式或编程风格。它以类或对象做为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,做为代码设计和实现的基石 。

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

面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。

3. 如何断定一个编程语言是不是面向对象编程语言?

若是按照严格的的定义,须要有现成的语法支持类、对象、四大特性才能叫做面向对象编程语言。若是放宽要求的话,只要某种编程语言支持类、对象语法机制,那基本上就能够说这种编程语言是面向对象编程语言了,不必定非得要求具备全部的四大特性。

4. 面向对象编程和面向对象编程语言之间有何关系?

面向对象编程通常使用面向对象编程语言来进行,可是,不用面向对象编程语言,咱们照样能够进行面向对象编程。反过来说,即使咱们使用面向对象编程语言,写出来的代码也不必定是面向对象编程风格的,也有多是面向过程编程风格的。

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

简单点讲,面向对象分析就是要搞清楚作什么,面向对象设计就是要搞清楚怎么作。两个阶段最终的产出是类的设计,包括程序被拆解为哪些类,每一个类有哪些属性方法、类与类之间如何交互等等。

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

本文由博客一文多发平台 OpenWrite 发布!
更多内容请点击个人博客 沐晨

相关文章
相关标签/搜索