前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >编程思想 _用Minercraft来讲解面向过程与面向对象

编程思想 _用Minercraft来讲解面向过程与面向对象

作者头像
木杉乀
发布2021-04-02 02:17:49
5040
发布2021-04-02 02:17:49
举报
文章被收录于专栏:木杉の小屋

c++_两大编程思想:面向过程与面向对象 ——初识面向对象

!!!这篇文章主要学习面向对象和面向过程的思想,面向对象的具体实现将在后续文章出现


面向对象是一种编程思想, 2大编程思想其中一个就是面向对象, 另一个叫做面向过程。

面向对象的优缺点与面向过程是一种互补!将两者联系起来才可以使编程效益最大化

那么我们首先先了解一下面向过程:

一. 面向过程

面向过程遵守“从上至下”的设计模式,C语言编程就是一个面向过程的编程

(java是纯面向对象,c语言是纯面向过程,c++半面向过程)

用面向过程的方式解决问题的思路:
代码语言:javascript
复制
提出问题,分析问题的处理流程,将一个大问题分解成小问题,如果小问题比较复杂,那么就分解为更小的问题去逐一解决这些问题,当一个问题解决完成开始解决下一个问题,最终完成整个处理流程,这种编程思想的方向主要是解决问题中的一个个过程,因此被称之面向过程。

面向过程就相当于一个流水线,以Minercraft制作一个火把为例:

提出问题:Minercraft里面制作一个火把!

处理流程:

  1. 想致富先撸树!! 获取原木
  2. 将原木分解为木板 获取木板
  3. 将木板分解为木棍 获取木棍
  4. 获取煤炭
  5. 用煤炭和木棍合成火把

我的第一个火把诞生了,这样的设计过程思想称之为面向过程

优缺点:

1、优点:

代码语言:javascript
复制
1. 程序结构简单,仅由顺序结构,选择结构,循环结构三种基本结构组成即可解决任何问题,对于面向过程需要专注于逻辑的学习,不需要记忆很多的语法。
2. 对于一些结构简单的问题,通过面向过程可以高效的解决问题
3. 把大问题分解为小问题解决,逐一把小问题解决,可以使问题简单化
4. 自上向下,一步一步解决问题,从整体角度看待问题,开发者可以更全面的考虑问题,对整个程序的逻辑结构清晰明了,作为独立的开发者而言,这样纵观全局的开发模式自然是合适不过了(但这也是它面对多人开发最大的弊端)

2、缺点:

代码语言:javascript
复制
1.在面向过程的时候,数据和操作往往都是分离的,如果数据的结构发生改变,操作数据的函数就必须重写,会产生巨大的代价。
2.数据不具有封装性,很多变量都暴露出来,容易被篡改,产生安全问题
3.在多人协作开发时,会产生标识符重名,每个人之间的项目逻辑不清楚
4.面向过程需要一个问题解决才能开始下一个问题,但是在多人协作开发过程中,这样的编程方式是一个巨大的阻碍。

为了解决面向对象的这也不足,面向对象编程思想产生了!

二. 面向对象

  1. 面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。现实中的基本单元的物体在程序中对应的基本单元就是对象。
  2. 面向对象可以理解为:将现实世界的事物抽象成对象,现实世界中的关系抽象成类、继承,帮助人们实现对现实世界的抽象与数字建模。
  3. 它将应用程序看成实现某些特定任务功能模块,其中子过程是实现某项具体操作的底层功能模块。在每个功能模块中,用数据结构描述待处理数据的组织形式,用算法描述具体的操作过程。
  4. 对象在程序中抽象为两个部分: 描述对象的状态或者属性的数据(变量) 描述对象的行为或者功能的方法(函数)

以上内容部分取自百度百科


用面向过程的方式解决问题的思路:
  1. 实现一个类,这个类里面封装好了,需要解决这个问题的数据和方法通过类实例化一个对象,然后调用对象的功能。
  2. 分成各个对象解决问题,没有合适的对象就生成一个对象。

对于面向对象的现实分析:我们依然用Minercraft来举例

这次我们要实现的不再是向火把这样简单的东西!

