前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >「JAVA」面向对象、面向过程过招,程序设计思想孰高孰低

「JAVA」面向对象、面向过程过招,程序设计思想孰高孰低

作者头像
老夫编程说
修改2020-04-29 12:38:00
6430
修改2020-04-29 12:38:00
举报
文章被收录于专栏:Java 温故知新Java 温故知新
软件工程
软件工程

软件,是个和抽象的概念,它不受物质物质材料、物理定律的制约,对每个人、每天都是如此重要,以至于每个人、每天都离不开它,打开手机就能使用,又好像是时时刻刻都能触摸到的;

软件的种类有很多,从操作系统(android、ios、windows、Linux、Mac OSX)到,运行于操作系统的客户端软件,其实操作系统也是一个大型软件;再从简单的嵌入式操作系统到连接全球的巨型信息系统,有着各式各样的软件。

面向过程

面向过程:一种早期的编程思想,是站在过程的角度思考问题,强调的就是功能行为,单个功能的执行过,一步一步先干什么,后执行啥;每一个功能或者每一步我们都使用函数(区别于面向对象中的方法)来实现,程序执行的时候依次调用函数就OK了。

在面向过程的程序中,其中最典型的便是C程序了,最小的程序单元是函数,每个函数负责一个功能,接受输入数据,函数对数据进行处理,最后输出结果数据,反馈执行是否成功。

整个程序由一个个的函数组成,其中作为程序入口的函数称之为主函数,主函数一般命名为main,主函数依次调用其他函数,其他函数之间也可以相互调用,从而实现整个系统功能。

面向过程的设计
面向过程的设计

面向过程的设计

面向过程的设计,是采用自顶而下的设计方式,在设计阶段就需要考虑每一个模块应该分解成哪些子模块,与哪些模块关联,每一个子模块又细分为更小的子模块,依次类推,直到完成整个软件的所有功能。

面向过程的设计直观,执行效率高,但也存在不少问题:

  1. 设计不符合人类思维,容易把简单的功能复杂化;
  2. 系统软件适应性差,可拓展性差,可维护性低;
  3. 重用性低,往往因为细微的差别就重写函数;
  4. 随着系统的壮大,功能越来越复杂,会导致系统臃肿不堪,最终崩溃;

为了解决面向过程中的一系列问题,重新提出了面向对象的软件设计思想。

面向对象

面向对象:基于面向过程的编程思想,站在对象的角度思考问题,我们把多个功能(或者操作)合理的放到不同对象里,把对象当作是一个整体,每个功能或者属性都是整体中的一部分,强调的是具备某些功能的对象。我们把具备某些或者某个功能的实体,称为对象。

面向对象的程序设计
面向对象的程序设计

面向对象更加符合人类的思维方式,稳定性好,可重用性强,易于开发大型软件产品,有良好的可维护性。面向对象将软件模块化,使用模块来封装细节实现,模块之间相互独立,互不干扰,轻松实现低耦合和高内聚。

面向对象三大特征

  • 封装(Encapsulation);
  • 继承(Inheritance);
  • 多态(Polymorphism);

封装:是指将对象的实现细节隐藏起来,通过公共的方法来向外暴露该对象的功能。

继承:是面向对象实现软件复用的重要手段,当子类继承父类后,子类便可以看作是父类的超集,能直接或间接获得父类的成员和操作,也能重新定义父类的操作,无须改变现有类,更能基于现有类拓展操作和属性,往其中加入新代码。

多态:是可以直接把子类对象赋给父类变量,但是运行时依然表现出子类的行为特征,这意味着同一类型的对象在运行时可能表现出不同的行为特征;从另一角度将接口和实现分离开来,其作用是消除类型之间的耦合关系。

抽象:从特定的角度出发,从已经存在的一些事物中抽取我们所关注的特性、行为,从而形成一个新的事物的思维过程,是一种从复杂到简洁的思维方式。

对象

对象:在面向对象的思想中,一切事物都可以认为是对象——万物皆对象,可以定义成包含状态和行为的一个实体,存在于现实世界中并且可以与其他物体区分开来的实际存在的个体,对象具有状态和行为;比如:想想你心仪的小姐姐,可以把这个小姐姐看作是一个对象,那么该对象有两方面的定义:状态和行为;状态,如身高,年龄,三围,头发(长发或者短发)等;行为,如调戏你、跳舞,玩手机等。

通过分析多个同类型的对象的状态和行为,可以把对象抽象成类(class);所以,对象(object)也称为类的实例(instance)。因此,我们把具有相同特性(状态)和行为(功能)的对象的抽象定义类,对象的抽象是类,类实例化后便是对象,也可以说类的实例是对象,类其实是对象的数据类型或者模板,创建一个对象,就是使用一个类作为构建该对象的基础,比如:手机工厂中使用模具批量手机,模具就是类,生产出来的一个个手机便是以类为模板创建出来的一个个对象。

二者依然很优秀

虽说如此,但千万别误认为面向对象一定就优于面向过程的设计,在当今互联网中,两者是共同存在的,相辅相成,各自都有各自的优势,各自都有各自的领域。

有趣的争论

在现实世界中有“先有鸡还是先有蛋”的争论,在编程世界也有类似的“先有对象,还是先有类”的问题,首先,类是对象的模板,也就是说类是自多个对象抽象而来的;但是如果没有类,又无法创建对象,这也是一个没有答案的问题。在实际编写程序时,又都是先有的类,再根据类创建对象。

第一个面向对象的语言

在面向对象领域,第一个是Simula-67面向对象的编程语言,Smalltalk是第二个,Smalltalk的设计深受Simula-67的影响,是一个很纯粹的面向对象编程语言,以至于后来的很多语言都深受其设计思想的影响,如C++、Java、C#、Ruby、Objective-C、Actor等。

完结。老夫虽不正经,但老夫一身的才华

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 老夫不正经 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面向过程
    • 面向过程的设计
    • 面向对象
      • 面向对象三大特征:
        • 对象
          • 二者依然很优秀
          • 有趣的争论
          • 第一个面向对象的语言
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档