面向对象编程概念简述

Posted 英雄的外婆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象编程概念简述相关的知识,希望对你有一定的参考价值。

一、 编程范式

在我们编程语言里面,大致可以分为两个大类:命令式编程 和  声明式编程

1. 命令式编程

所谓命令式编程,就是以命令为主,给计算机一条一条命令,计算机来按照我们给的命令原封不动的执行。

命令机器如何去做事情(how)

常见的命令式编程语言有:C语言,C++,C#,Java,php,Ruby

从命令式编程语言又可以分为两大类:面向过程 和 面向对象

(1) 面向过程

就是分析解决问题所需要的步骤,然后把这些步骤一步一步实现

(2) 面向对象

所谓面向对象,就是将程序里面的模型看做一个一个的对象。对象和对象之间会产生彼此的联系。使用对象来解决问题

需要注意:就算是面向对象编程,里面也会有面向过程的步骤。

2. 声明式编程

所谓声明式编程,就是指告诉计算机你想要什么(what),让机器去解决如何实现。

声明式编程里面也可以分为两大类:DSL 和 函数式编程

(1) DSL

DSL翻译成中文为领域专用语言(Domain Specific Language)。顾名思义,就是指某一个领域专用的语言。

常见的DSL语言有html,CSS,SQL

(2) 函数式编程

将程序里面的一些模型看做是数学里面的函数来进行计算。

 

一、 面向对象

 

1. 什么是面向对象

 

首先需要搞清楚什么是对象(Object)。通俗来讲,就是东西。我们这个世界就是由各种各种的东西组成的。东西与东西之间有彼此的联系。

 

现实生活中我们描述一个东西,或者一个物品的时候,常常会从2个方面来进行描述

 

例如我要描述一个手机

 

首先第一个就是外观(属性):白色  5.5寸  矩形   

 

接下来就是从功能来进行描述:看电影 打电话  玩游戏

 

2. 面向对象和面向过程的区别

 

面向过程的特点:由顶自下,依次执行,我们需要去考虑每一个步骤。

 

面向对象的特点:面向对象更加符合我们人类的思想。我们只需要找到我们需要的对象即可。

 

ATM机取钱

 

面向过程:我们需要考虑每一个步骤,例如取钱的时候金额是多少,余额是多少,用户的输入是否合法

 

面向对象:只需要考虑这个ATM这个对象即可

 

3. 面向对象的特点

 

一般来讲,面向对象的特点有3个:封装,继承和多态

 

有些老的教材,会告诉你面向对象的特点有4个:除了上面3个以外,还多加了一个抽象

 

封装:就是将细节隐藏起来,不向外部暴露。例如现实生活中电视机就是一个典型的封装,无法看到内部电子元件这些细节

 

继承:和现实生活中一样,儿子可以继承父亲的一些东西。在程序里面子类可以继承父类。

 

多态:如果从语言的角度来看,就是不同对象同一方法的作用不一样。例如现实生活中,一个action这个单词对于不同的职业的人来讲,意义是不一样的。

 

4. 类

 

和现实生活中一样,东西一多,按照人的思维自然就会想到分类。比如给你1万本书。我们首先会想到分类,例如分为小说类,科技类,漫画类,政治类,经济类...每一个类别下面的书都是有共同的特点的。

 

类和对象的关系:类是对象的一种概括,是一个抽象的东西,对象是类的一种具体实现,是一个具体的东西。

 

5. 创建对象

 

(1) 通用编程语言产生对象的方式

 

对象是从类产生的。所以如果我们要获取对象,首先需要创建类

 

(2) JS中创建对象的方式

 

在ES6之前,JS里面没有类的概念。所以在ES6之前都是通过函数来模拟类

 

模拟类的函数通常被称之为构造函数。为了区分构造函数和普通函数,有一个不成文的规定,构造函数的函数名首字母大写

 

对象和构造函数,以及原型对象之间的关系图(重要)

 

前面我们所讲述的数组,函数,数字,字符串等都有对应的构造函数。如果是通过构造函数实例化的,那么就是一个对象

 

对象里面有一个叫做constructor的属性,可以查看到这个对象的构造函数

 

在每一个构造函数里面,都有一个隐藏属性,叫做prototype,这个属性指向一个对象,这个对象就是通过构造函数实例化出来的对象的原型对象

 

以上是关于面向对象编程概念简述的主要内容,如果未能解决你的问题,请参考以下文章

面向对象思想是啥

面向对象编程

Python面向对象编程之继承与多态详解

面向对象编程思想

node.js 是面向对象的么

通俗简述 依赖倒置?控制反转?依赖注入?面向接口编程 的思想