面向对象编程理论基础

2023-09-08 18:23:34 浏览数 (1)

这节来给大家讲一下面向对象编程的理论基础,在这之前我先来给大家讲个故事:

热爱探索的星际流浪者西夏普某天,开着他的小破宇宙飞船来到了一个无名星球,像往常登陆某个星球一样,他准备先围绕星球环行一周再着陆。就当他环行到一半的时候,突然飞船探测到此星球有一处上古遗迹,西夏普大喜过望,立马向那处遗迹飞去。

在遗迹中一番探索后,西夏普发现了一堆上古文明留下来的制作光速飞船的蓝图,以及制作工具,最后还有一张资源星图,星图上明确的标注了以这颗无名星球为中心,制作光速飞船的原料星球方位,这里边最远的星球以他的小破飞船飞3天也能到达。

西夏普想,这下捡到宝了,开始着手准备来往各方星球开采资源,并按照蓝图制作光速飞船,于是他开始穿梭于各个星球,用自己勤劳的双头开采资源,就这样忙碌了一个月的时间,西夏普看到自己手里开采的少的可怜的资源,认为自己这样的开采模式效率很低,于是他开始冥思苦想如何提高效率,不知不觉西夏普就在这冥思苦想中睡着了。

睡着后西夏普做了一个梦,西夏普梦到了自己小时候,西夏普跟人形机器人欧毕苟玩耍的时光,那是他父母送给他6岁的生日礼物,后来随着年龄长大,西夏普渐渐对他失去了兴趣,直到自己开始星际流浪,虽然一直将其带在身边,但是一直将他放在飞船角落,从未再将其启动过。

这一觉西夏普睡了12个小时,醒来的他回想起梦里的情景,恍然大悟,他想到自己可以用机器人来帮自己开采资源。于是他在飞船中一番寻找,在一堆杂物中找到了童年的玩伴欧毕苟。

聪明的西夏普心想,可以按照欧毕苟的结构为蓝图,利用自己开采的资源,制作一批开采机器人。欧毕苟属于人形机器人,和人有着一样的外表结构,并不适合资源开采,于是西下普新设计了几个机器人分类:有专门用于开采的挖矿类机器人,这类机器人在欧毕苟结构的基础上增强了手臂,并且两只手改为矿铲,便于挖矿;还有专门用于运输资源的送货类机器人,这类机器人在欧毕苟结构的基础上,腹部扩展了空间以便存放矿物;还有专门用于冶炼组装的工序类机器人,这类机器人西夏普升级了他们的智慧芯片,有更强的操作执行能力。

为了能实时监控到每个机器人的工作状态,西夏普为这些机器人接入了星际网络,为了不让星际黑客发现到这些智能机器人,西夏普又为每个机器人设置了访问级别,只有他自己说一段密语才能访问开采资源的信息,而人形机器人固有的访问形式,比如获取姓名,获取生产厂家,西夏普全都按照欧毕苟的原始信息设置并对外开放。这样任何人从网络上探索到这些机器人只会认为是又一个欧毕苟,并不会产生怀疑。

就这样,这一批机器人被发送到了各个资源星球上,各类机器人,各司其职,兢兢业业的做着设定的任务,西夏普只需要对机器人做好的部分飞船零件进行合体组装,大大减少了工作繁琐和压力。

过了三年后,西夏普终于完成了光速飞船的制作,并为这艘飞船起名为“欧毕苟号”,为了纪念跟机器人一起制作飞船的这几年。

回首这三年的制作过程,西夏普曾多次感叹飞船的精密优良,现在他有了新的飞船,又将踏上星际流浪的旅程,临走之前,他把自己在这颗星球上的经历以及制作心得写成一段故事,在故事最后他将这颗星球命名为“道奈特”,随着一道光芒的发出,西夏普乘着光速飞船消失不见,他相信会有一天下一个热爱探索的人会再次寻找到这颗星球,读到他的这段故事,并唤醒那些在资源星球沉睡的机器人们。

在面向对象编程中,有个中心概念就是"对象",以故事中的事物来说,光速飞船,机器人就是对象。对象不是凭空产生的,而是基于构造图纸一点点构造出来的,在面向对象编程中我们把这种构造图纸称作"类"。类中描述的就是一个对象通用的描述,比如机器人名字,身高...,他具有的能力:说话,行走...

除了类和对象之外,面向对象还有三大法则:封装、继承、多态。

在上述故事中,西夏普为了不让星际黑客发现机器人,设置了机器人的访问性,只对外公开了通用的信息,这就是封装性的体现,即:"你能看到什么,取决于我想让你看什么"。这种封装性,可以防止外部非法获取或改动信息,我们把可访问的数据暴露出去,也可以减少开发人员的关注点,即我不需要关注你内部怎么做的,我把数据给你,你处理完后给我正确的结果就好。

西夏普通过欧毕苟的结构作为蓝图,重新设计了新的机器人,这就是继承和多态的实现,每个机器人都或多或少的继承了欧比苟的原始外形和功能,但是根据自己的职责又做了不同的改动,这就是多态。它重在表明一种可扩展性,在通用的基础结构上,我们可以轻松做自己需要的改动,从而减少开发人员的工作量,避免重复用功。

使用面向对象编程,我们可以将职责拆分,就像西夏普制作了多个类型的机器人,每个机器人各有所长,在开发中开发人员也可以根据职责每个负责一个模块的开发,只对外暴露必要的访问形式,最后将每个模块串联起来,完成一个程序或功能的开发。

0 人点赞