首页 > 其他分享 >面向过程与面向对象——初步总结

面向过程与面向对象——初步总结

时间:2022-12-01 23:11:07浏览次数:38  
标签:总结 对象 子类 复用 面向对象 面向 过程

面向过程与面向对象

    各位读者朋友,我是你们的好朋友IT黑铁,最近巩固面向对象的过程中,想要总结一直模糊的编程思想之间的区别,如下是我如今技术水平所能感受到的,后续成长后会再次修正。若有错误,请多指教!

1.    核心思想区别

面向过程是关注过程的实现,侧重于算法;而面向对象是关注参与系统构成的对象元素,并且较为关注对象的内部构成,即面向对象侧重于数据。

面向过程举例:完成一个程序,先去思考从输入到输出的实现流程,虽然可以说是只写了粗略的函数声明,重要的数据元素也用了结构体包装,其他的数据结构程序员根本不关心,用到的时候再去临时添加。

面向对象举例:完成一个程序,先去思考参与整个流程的数据对象,将其属性和行为抽象出来,虽然这其中可以受到设计模式的指导在抽象时就在考虑组织,但通常是最后才去考虑对象之间如何组织得到输出。

可以看出,面向过程注重的是算法思想,而面向对象关注的是数据类型的组成方式。

2.    封装与不封装的区别

在一个庞大的系统里,如果采用不封装的方式,将难以定位到一个数据和函数的位置。没有组织性,难以知道一个变量的具体含义(仅靠程序员的编程水平来规范是极不可靠的)。最不能接受的是函数与数据之间的关系难以界定,不能知道函数内部使用的数据是来自哪里,这样导致的后果是总是在找变量名是来自哪。并且其安全性也极差,因为没有针对数据的保护措施,信息暴露在视野里。

而若是采用封装,肉眼可见的就是组织层次分明,操作的单位不再是单个简单独立的数据结构,而是操作大粒度的对象。更像是以人的思维来完成工作,将每个实体抽象成类再派生成对象,一个对象里拥有的属性和方法都是它特有的,能够清晰的分清里和外,内部实现显而易见的就知道什么是外部的数据、什么是自己的属性,外部调用也能轻易分清调用的是哪个对象的方法。如果类抽象的程度好,那么在进行对象交互的设计时,层次结构就明显的能够找到适合的解决方案,就像是水到渠成。另外它的关键字对数据进行了保护,隐藏了对象的成员,只提供对象接受的公共方法给外部调用,这也是我们非常想要的,它能阻止某些非法、错误的修改属性。

3.    代码复用的程度

在面向过程里,代码复用只能通过函数一个方式,缺少了对数据的复用,移植非常的困难。

而面向对象里,代码复用程度就让人感到愉悦。将对象抽象成类,从类派生一个新对象,尤其简单,就能得到一个预想的毫无差别的对象。面向对象的继承特性,使代码复用再提升一个阶层,正如其名,体现对象间的父子关系,子类继承父类的特性,无需重复编码父类的特性,只用关注自己要扩展的。为了让懒惰的程序员不用编码相同的地方,他们又设计了通用编程,在C++里称作模板,在Java里称作泛型,它不关注数据类型,任一数据类型都用相同的代码,通过编译器将他们隐式转型,当然也可以显示地指定转型,这种技术广泛应用于容器技术。

4.    多态造就的易扩展和灵活性

面向对象的封装和继承引入了面向过程没有的、设计者最想要的多态性。

虽然多态包含以下两种情况:

      函数(或方法)的重载

      接口继承子类实现的多态

第一种情况面向过程也有,是对相同函数名不同参数列表的重载,这里主要说的是第二个。在设计模式里常用的、推荐的就是接口继承,接口继承,使后续扩展留足了空间,新的类只需继承接口,在自己的类里重载抽象方法,由于子类属于父类的派生类,可以向上转型,在调用时使用父类调用方法,执行不同的子类实现。这样带来的好处,让增加新功能时,不用改动原有代码,只使用自己的类,灵活多变,易扩展。

标签:总结,对象,子类,复用,面向对象,面向,过程
From: https://www.cnblogs.com/itdaling/p/16943087.html

相关文章

  • 局部波动率建模文献总结
    目录局部波动率建模文献总结概述策略1总结策略2总结策略3总结策略4总结策略5总结策略6总结策略7总结参考文献局部波动率建模文献总结概述求解局部波动率......
  • 实践案例:同程艺龙网的 Dubbo 升级经验总结
    本篇为同程艺龙旅行网ApacheDubbo的实践案例总结。感兴趣的朋友可以访问官网了解更多详情,或搜索关注官方微信公众号ApacheDubbo跟进最新动态。作者信息:严浩:同......
  • 阿里大牛总结的Netty最全常见面试题
    Netty总算总结完了,小编也是长舒了一口气。有太多读者私信我让我总结Netty了,因为经常会在面试中碰到Netty相关的问题。全文采用大家喜欢的与面试官对话的形式展开。......
  • UITableView 基本使用方法总结
    UITableView 基本使用方法     1. 首先,Controller需要实现两个 delegate,分别是 UITableViewDelegate和 UITableViewDataSource   2.然后UITableVie......
  • Mac开发利器之程序员编辑器MacVim学习总结
    Emacs和Vim都是程序员专用编辑器,Emacs被称为神的编辑器,Vim则是编辑器之神。至于两者到底哪个更好用,网络上两大派系至今还争论不休。不过,相比之下,Emacs更加复杂,已经不能算是......
  • 计算机视觉岗暑期实习应聘总结
    找实习感想找实习建议面试过程建议计算机视觉岗找实习心得计算机视觉面试问题分类总结已面试的公司和进展实习面经找实习感想从4月1日开始找实习,到5月13日收到南......
  • Application总结
    通过Application来进行一些,数据传递,数据共享等,数据缓存等操作。当android程序启动时系统会创建一个application对象,用来存储系统的一些信息。通常我们是不需要指定一个Ap......
  • Intelij idea 2022.2.3安装过程总结
    参考教程:https://www.exception.site/essay/idea-reset-eval详细安装过程参考了以上教程,本文对博主自己安装时遇到的问题进行总结。1.安装过程概述安装过程参考教程,一直......
  • Python高级-面向对象设计-笔记
    继承-是基于Python中的属性查找(如X.name)多态-在X.method方法中,method的意义取决于X的类型封装-方法和运算符实现行为,数据隐藏默认是一种惯例参考实例腾讯即时通信模......
  • 【JVM故障问题排查心得】「内存诊断系列」JVM内存与Kubernetes中pod的内存、容器的内
    承接上文之前文章根据《【JVM故障问题排查心得】「内存诊断系列」JVM内存与Kubernetes中pod的内存、容器的内存不一致所引发的OOMKilled问题总结(上)》我们知道了如何进行设......