1.为什么写简书?
作为一只程序猿,无时无刻的都需要更新自己的知识,在简书这个平台,很多大牛的文章也帮我解决很多遇到的问题。而作为一只菜鸟,本不应该出来“丢人现眼”,但在21世纪的今天,交流是很重要的,别人的一些意见也会帮助自己成长,“闭关锁国”终究只会限制自己,所以我就来发表自己的第一篇文章。
2.面向过程与面向对象
什么是面向过程,什么是面向对象,太过于理论化的就不说了,毕竟网上之于此的文章亦或是百科都会告诉我们,我就以一个比喻来浅谈自己对他的理解。
2.1.面向过程
在我的概念里,面向过程就像是一个隐居在深山里闭门不出的人,他要做什么都必须要自己干,比如他需要一张桌子,这是一个需求,他要完成这个需求,他得自己找材料,自己制作,自己刷漆,他通过一系列的行为完成了一张桌子这个需求,在这个需求中,他得学习很多东西,像如何选材,如何制作,如何刷漆之类的。下次他还要制作一张床,他得按照整个流程再来一遍,还得学习新的知识
2.2.面向对象
面向过程就像是我需要一张桌子,我去找家具店买,家具店给了我一张,我只需要有一个家具店对象,他就能给我这张桌子。家具店需要一张桌子,家具店可以找木匠制作,家具店只要有一个木匠对象就能有一张桌子,家具店不需要知道桌子的制作,只需要有一个木匠对象,以及负责给客户桌子。木匠想要一张桌子,需要材料,需要负责向木材店购买,木材店会负责提供好材料交给木匠,木匠只需要告诉木材店需要什么样的木材,木材店就提供给木匠木材。以此类推,下次我要一张床,只要负责告诉家具店我需要一张床,其他的事我并不关心。我们把特定的事交给特定的一类人去干,这个就是面向对象一个思路了。
2.3.面向对象与面向过程的区别
如上面的例子,面向过程所做的事是一次性的,制作家具的过程如果是通过面向过程,那么每有一个需求都需要再一次的把过程再走一遍;而面向对象就是,我不需要关注制作的流程,只要我有一个家具店对象就能帮我完成这些事,其他的我并不需要关心。面向过程就像是一个刚刚新起的事物,没有分工,什么都要一开始的那批人去做,而面向对象就是这个事物日趋成熟后,分工明确,特定的人去处理特定的业务逻辑。有一句话叫做“万物皆对象”,因为万物都有其特征(属性),有其可以做的事(方法),都可以在某一个需求中成为某一环节必不可少的。
3.类与子类
我们如何去获取一个对象,一般是通过一个类去创建,那么为什么要通过类去创建对象?同样,接下来以举例、抽象的方式来谈谈本人对类与子类的看法。
3.1.类
类是用来创建对象的,类里面描述了这个类创建的对象能干什么,有什么属性,而能干什么往往又取决于属性。比如,程序猿就是一个类,称为程序猿类,程序猿可以敲代码,可以帮助写软件,解决问题,他们有一些特征,加班、熬夜、喜欢钻研,他们分等级,不同等级的程序猿完成任务的能力不一样。我们在类中用很多的方法及属性描述了程序猿这个集体,当需要一个程序猿时,得招一个(这边的招类比为用程序猿类创建),那么那个招的程序猿就有了这些属性和方法,以后就可以让这个程序猿去写软件、编代码、完成需求,假如有一天,发现这个程序猿不能满足一些需求,然后又招了一个,这个等级更高一点,经验更丰富点,比那个更爱钻研,可以完成需求。但随着时间的推移,原来那个不能完成需求的程序猿慢慢的成长,能力变强,也能满足需求了,可以理解为原来那个程序猿对象的属性在改变......也就是,现在有两个程序猿,这两个程序猿是对象,是用程序猿类创建的,那么程序猿类就描述了程序猿集体所共有的属性及方法。
3.2.子类
以上面的例子继续讲子类,随着时代的发展,编程语言增多,平台增多,程序猿这个类往往不能很细致或者说很好的概括程序猿这个集体。于是就有了Java程序猿,PHP程序猿,C#程序猿,Android程序猿,iOS程序猿......他们都有共性,都继承自程序猿类,有程序猿的一些特征和能力,但他们也有区别,有自己的属性,有自己的方法。比如,作为程序猿类的子类,他们都爱钻研,都会敲代码,都会加班,都会熬夜。而作为不同的类他们也有区别,他们使用的编程软件可能不同,软件的运行平台可能不同,他们的属性也可能不同,比如iOS程序猿的设备是Mac而其他程序猿类的设备是windows。而这些细致的区分也可以让人力资源管理的人方便,他们需要做什么软件,就去找对应类型的程序猿,其他的不需要他们管,只要创建对应类型的对象完成对应的功能就好了。