# 企业级开发基础:面向对象
来源:互联网 发布:百度鹰眼轨迹数据 编辑:程序博客网 时间:2024/06/12 10:49
企业级开发基础:面向对象
本次以概念为主~是为了后面的所哟偶的开发进行一个理论性的铺垫,尽量总结的简单易懂,希望大家能够耐心看完
0.写在前面:关于类和对象的那些事儿
有了类和对象的概念之后,我们开始逐步引入面向对象的概念
我们知道在程序中通过对象将属于同一组的数据统一的管理起来,同时通过类型来定义我们项目中需要的数据类型,通过创建对象的方式来使用这些数据。
那么接下来,我们遇到一下几个问题?
- 什么时候需要定义类型?
- 定义类型需要初始化什么属性?定义什么方法?
- 什么时候通过类型来创建对象?
- 创建好的对象在项目中怎么使用呢?
以上四个问题,就是我们要通过面向对象来解决的问题了
1.面向对象
1.1面向对象程序设计的由来
~编程语言的发展
程序设计这东西一开始出现,是按照人类的语言习惯,将尽量符合人类语言结构的语法结构来实现的功能,然后通过各种软件环境【xx语言编辑器、xx语言解释器】将这样符合人类语言的语法编译或者解释成计算机能认识和执行的语言去执行并实现功能的过程,于是出现了高级语言。
~面向过程的程序设计
高级语言出现之初,程序设计的思路,也是参考人类解决问题的思路;
遇到一个问题,人类习惯性的思维方式第一步做什么、第二步做什么、紧接着做什么,这样按照一定的步骤一直到实现最终想要的功能。
这样的按照事情/功能的处理过程和步骤来进行程序的设计和开发的过程,是一种解决问题的思路,我们称之为:面向过程的程序设计
~面向过程程序设计的缺陷
面向过程的程序设计发展了一定的时间过后,我们发现出现了一个非常重要的问题,比如当仅仅是处理某一个功能的流程而言非常适合,但是如果一旦涉及到业务过程比较复杂的系统来说的化,面向过程的思路设计的程序出现了大量的代码冗余、同时不同的功能之间的冲突随着系统功能的增多冲突越来越多,另外当系统中的某些功能如果需要升级或者涉及改动,会涉及到大量的代码改动和功能的影响造成维护的不方便
~正当对的时间,正当对的地点,我遇见了你:面向对象
这时候,一帮大佬们围坐在一起,开始商量怎么样让我们的程序更加适合开发结构完整、流程复杂的系统项目呢!
有人提出了,我们的程序,其实一直都是在模拟正常人的思维逻辑的,小功能的处理就像我们处理意见小事件一样,可以按照步骤进行处理,也就是按照面向过程的实际思路进行处理;
一个相对较大的系统的设计,就类似让一个人当国家领导人,怎么规划国家的各个机构;或者让一个人开一家公司,规划公司的部门结构;或者就简单的让一个人管理自己的家庭,规划家里的房子、柜子、桌椅板凳等等各种东西的归置一样;如果能做到这一点,符合如正常人的思维逻辑的程序设计思路不久出现了么!!!
~人之初,性本善
面向对象,按照系统的需要,将系统中用的到的各个数据封装成独立的对象,通过对象之间的互相协作,来完成一个功能的过程:成为面向对象的程序设计。
简单看一下面向对象程序设计的思路
实现这样一个业务:我陪女朋友去看电影
- 面向对象的设计思路
1~我带着女朋友出发;
2~到电影院选电影、选座、买两张票;
3~进放映厅,看电影;
4~看完电影,回家。 - 面向对象的设计思路
1~抽取对象:我、女朋友、电影院
2~抽取对象的属性:我(看电影的行为,买票的行为)、女朋友(看电影的行为),电影院(卖票的行为、放电影的行为)
3~我【对象】的<看电影>的方法调用 女朋友【对象】的看<看电影>的方法,然后调用我【对象】的<买票>的方法,在<买票>方法中调用电影院【对象】<卖票>的方法,最好完成我和女朋友看电影这个功能
乍一看,面向对象怎么这么复杂,还是面向过程的程序简单易懂
此时~如果小明和他女朋友也想去看电影,你会想象得到,上面的程序会出现什么样的问题
面向过程:重新编写上面的所有代码来完成小明和他女朋友看电影的过程
面向对象:创建一个小明对象、创建一个小明女朋友对象,调用函数功能实现。
现在,想象一下面向过程那么多代码重复写,想象一下创建一个对象的语法,哪个更简单呢?
1.2.面向对象程序设计的特征
面向对象在实际项目开发中,为了更符合人类的语言习惯和认识这个世界的思维方式,给这样的程序设计添加了一些特殊的处理让开发人员更加容易理解,同时提高了程序的健壮性、可扩展性和可维护性等
面向对象程序设计有三个最主要的特征
- 封装
- 继承
- 多态
这三个特征主要含义如下:
1.封装:将对象的敏感的信息封装在对象的内部,不让外部直接访问,提高数据的安全性
2.继承:通过继承关系,梳理对象和对象之间的关系,同时提高了程序设计功能的强大的扩展性和代码的复用性
3.多态:程序在运行过程中,实时根据不同的数据执行不同的处理逻辑站线不同的状态,让程序的功能更加的完善健壮
关于面向对象的特征前面的文章中有提到,后边也会进行详细的介绍
在实际项目开发中,面向对象程序设计可定不会像上面描述的那样来处理这样的问题,不过对于新手来说理解上还是存在一定的难度的。
古人说,杀鸡焉用牛刀,同样的,我们的面向过程/面向对象等等各种编程思想,也是根据实际项目处理的功能场景来进行操作的,切记不能一棍子打死就认定了面向对象比面向过程好或者反之。
比如:就是在页面上打印一行信息或者处理一个简单的功能流程,用面向对象写了三五十行代码没有什么太大的意义,用面相过程几行代码就能搞定就OK了;如果要开发一个完整的具有复杂业务处理的系统,此时就需要主要使用面相对象来进行设计开发,系统中的功能处理的细节之处还是使用面向过程进行处理;
所以~针对项目中的不同的功能场景,灵活使用学习过的编程思想才是程序设计的王道,当你写代码积累项目开发经验到一定程度,就不会再去思考面向过程面向对象的概念了,因为你的经验已经积累成你自己的开发思想了,这个时候,写 就OK了。
- # 企业级开发基础:面向对象
- 我与python约个会:24. 企业级开发基础5:面向对象特征(封装)
- 我与python约个会:23. 企业级开发基础4:面向对象
- 我与python约个会:25. 企业级开发基础6:面向对象特征(继承)
- 我与python约个会:26. 企业级开发基础7:面向对象特征(多态)
- 我与python约个会:27. 企业级开发基础8:面向对象扩展
- iOS开发-Day13-OC基础、面向对象
- PHP面向对象开发基础与实例
- 我与python约个会:22.企业级开发基础3:类和对象
- 面向对象(面向基础)
- Iphone开发基础篇(二)-ObjectC之面向对象
- IOS开发之路-Objective-C 面向对象编程基础
- 浅谈Ios开发之Objektiv-C基础面向对象
- JavaScript 面向对象开发知识总结基础篇
- 蓝鸥Unity开发基础——面向对象
- JavaScript 面向对象开发知识总结基础篇
- 后台开发学习(九)PHP面向对象基础
- Java中的基础----编程规则,开发原则,面向对象设计原则、面向对象的特征
- BrainFuck语言的解释器(java实现)
- Java 多态中的类型转换(instanceof)
- Java实现--线程间通信问题案例
- python3+ 和 Python2+的一些区别
- Solr+MMSEG4J的简单学习
- # 企业级开发基础:面向对象
- 学习 shell —— 编写基本脚本
- Java面试题全集(下)
- Stacktrace:] with root cause java.lang.NullPointerException 【jsp】
- 第6章 输入输出
- java程序员38道常规面试题
- Android Studio Error:Connection timed out: connect.异常
- Leetcode:evaluate-reverse-polish-notation
- 今日头条(Java后台研发)-一面挂