23. 企业级开发基础4:面向对象

本节课程,概念为主~是为了后面的所有的开发进行一个理论性的铺垫,尽量总计的简单易懂,希望大家能耐心看完。

0.写在前面:关于类和对象那些事儿

有了类和对象的概念之后,我们开始逐步引入面向对象的概念 我们知道在程序中通过对象将属于同一组的数据统一的管理起来,同时通过类型来定义我们项目中需要的数据类型,通过创建对象的方式来使用这些数据。

那么接着上节课的内容,我们遇到了一下几个问题

  • 什么时候需要定义类型?
  • 定义类型需要初始化什么属性?定义什么方法?
  • 什么时候通过类型来创建对象?
  • 创建好的对象,在项目中怎么使用呢?

以上四个问题,就是我们要通过面向对象来解决的问题了

1. 面向对象

1.1. 面向对象程序设计的由来


~编程语言的发展 程序设计这东西一开始出现,是按照人类的语言习惯,将尽量符合人类语言的语法结构来描述要实现的功能,然后通过各种软件环境[XX语言编译器、XX语言解释器]将这样符合人类语言的语法编译或者解释成计算机能认识和执行的语言去执行并实现功能的过程,于是出现了高级语言。


~面向过程的程序设计 高级语言出现之初,程序设计的思路,也是参考了人类解决问题的思路; 遇到一个问题,人类习惯性的思维方式是第一步做什么、第二步做什么、紧接着做什么,这样按照一定的步骤一直到实现最终想要的功能。 这样的按照事情/功能的处理过程和步骤来进行程序的设计和开发的过程,是一种解决问题的思路,我们称之为:面向过程的程序设计


~ 面向过程程序设计的缺陷 面向过程的程序设计发展了一定的时间之后,我们发现出现了一个非常重要的问题,如果仅仅是处理某一个功能的流程而言非常适合,但是如果一旦涉及到业务过程比较复杂的系统来说的话,面向过程的思路设计的程序出现了大量的代码冗余、同时不同的功能之间的冲突随着系统功能的增多冲突越来越多,另外当系统中的某些功能如果需要升级或者改动,会涉及到大量的代码的修改和功能的影响造成维护的不方便


~正当对的时间,正当对的地点,我遇见了你:面向对象 这时候,一帮大佬们围坐在一起,开始商量怎么样让我们的程序更加适合开发结构完整、流程复杂的系统项目呢! 有人就提出了,我们的程序,其实一直都是在模拟符合正常人的思维逻辑习惯的,小功能的处理就像我们处理一件小事一样,可以按照步骤进行处理,也就是按照面向过程的设计思路进行处理; 一个相对较大的系统的设计,就类似让一个人当国家领导人,怎么规划国家的各个机构;或者让一个人开一家公司,规划公司的部门结构;或者就简单的让一个人管理自己的家庭,规划家里的房子、柜子、桌椅板凳等等各种东西的归置一样;如果能做到这一点,符合正常人的思维习惯的程序设计思路不就出现了么!!!


~ 人之初,性本善 面向对象,按照系统的需要,将系统中用到的各个数据封装成独立的对象,通过对象之间的互相协作,来完成一个功能的过程;成为面向对象的程序设计。 简单看一下面向对象程序设计的思路 实现这样一个业务:我陪女朋友去看电影

  • 面向过程的设计思路: 1~我待着女朋友出发; 2~到电影院选电影、选座、买2张票; 3~进放映厅,看电影; 4~看完电影,回家。
  • 面向对象的设计思路: 1~抽取对象:我、女朋友、电影院 2~抽取对象的属性:我(看电影的行为,买票的行为),女朋友(看电影的行为),电影院(卖票的行为、放映电影的行为) 3~我[对象] 的<看电影>的方法中调用 女朋友[对象]的<看电影>的方法,然后调用我[对象]的<买票>的方法,在<买票>方法中调用电影院[对象]<卖票>的方法,最后完成我和女朋友看电影这个功能。

乍一看,面向对象怎么这么复杂,还是面向过程的程序简单易懂 此时~如果小明和它女朋友也想去看电影,你会想象得到,上面的程序会出现什么样的问题 面向过程:重新编写上面所有的代码,来完成小明和它女朋友看电影的过程 面向对象:创建一个小明对象、创建一个小明女朋友对象,调用函数功能实现。 现在,想象一下面向过程那么多代码重复写,想象一下创建一个对象的语法,那个更加简单呢?

1.2. 面向对象程序设计的特征

