面向对象的思想

编程思想:面向过程——>面向对象

当下大多数编程语言都是面向对象编程的思想,在没有提出面向对象这个思想之前,大多数人都是采用面向过程编程。


 面向过程

面向过程的思想,就如同我们人正常思考去如何做一件事的思考方式一样。

举例说明面向过程的思考方式:

结论:面向过程面向的是完成这件事的过程,强调的是完成这件事的动作。


 为何要从面向过程转向面向对象

继续上面把大象塞进冰箱里的例子,我们来按照面向过程的步骤来实施这件事情,举例说明如下:

1.张三把大象塞进冰箱里:

张三,是个比较身材瘦小的人

张三踩着板凳打开冰箱门,张三找了一位大力士将大象塞进了冰箱,最后踩着板凳关闭冰箱门。

 

2. 李四把大象塞进冰箱里:

李四,天生力大无穷高大威猛

李四无需依靠其他工具直接打开冰箱门,李四徒手一人举起大象塞进冰箱,然后自己关上冰箱门

 

以上的例子可以看出,“把大象塞进冰箱里”这件事却因为不同的人不同的情况,事情原本的处理的方式也发生了变化。

我们可以得出一个结论:

如果我们用面向过程的思想来解决这件事,当执行这件事的人具有不同的情况和差异的时候,我们需要为每个不同的人所产生的差异来做针对性的处理。同理,将面向过程的编程方式带入到实际的开发中,我们开发的某一个功能模块可能适用于当下的阶段,当随着软件的使用新的业务需求就会随之而来,如果我们只按照当前的情况以面向过程的思想去实现功能,在面临改动面临变化的时候,就要不断去改动功能的代码去适应新的变化。

这样的方式,会投入很大成本和精力,而且随着功能不断的复杂度,在面临新的需求来时,改动将更加困难,所谓牵一发动全身。


 面向对象

面向对象的思想的理解,是随着在不断的实践、不断的编码的过程中慢慢渗透掌握的。

我个人觉得评判一个人的编程能力高低,就可以看他对面向对象编程掌握和理解的程度如何。

继续“”把大象塞进冰箱里“的例子,使用面向对象的思想模拟实现过程:

1.既然语义上强调对象,所以我们经常遇到的问题就是找对象,找对象帮忙做事:

2.抽取共性(不变的),屏蔽差异(变化的),具有被动型,因为这样才具用通用性不惧变化:

执行者:执行做事的人肯定是不定的,变化的。

大象和冰箱:目的是塞进冰箱,即冰箱是一个被动者。后期也许不光是塞大象,可能会塞老虎。

冰箱贯穿整件事,出现在每个步骤,所以,这里可以指定冰箱作为对象完成这件事。

 

把冰箱作为对象完成,”把大象塞进冰箱里“这件事的方式:

1.冰箱门可以被打开

2.大象可以被塞进冰箱里

3.冰箱门可以被关闭

 

两者思考的对比:

面向对象:意在写出一个通用的代码,抽取共性(不变的),屏蔽差异(变化的)。

 

总结:

  当我们要以面向对象的思想去实现功能的时候,首先想着的是找对象来帮着做事情,而且要找被动型的对象,其他的变化都可以抽象出对外的接口。

  就好比如笔记本电脑USB就是一个很好的面向对象的设计思想,很早的时候笔记本没有考虑到其他的更多的外界设备,而是只设定了几个固定常用的接口,如鼠标、网线。随着科技不断的更新,外界设备接踵而来,所以为了屏蔽差异就对外设定USB接口这种形式,笔记本不管要接入什么设备,只要设备满足USB的标准就可以对接。

 

转载于:https://www.cnblogs.com/green-jcx/p/9377898.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值