我们的实验环境以及初见 OOP

考虑到有的同学没有 iPhone,但学习 Swift 语言大家至少都会有 OS X 操作系统,我们的代码演示都会在 OS X 下完成,使用 CLI 界面。这样虽然又显得古老了,但相信我去掉 GUI 会让你省心不少——因为那又是另一回事了。

那么现在,让我们来和 OOP 问个好

我们来看看,用 OOP 进行开发到底会是个什么样子?

考虑到我们现在并没有很高的开发水平,那么我们把所有的功能实现走用输出文字代替,仅仅来演示“开发”这个过程本身。

老板出现了

“我们这次要做一款手机!”

好吧,我们来开发一个手机:

你看,我们的手机系统有四个方法可以使用?

“我们的二代产品要能够上网!”

好吧,我们再开发一个手机出来:

“我们的三代产品要有 Wifi !”

好吧,毕竟老板是给你钱的人,我们再来一次吧:

“你可以回家了。”

好吧,以上三个手机的代码无论给谁看了都会揪心——冗余的部分太多了——我们做了那么多的无用功!难怪会以和老板争吵薪水最终被炒为结局。

这时候只听天空 Duang 的一声,OOP 驾到,让我们来看看面向对象是如何救场的:

抽象父类

我们说手机三代都有开机关机打电话和发短信的功能,那我们就开发一个类,把它们抽象出来:

“你这样做然并卵!”(老板你别急)

有了这个基础,我们从 CellPhone 继承子类,每一个子类都有父类的全部功能,我们只要再加上额外的功能就好了:

看吧?这样就节省了大量的重复开发时间!

“别高兴的太早,我还要开发平板电脑!”

我们都知道其实平板电脑就是个大号的手机,那么我们只需要增加平板电脑的功能在手机上就好了,硬件换一下就 ok~

“我可不想让平板电脑代替了手机的位置,它们能上网但不能打电话和发短信!”

好吧,我们把打电话和发短信的功能重写一下:

好了,现在平板电脑诞生了。

“哼,我要全部的设备都能开机带声音!”(老板你这是斗气啊~~)

不过没有关系,不要撸起袖子准备大干一场——重构整个系统是不必要的。

好了,我们只要更改了父类的开机方法,所有子类就都有了这个功能。

 

总结

好吧,整体来说我们这个栗子不是很恰当,但并不妨碍我们领会 OOP 的内涵不是吗?通过继承和重写等 OOP 的机制,我们可以很快速的基于以前的基础搭建上层建筑。而且有类型的规定,我们也可以很方便的修改以前的代码而不必影响到后续的代码。

尤其是在多人合作开发的时候,OOP 更是拯救了程序猿的生命,我们可以更加方便的使用别人已经开发写好的轮子(库),可以在某某不在的时候也可以继续开发。

 

不过,类和对象到底是什么呢?继承究竟是怎么运行的呢?我们下节课再来了解。

“我们的实验环境以及初见 OOP”的3个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注