我要用红石电路做个CPU出来!!! (卑微劝退)

我要用红石电路做一个简单的永动机

如果我们依然用面向过程来解决这个问题!

分析问题:Minercraft中制作永动机

处理流程:首先我们应该采集材料红石矿,然后获取,红石粉,制作各种红石原件,而制作每个红石原件再分为小问题解决,解决之后收集制作各种电源类原件,导线类原件,用电器原件,如果没有这些我们都不能开始正式的制作,现在你建立了一个服务器,好朋友们来帮助你一起完成这个永动机,你让好朋友去做这些原件,但是好朋友却迟迟等不来你的原材料,这就是弊端。

编程逐渐成熟起来,我们的服务器MC世界也已经很成熟了,我们所需求的促使我们应该开始采用面向对象了

此时我们服务器的MC世界已经很成熟,我们的服务器也已经有了很多的玩家,在这个MC世界有一个庞大的管理系统,我们的向往更优质的设备,此时我们希望制作一个计算机,在我们这个庞大的管理系统(项目)中,给每一个玩家设置了一个任务,还有高级的玩家作为管理者,分别管理不同的职务,低级玩家去负责采集给对应的管理者提升自己,经过发展我们的世界存储这许多的库存,已经有了显示器等科技,当新的科技需要完成时,我们不在需要从原材料开始,我们可以通过获取显示器等——调用类对象,把这些低级科技变成高级科技,同时我们的每一个人都在同时工作,在这里显示器是对象,计算机也是对象。如果我们在MC世界有一个小的动车,我们需要一个大的能运送多个人的货运车,我们不需要重新做一个车,车的结构已经有了(我们继承!),发动机不够就加(引入对象2级发动机),轮子不够就加(引入对象轮子),而这些轮子和发动机是在你做货车之前就已经准备好了的!你要用就给你(给你接口),但是你所要操作的是改装,轮子是怎么做出来的你不需要知道,你也无法直接去改变轮子大小(私有),这是另一个玩家针对轮子这个对象应该考虑的。

面向对象的特点:

对比上面流程中小括号的关键词,看看是否理解

代码语言:javascript
复制
    1、面向对象将数据和行为结合在一起,共同来表达一个数据。
    2、在面向过程中,数据和行为是分开的,当问题比较复杂或涉及多开发,那么会导致拓展和维护很困
难。而面向对象能解决这个问题,问题会被分解为一个个的对象,每一个对象有独立的数据和行为,修改或拓
展某一个对象时并不会影响到其他对象。
    3、面向对象的封装性、继承及多态。
        ①封装:封装就是将属性(数据)私有化,提供公有的方法(行为)访问私有属性。通过封装可以对
对象属性进行存取限制,提高了程序的维护性。
        ②继承可以在原来的对象基础上很快的产生新的对象,新的对象是一个全新的个体,但又有原来对象
的特性。如同现实生活中的父子继承,儿子是一个新的个体,但又继承了父亲这个个体的特点,比如:外貌,
性格。
        ③多态是面向对象思想的核心。做到同一个接口,使用不同的实例就能去执行不同的操作。方便了程序的
设计。
    4、面向对象编程可以使代码维护方便、可扩展性好、支持代码重用技术
    5、对象唯一性:每个对象都有自身唯一的标识,直到毁灭。
    6、将具有一致性的属性和行为的对象抽象成类。
高内聚低耦合:

高内聚低耦合是判断软件好坏的一个标准,多用于面向对象程序设计。

内聚:每个模块在项目中的独立程度,不依赖于模块外部代码;

耦合:模块与模块之间接口的复杂度,越复杂,耦合度越高;

高内聚:尽可能类的每个成员方法只完成一件事(最大限度的聚合);

低耦合:减少类内部,一个成员方法调用另一个成员方法;

也就是说一般情况下内聚与耦合成反比例;

良好的程序习惯应该尽可能的保证高度的”高内聚低耦合“

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/03/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • c++_两大编程思想:面向过程与面向对象 ——初识面向对象
    • 一. 面向过程
      • 二. 面向对象
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档