面向对象编程,你值得拥有
一、一个故事带你了解 面向过程 与 面向对象 的天差地别
你可能不知道的唐僧创业的故事
时代变了,守着铁饭碗过活的日子一去不复返了。唐僧越来越感觉生活不如意了,原来给人讲讲经就可以让自己的精神生活和物质生活得到极大的满足,现在不行了,现在是“酷”“富”“吐”这三类人生活得比较滋润。
酷,能唱的、能跳的、能吹的、能耍的,等等。只要你某一方面“酷”,就会有“粉丝儿”跟着,就会给你带来精神和物质的满足,这样的人生过得滋润。
富,即有本事赚钱的人。做个“传奇”游戏就能挣几千万,等等,各有自己的招,这样的人过得也得意。
吐,这是网络时代的新产物,能让大家为之吐槽的,像“哥哥”“姐姐”之类的,也能拿个头彩,过得逍遥。
唐僧琢磨了自己的情况,讲“酷”,不如孙猴子,怎么着都能“酷”出个样;讲“吐”,不如猪八戒,怎么着都能让人“吐”;又不想像沙和尚那样,一辈 子没啥大出息。看来只有赚个“富”字了。
于是,唐僧东拱西凑了5千块钱注册了一家公司,专营图书出版,也就是撺掇手里那些佛经。租了个小门脸,简单装饰了一下,就开始创业了。
第一天上班,感觉有点儿惨,光杆司令一个,但想到自己是老板了,还是有些得意,想着将来总会好起来的。
办公室既是营业厅,也是前台,坐在这里唐僧就开始琢磨了,该做点什么呢? 于是开始规划自己一天的工作了…
先打扫一下卫生间吧,擦擦玻璃,拖拖地,拾掇下桌椅。
刚收拾完,居委会大妈就来收垃圾处理费了,没办法,接待吧。给了钱,大妈还得唠叨几句,防火啊,防贼啊,好不容易把大妈给送走了。
接下来,该记账了,刚开业还没挣呢就花了一笔。
记完账,想想该给认识的人打个电话,也算招揽一下生意, 跑跑业务啊。 于是又打了一通电话,朋友大都很热情,很肯帮忙的样子。放下电话,唐僧又觉得啥事也没成。
到中午了,肚子开始闹情绪了,只好先安抚它吧,于是订了个盒饭吃了。
下午,唐僧百无聊赖地坐了会儿,想写点儿什么,没纸也没笔,想起来要买些办公用品,好歹是个公司啊。
买完东西,回来把账一记,时间也差不多了,就锁了门,结束了当老板的第一天工作。想想也挺好,至少自己的事自己说了算啊。
就这样,唐僧熬了三个月,每天上班,开门,打扫卫生,接待各方来的大爷大妈们,打电话联系业务,买东西,偶尔也去人才市场看看,找点儿当老板的感觉,虽然没钱招人,但总得准备着吧。日子很快就过去了,三个月一分钱没赚,倒贴出去两万块。
三不月后,猪八戒想要一套书送给“丝”儿们,这家伙几天的时间就把握住了大局,成了名副其实的“吐”星,也拥有了众多的“吐丝儿”。于是猪八戒想给他的众多“吐丝儿”点儿回报,就委托唐僧出了一本书, 要有点儿新意。这倒帮了唐僧,不但添了原有的窟座,还赚了不少。
更没想到从此一发不可收拾, 业务一单又一单,钱赚了一笔又一笔。唐僧现在最忙的不是业务,而是招聘人才。
先招个保洁,当老板了总不能自己打扫卫生吧,开门关门、打扫卫生、打水、送水都是保洁的事;再招个秘书,帮自己打理日常的业务,接电话,接待每天大爷大妈的事就归秘书干吧;再后来事情越来越多,秘书也忙不过来了,就招业务经理,招业务员,招保安,招财务,招人力资源经理。没两年的时间,公司已经有50多人了,唐僧自己也成了名副其实的百万富翁。
唐僧现在发现自己每天考虑得最多的问题就是人的问题。有人抱怨自己做的都是别人该干的事,有人抱怨别人不配合,有人抱怨别人抢了自己的事。在自己一个人的时候,一切都很简单,那时没有多少事情,所以怎么都行。现在再想单打独斗是不可能的了,现在最讲究的是管理,如何安排人,如何调整人与人的关系成为唐僧现在每天必须要解决的问题,以后公司的人还会更多,关系还会更复杂,公司也会发展得更大,这都是必然。
几年后,唐僧想自己也算小有成就,该参加个什么评选赛的。十大杰出青年是没份了,岁数太大。年度经济人物评选还不够资格,人家玩的都是亿。最后选来选去,选了最佳面向对象程序设计师。
二、面向过程到面向对象的思维转换
故事虽然没有什么现实意义,但却最好地解释了面向过程到面向对象的思维转换的过程。下面来具体分析面向过程与面向对象之间的区别。
(1)面向过程
面向过程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步步地实现,使用的时候一个一个依次调用。
面向过程考虑的是我们要做什么。就像没钱的唐僧,每天考虑的事就是做什么。如下所述:
(1)打扫卫生。
擦玻璃
拖地
拾掇桌椅
(2)接待客人。
接待居委会大妈
交垃圾处理费
把大妈给送走
(3)记账。
(4)跑业务,打电话。
(5)买办公用品。
(6)记账。
(7)下班锁门。
这就是一个典型的面向过程的生活。总体看下来,这一天是由七件事组成的,前两件事又是由若干件小事组成的。在面向过程的程序设计中,“事”是用函数来实现的,所以我们可以把没钱的唐僧一天的生活用程序描述如下:
void CleanTheWindow(){
}
void CleanTheFloor(){
}
void CleanTheDesk(){
}
void Takein(){
}
void Pay(){
}
void Packoff(){
}
void DoCleaning(){
CleanTheWindow();//清洁窗户
CleanTheFloor();//清洁地板
CleanTheDesk();//清洁桌子
}
void DoReception(){
Takein();//接待
Pay();//付款
Packoff();//送人
}
void KeepAccounts(){
}
void DoBussiness(){
}
void BuySomething(){
}
void LockTheDoor(){
}
void WorkofOneDay(){
DoCleaning();//保洁
DoReception();//接待
KeepAccounts();//记账
DoBussiness();//跑业务
BuySomething();//采购
KeepAccounts();//记账
LockTheDoor();//锁门
}
从上述一段代码可以看出:
一件事就是一个函数:
void KeepAccounts(){//记账
}
处理一件事就是调用一个函数:
KeepAccounts();//记账
几个小事执行下来就是一件大事:
void DoCleaning(){
CleanTheWindow();//执行清洁窗户
CleanTheFloor();//执行清洁地板
CleanTheDesk();//执行清洁桌子
}
(2)面向对象
面向对象是把构成问题的事务分解成各个对象。建立对象的目的不是为了完成一个步骤,而是为了描述某个事务在整个解决问题的步骤中的行为。
唐僧能从没有钱的老板转变成百万富翁,是因为他很好地遵循了面向对象的思想,并充分利用了它。一起来看看他是如何实现转变的:
(1) 招保洁。
开门关门
打扫卫生
打水
送水
(2) 招个秘书
打理日常的业务
接电话
接待大爷大妈
(3) 招业务经理
(4) 招业务员
(5) 招保安
(6) 招财务
(7) 招人力资源经理
到最后人员越来越多,公司也就逐渐壮大起来。而唐僧每天必须解决的问题变成了如何管理人,如何安排人,如何调整人与人的关系。现在我们一起通过程序来看看唐僧咋做的:
class Dustman{//保洁员
void openTheDoor(){//开门
}
void dightSanitation(){//打扫卫生
}
void acceptWater(){//打水
}
void givewater(){//送水
}
}
class Secretary{//秘书
void neatenOperation(){//打理业务
}
void liftTheTel(){//接电话
}
void receivePepole(){//接待人们
}
}
class OperationManager{//业务经理
}
class OperationEmployee{//业务员
}
class Triggerman{//保安
}
class Finance{//财务
}
class ResourceManager{//人力资源经理
}
可以看,面向对象是以功能来划分问题,而不是步骤。在程序中,可以用一个类来创建一个对象。比如保洁员类,就可以创建一个对象:
class Dustman{//保洁员
void openTheDoor(){//开门
}
void dightSanitation(){//打扫卫生
}
void acceptWater(){//打水
}
void givewater(){//送水
}
}
由于功能上的统一保证了面向对象设计的可扩展性,所以如果公司在后期继续壮大,出现一个国际交流中心,就可以这样写:
class ItnCommunionCenter{
}
三、总结
面向对象编程是Java得核心,它使得软件具有更强的适应能力,后续会写面向对象编程的三个重要原则:封装、继承、多态性。
学习从点滴开始,学到的东西可能会忘记,记得点赞收藏哦
System.out.println("我选择滑稽取宠");