面向对象在实际项目开发中,为了更加符合人类的语言习惯和认识这个世界的思维方式,给这样的程序设计添加了一些特殊的处理让开发人员更加容易理解,同时提高了程序的健壮性、可扩展性和可维护性等

面向对象程序设计有三个最主要的特征

  • 封装
  • 继承
  • 多态

这三个特征主要含义如下: 1.封装:将对象的敏感的信息封装在对象的内部,不让外界直接访问,提高数据的安全性 2.继承:通过继承关系,梳理对象和对象之间的关系,同时提高了程序设计功能的强大的扩展性和代码的复用性 3.多态:程序在运行过程中,实时根据不同的数据执行不同的处理逻辑展现不同的状态,让程序的功能更加的完善健壮

后续的课程中,会对面向对象的特征进行详细的介绍。

在实际项目开发中,面向对象程序设计肯定不会像上面描述的那样来处理这样的问题,不过对于新手来说理解上还是存在一定的难度的 古人说,杀鸡焉用宰牛刀,同样的,我们的面向过程/面向对象等等各种编程思想,也是根据实际项目处理的功能场景来进行操作的,切记不能一棍子打死就认定了面向对象比面向过程好或者反之。 比如:就是在页面上打印一行信息或者处理一个简单的功能流程,用面向对象写了三五十行代码没有什么太大的意义,用面向过程几行代码搞定就OK了;如果要开发一个完整的具有复杂业务处理的系统,此时就需要主要使用面向对象来进行设计开发,系统中的功能处理的细节之处还是使用面向过程进行处理; 所以针对项目中的不同的功能场景,灵活使用学习过的编程思想才是程序设计的王道,当你写代码积累项目开发经验到一定程序,就不会再去思考面向过程面向对象的概念了,因为你的经验已经积累成你自己的开发思想,一个字写,就OK了。


本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏诸葛青云的专栏

系统学习C语言方法大全

很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个高级编程师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语...

17300
来自专栏PHP在线

如何学好数据结构和算法

数据结构和算法是计算机科学中最重要的课程,作为一名Google的软件工程师,我经常看到一些求职者或刚毕业的学生,他们对于数据结构和算法的学习是远远不够的。这不是...

35960
来自专栏钱塘大数据

一文总结学习 Python 的 14 张思维导图

大数据时代,数据是智能世界的土壤,发达的数据文明孕育于此之上。但大数据只是一种资源,它告知信息但不解释,只有学会深耕这片土地,真正挖掘到深埋土壤之下的数据金矿,...

51480
来自专栏青青天空树

生理周期(c++实现)

描述:人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23 天、 28 天和33 天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面...

11120
来自专栏技术小黑屋

Java程序员必读的9本书

本文列出的9本书在Java程序员界都是被认为很棒的书。当一个程序员开始初学Java时,他的第一个问题应该是如何选择一本书来作为指导学习Java。这个问题也就表明...

16520
来自专栏诸葛青云的专栏

转行的萌新如何学习C语言?应不应该跳过C直接入手C++呢?

很多人对学习C语言感到无从下手,经常问我同一个问题:究竟怎样学习C语言?我是一个高级编程师,已经开发了很多年的程序,和很多刚刚起步的人一样,学习的第一个计算机语...

17840
来自专栏企鹅号快讯

C语言到底有多牛!你知道多吗?

有人说C语言是世界上最牛逼的语言,因为操作系统就是用C语言编写的,学好了C才能更好的学习其他编程语言。为此,有人分享了下面一段代码,说是很牛逼的c语言代码,看得...

633100
来自专栏Python绿色通道

程序员最想拥有的编程语言,Python排第一!

根据 PYPL 发布的 7 月编程语言指数榜,Python 保持上涨趋势,8月流行指数再次上涨 5.5%,以 23.59% 的份额甩开 Java 排名第一,并逐...

16620
来自专栏calmound

匈牙利算法

今天学习了下匈牙利算法,发现这个早在几个月前学过的知识已经忘记的一干二净了,记得当初学习的时候只是看书,看论文,现在要好好的总结下,防止以后再次忘记。 此次总结...

49870
来自专栏北京马哥教育

7个案例15分钟让你了解Python套路!

古人云:书山有路勤为径 学海无涯苦作舟 。 注:一般标榜着 “ XX天学会XX”、“ XX 分钟了解XX”的文章都不会是让你增长功力的文章,如本文。 随着互联...

39260

扫码关注云+社区

领取腾讯云代金券