您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

面向对象编程OOP的基本概念

时间:2020-08-17 10:24:51  来源:  作者:
面向对象编程OOP的基本概念

 

面向对象编程,Object Oriented Progamming,OOP。

1、类和对象

面向对象编程的两个重要概念:类(class)和对象(object)。类是抽象的概念,对象是具体的东西。

在面向对象编程的世界中,一切皆为对象,对象都有属性(数据)和行为(方法),每个对象都是独一无二的,而且对象一定属于某个类。

当把拥有共同特征的对象的静态特征(属性)和动态特征(行为)抽取出来之后,就可以定义出类。

汽车是一个类,它的属性包括最大速度、剩余油量等,它的方法可以有:加油、设定行驶速度等。

面向对象编程OOP的基本概念

 

具体来说,一组数据结构和处理它们的方法的集合,称为类(class);类是具备某项功能的抽象模型,实际应用中,需要对类进行实例化,即为对象(object)。

如汽车是一个类(class),具体到每辆不同车就是对象(object)。

面向对象编程OOP的基本概念

 

2、面向过程和面向对象

与面向对象编程相对的是面向过程编程,即把问题分解为一系列解题步骤,然后用函数实现这些步骤。

  • 面向过程的思想:由过程、步骤、函数组成,从上到下,从大到小,逐步细化,以过程为核心;
  • 面向对象的思想:先开发类,再得到对象,通过对象之间的调用解决问题,以对象为中心。
面向对象编程OOP的基本概念

 

比如开发一个五子棋游戏。

面向过程的设计:首先分析解题步骤:开始游戏→黑子先走→绘制画面→判断输赢→轮到白子→绘制画面→判断输赢→返回步骤2,直到输出最后结果。然后用函数实现上面每个步骤。

面向对象的设计:整个五子棋可以设计为三个类:

  • 玩家:黑白双方,这两方的行为是一样的;
  • 棋盘:负责绘制画面;
  • 规则:负责判定输赢。

然后,第一类对象(玩家)接受用户输入,并告知第二类对象(棋盘)棋子布局的变化,棋盘对象接收到了棋子的变化,就在屏幕上面显示出这种变化,同时第三类对象(规则)对棋局进行判定。

可以看出,面向对象是以功能来划分问题,而不是步骤

面向对象编程OOP的基本概念

 

3、面向对象编程的三大特点

面向对象编程的三大特点:封装性、继承性和多态性。

  • 封装(encapsulation):就是将一个类的使用和实现分开,只保留有限接口与外部联系。对于用到该类的程序员,不需关心这个类是如何实现的,只需知道如何使用。即通过类的封装隐藏类的内部实现细节。
  • 继承(inheritance):就是派生类(子类)自动继承一个或多个基类(父类)的属性和方法,并可以重写或添加新的属性和方法。
  • 多态(polymorphism):就是调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。多态最常见的用法就是声明基类类型的指针,利用该指针指向任意一个子类对象,可以根据子类的不同而实现不同的方法。通过多态实现基于对象类型的动态分派。

封装可以代码模块化,继承可以扩展已存在的代码,它们都可以实现代码重用;而多态则可以实现接口重用。

面向对象编程OOP的基本概念


