前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向对象编程理论基础

面向对象编程理论基础

作者头像
宿春磊Charles
发布2023-09-08 18:23:34
1170
发布2023-09-08 18:23:34
举报
文章被收录于专栏:DotNet 致知DotNet 致知

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet 致知 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云小微
腾讯云小微,是一套腾讯云的智能服务系统,也是一个智能服务开放平台,接入小微的硬件可以快速具备听觉和视觉感知能力,帮助智能硬件厂商实现语音人机互动和音视频服务能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档