Tags:面向对象编程   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
面向对象的编程(Object-Oriented Programming ,OOP),每当看到这个术语,我们就会把它与Java联系起来。事实上,Java普及了面向对象的编程风格,除了Java之外,还有很多OOP语言,例如,C++、C...【详细内容】
2022-06-15  Tags: 面向对象编程  点击:(30)  评论:(0)  加入收藏
面向对象:Object Oriented Programming,简称OOP,即面向对象程序设计。类(Class)和对象(Object)类是用来描述具有相同属性和方法对象的集合。对象是类的具体实例。比如,学生都有...【详细内容】
2021-12-22  Tags: 面向对象编程  点击:(129)  评论:(0)  加入收藏
函数式编程已经存在了60多年,但是到目前为止,它一直都很小众。只有像Google这样的改变游戏规则的企业才会依赖函数式编程,普通程序员对此几乎一无所知。 这种情况很快就要被改...【详细内容】
2020-11-05  Tags: 面向对象编程  点击:(126)  评论:(0)  加入收藏
何为面向对象编程面向对象编程(Object-oriented Programming,缩写:OOP)是软件工程中一种具有对象概念的编程范式(Programming Paradigm),同时也是一种程序开发的抽象方针,与之...【详细内容】
2020-10-24  Tags: 面向对象编程  点击:(99)  评论:(0)  加入收藏
面向对象编程,Object Oriented Progamming,OOP。1、类和对象面向对象编程的两个重要概念:类(class)和对象(object)。类是抽象的概念,对象是具体的东西。在面向对象编程的世界中,一切...【详细内容】
2020-08-17  Tags: 面向对象编程  点击:(92)  评论:(0)  加入收藏
本节是第四讲的第十四小节,上一节我们为大家介绍了JavaScript对象的基础概念,本节为大家介绍JavaScrip面向对象编程(OOP)以及构造函数等概念。面向对象的程序设计(Object-orie...【详细内容】
2020-08-04  Tags: 面向对象编程  点击:(85)  评论:(0)  加入收藏
现如今面向对象编程的使用非常广泛,本文我们就来探讨一下Python中的面向对象编程。作者 | Radek Fabisiak译者 | 弯月,责编 | 郭芮出品 | CSDN(ID:CSDNnews)以下为译文:Python支持...【详细内容】
2020-03-05  Tags: 面向对象编程  点击:(60)  评论:(0)  加入收藏
关于POP和OOP的解释我想网上的资料已经数不胜数了,但是基本无非都是在摆理论。刚好本人既写过面向过程(POP)的C程序也写过面向对象(OOP)的C#程序,甚至是万物皆对象的python程序。...【详细内容】
2019-09-26  Tags: 面向对象编程  点击:(207)  评论:(0)  加入收藏
周末午后,我正在愉快的打着王者荣耀,五杀在即之际。女朋友拿着一本我看过的《面向对象编程》过来找我。什么是面向对象?是要面向我写代码吗? 不是啦,这个面向对象的对象不是你这...【详细内容】
2019-07-31  Tags: 面向对象编程  点击:(387)  评论:(0)  加入收藏
1:基本概念面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。这句话的意思是:每个对象能够接受信息,处理数据和发送消息给其他对象;这就意味着在这个编程模式下,每...【详细内容】
2019-07-26  Tags: 面向对象编程  点击:(442)  评论:(0)  加入收藏
▌简易百科推荐
1. 前言了解响应式编程,首先我们需要了解函数式操作和Stream的操作,下面我们简单的复习一下喽。1.1 常用函数式编程函数式接口中我们先来回顾一下Java中的函数式接口。常见的...【详细内容】
2022-07-15  二哥学Java    Tags:编程   点击:(1)  评论:(0)  加入收藏
在本文中,我们将学习如何使用 Next.js、 Prisma、 Postgres 和 Fastify 构建一个 Full-stack 应用程序。在本文中,我们将学习如何使用 Next.js、 Prisma、 Postgres 和 Fastif...【详细内容】
2022-07-12  qaseven    Tags:全栈   点击:(9)  评论:(0)  加入收藏
好的软件开发网站有哪些?做软件开发哪些网站能提供帮助呢?这些很多做软件开发的小伙伴都会问到的问题。007出海全球社交流量导航网站,整合了多方出海跨境网站资源,为你介绍出海...【详细内容】
2022-07-08  Chuhai007    Tags:软件开发   点击:(10)  评论:(0)  加入收藏
我们用monkey做压力测试后,会保存一个monkey日志,那如果想快速的分析日志中有哪些异常,我们可以用批处理工具进行快速的筛查,我们一起来看看吧。先编写个小脚本,然后修改为bat后...【详细内容】
2022-07-08  溪流涌动    Tags:monkey   点击:(13)  评论:(0)  加入收藏
白盒测试落地实践分为两个大方向,一个是静态分析,一个是动态分析,当然啦,也可以叫做静态测试和动态测试。那我们如何高质量保效率的做好白盒测试呢?Parasoft已经为您准备好了成熟...【详细内容】
2022-07-08  Parasoft中国    Tags:白盒测试   点击:(11)  评论:(0)  加入收藏
Altium Designer 自带脚本功能的开发项目,可以调用官方AD API接口对原理图或者PCB进行自动操作,本文主要分享开发的流程,和一些基本的概念信息,本文介绍的脚本工具例子可以用在P...【详细内容】
2022-07-07  电子工程师伟哥    Tags:Altium Designer   点击:(21)  评论:(0)  加入收藏
一、目录介绍 前置知识点 NIO Netty 的核心组件 Channel Callback Future 和 Promise 事件和 ChannelHandler Hello World二、前置知识点1、NIO首先我们需要回顾一...【详细内容】
2022-07-06  架构师jickly    Tags:聊天系统   点击:(16)  评论:(0)  加入收藏
1.事件流事件流是对事件执行过程的描述,了解事件的执行过程有助于加深对事件的理解,提升开发实践中对事件运用的灵活度。2.捕获和冒泡捕获阶段是【从父到子】的传导过程,冒泡阶...【详细内容】
2022-07-06  金乾坤    Tags:API   点击:(13)  评论:(0)  加入收藏
刷盘策略CommitLog的asyncPutMessage方法中可以看到在写入消息之后,调用了submitFlushRequest方法执行刷盘策略:public class CommitLog { public CompletableFuture<PutMe...【详细内容】
2022-07-06  Java码农之路    Tags:RocketMQ   点击:(16)  评论:(0)  加入收藏
最近读了本好书-《深度学习推荐系统》,读完不觉全身通畅,于是就有了写这篇文章的想法,把自己的理解和总结分享给大家。 本文将按照从算法到工程的顺序,先介绍一下推荐系统整体...【详细内容】
2022-07-05  InfoQ    Tags:推荐系统   点击:(22)  评论:(0)  加入收藏
站内最新
站内热门
站内头条