00:00
好了,同学们大家好,我是丛浩老师,那么这样在本章节开始,我们为大家讲解一下面向对象。面向对象这个东西呢,可能很多稍微听过it或者计算机语言相关的兄弟们会说,哎呀,这个东西是不是特别难啊,感觉不太好学啊,其实不是啊,面向对象和我们之前学的开发,我们之前学段面向过程啊,没有什么本质上的区别,也就说工作的逻辑都是一样的,第一步,第二步,第三步,第四步都一样,不一样的在什么呢?不一样的在于面向对象为了让我们的程序更好管理,更好维护,所以他把程序按照结构进行了一个划分,然后呢,以后在管理和维护的时候是非常的方便啊,也是仅此而已。所以面向过程和面向对象,今天要讲的这个章节里边,主要是大家一个思想的转变,就比如说我原来什么呀,我原来天天喝可乐,是不是这两天呢?诶。改成喝雪碧了,那你开始学得不太适应,但是喝喜喝一段时间也会适应的嘛,是不是?再就是抽烟大家都会知道啊,虽然我个人不抽烟,但是我听其他人说的是抽烟这个东西吧,你开始吸一口是非常的呛,是不是受不了,然后呢,缩吸两次之后,你就会发现非常的舒畅啊,吸完之后是不是精神倍儿爽,是不是身体倍儿棒啊,但身体倍儿棒谈不上,我不是鼓励大家吸烟啊,我就说这个意思啊,就是你开始可能不适应,但是两吸两次以后就适应,那他对象也是这种感觉,包括什么呢?喝酒也是啊,这个我也不喝酒,但是据说他们喝酒的人开始喝两口觉得又辣呀,或者又怪味啊,是不是?但是喝一段时间之后,他们反而欲罢不能,甚至都用酒瘾这么一说,是不是面向对象就是这种东西好,就是这种效果。先为大家建立一个文本闻道来记一下面向对象。
01:48
好,面向对向,大家不要有什么思想负担啊,这个东西我说了,它不难哈。好了,那在面向对象的学习的时候呢,我们先给大家介绍一下面向对象的英文单词啊,叫做object oriented。
02:06
呃,OD啊。Object,对,就是这个啊,这就是英文单词面向对象的缩写,一般我们叫它O,一般叫简称,叫简称O啊,简称O。其实在it行业,你一旦说是哦,大家都知道是面向对象啊,那在面向对象的学习过程当中,要学习两部分,面向对象的学习呢,分为两部分,哪两部分呢?一个是面向对象的语法的学习,面向对象的语法的学习,这一部分学习呢,主要是靠记忆啊,主要靠记忆也比较简单啊,靠记忆就可以。记忆就可以,但是呢,说实话它也比较多啊,因为面向对象是一种新的语法思维啊,所以这个语法也比较多啊,比较多,然后呢,第二部分要学习内容叫做面向对象的什么呀,思想,面向对象的思想的学习这一部分呢,思想这部分分稍微有点难度啊,稍微有一点难度,所谓的难度就是我们刚刚说的不太适应的问题啊,因为你之前适应了我们之前那种一行一行的写,是不是一步一步的来,那在学面向对象的时候会不太适应,不过也大家也不用担心,还是那句话,这个就跟抽烟喝酒一样,开始都不太舒服啊,但适应了之后你反而会觉得非常的爽,这也是面向对象的一大好处,那面向对象到底他能给我们带来什么样的优势呢?所以我们来看一下面向对象的优势,如果他没有什么特别好的优势的话,我们干嘛要用这种?
03:47
这种方式来开发,直接用之前的代码一行一行写,这就可以了,好,确实也是这个问题啊,面向对象它的优势在哪呢?这就要从我们的什么呀,这个语言的这个发展历程来讲啊,最早的时候呢,大家也知道我们的计算机设备比较什么呀,比较这个慢,并且呢,你要写一个程序,这个程序也不是很大,当时也没有什么互联网大数据之类的,是不是数据一般都很小,做一个简单的什么管理啊,是不是简单的操作呀就可以了,甚至是做简单的预算,所以在早期就是60、70年代,80年代,而这段时间呢,个我们的程序代码一般也就是KB级别的,说白了就是几KB啊,几KB都算大程序了,你想想啊,我们当年玩一个FC游戏,就是任天堂或者红白机那种游戏,一个游戏才什么呀,几才十几KB,是不是最多也就是200万KB那么点的一个什么呀,游戏的话,实际上它都是用过程化来进行开发的,没有必要说啊,非零零向对象,原因是它的代码量很少。
04:47
管理维护起来呢,也比较方便,但是呢,随着我们计算机和什么呢,软件需求的发展,大家会发现现在的软件动辄就不是几十K几百K的问题了,是几百兆几千兆,甚至上G好几十G的问题,对不对?那么这么大的程序,如果是用早期的,像我们那一行一行写代码,一行一行写代码,一行一行管理的话,那么开发的时候它会比较慢,因为可重复利用率比较低。第二个问题就是维护管理起来也很麻烦,因为这个东西都是平铺的,相当于什么呀啊,我有好多好多数据全都平铺在一起,那你要找某一个的时候,他也没有分类,他也没有划分,也没有标识,是不是光靠变量名或者用函数名来找的话,实际上是非常不方便的,所以呢,后来编程的程序员们就想,我能不能按照一定的规则把它们有机的结合在一起,实际上就做了一个分类啊,然后呢,在开发过程中按照一个整体的思维去进行操。
05:47
做,那这样一来的话,我的什么呀,代码就是可以集中在某一些分类当中,那我们以后维护呀,开发呀,重复利用啊,找起来是不是特别方便啊,所以面向对象就是这么一个东西,什么东西呢?把原来零散的东西按照特征归类,然后再次使用,使用的时候就因为有类别划分,就非常方便了啊,所以面向对象的优势在于哪呢?能够啊,叫做能够实现良好的程序结构啊,程序结构。
06:19
方便开发方便,开发和管理方便。写错了啊要。方便程序的开发和管理维护,这是我们面向对象最大的优势,而且实际上跟大家说哈,如果说面向对象和我们之前那种一步两步三步那种写的代码,谁的开发效率高,谁的运行效率高呢?就单纯什么呢?你从效率的方面啊,效率来考虑,我们有两个效率啊,一个叫做运行效率,运行效率是谁,是不是计算机的问题啊,是不是还有开发效率,开发效率是谁啊,是不是程序员的问题啊,是不是程序员的问题啊,这是计算机的问题,那么我们面向对象,实际上它拉低了计算机运行的效率,也就说白了面向对象啊,面向对象在这里边效率不如过程化的。
07:15
过程化的是么快,当然你得说同等代码,你不能说过程化写了1万行,是不是面向对象写了一行,那肯定不能比啊,同等功能的情况下。面向的对象的效率甚至还不如过程化的快,但是在什么方面呢?在我们的程序开发和维护方面,那么面向对象啊,面向对象它比什么呢?比过程化的开发要方便的多。过程化开发。要方便得多,所以面向对象它到底是方便了谁,方便了它是什么呀,方便了程序员,因为这本来就是程序,而为程序什么呀,简化或者方便工作来设计的一种模式嘛,是不是?所以这个东西大家要知道啊,面向对象实际上对程序员是非常友好的,当然很多学们说那是不是拉低了计算机运行的效率啊,那倒也谈不上拉低,虽然他没有过程化的快,但也不至于慢到哪里去啊,所以这个大家不要担心好了,那讲了这么多面向对象的一个开发,我们至于在说它的好处和它的特点对不对,那面向对象和面向过程到底是什么样的东西呢?也就是说大家现在还是有一些对面向对象和面向过程区分不开好了。
08:35
那么我们现在就给大家看一下面向对象。和面向过程开发的区别啊,过程开发的区别,给大家做一个非常简单的一个小例子,行不行?现在看什么呢?面向过程啊,面向过程开发,我们之前的操作就一行,两行,三行写的代码,之前学的都是面向过程开发,面向过程开发它的特征就是什么呢?你需要干什么就直接写就行,比如说我需要吃饭。
09:02
是不是我饿了,我需要吃饭,那么这个时候我就要什么呀?来自己做饭吃,也就是说是不是相当于调用了一个做饭函数啊,调用做饭函数是不是就可以了,然后我渴了,我要喝水啊,我渴了那我就什么呀,自己啊倒水喝,倒水喝,说白了就这里边就调用了倒水函数呗。调用了倒水函数啊,倒水函数这个是不是多了个空格啊。好,然后呢,在这里边儿叭,如说我什么呢,我衣服脏了,是不是我要洗,我要衣服脏了,我要洗衣服,我要洗衣服呢,我就要什么呀,自己。自己,然后呢,洗衣服。那这里边就无非就是调用了洗衣服函数呗,是不是啊,调用了洗衣服的函数,然后呢,以此类推,比如说什么呀,我想什么呀,我想睡觉了,是不是,然后呢,我想睡觉呢,我就自己什么呀,我就自己换睡衣,是不是自己拿睡衣啊,拿睡衣换上。
10:10
拿睡衣拿字呢啊,自己拿睡衣啊,也是在调用,就是拿调用了,拿睡衣大数是调。用了拿睡衣的函数啊,好,那这个其实就是我们过程化操作,就是程序一步两步三步,你需要干什么事,你就调什么函数或者写什么代码就可以了,非常的简洁方便,对不对,但是抵不住什么呀,你这个东西要是太多怎么办?比如说后边还有很多,比如说我想走路是不是,那我想走路怎么办呢?啊,不是我想去哪儿,比如说我想去公司,我想去公司,那你想去公司是不是你得什么呀?是不是坐工具去啊,是不是我得什么呀,坐交通工具啊。做这叫叫做走路去吧,行不行,走路去啊走路去,然后呢,我想去哪呢,我想去什么呀,就是这个海南是不是海南,那我怎么办呢?如果你是自己操作的话,那依然是我要走路去。
11:10
啊,然后呢,你想去各种地方都得亲自来操作。啊,调用走路函数吗。是不是调调用走路函数啊。调用走路函数。然后呢,在这里边,比如说我想把东西,是不是我想去送礼,是不是我想去送礼,比如说你想给是不是给你丈母娘去送礼,那这个时候怎么办呢?那我还得什么呀,送货呀,是不是叫带着礼物去啊礼。物去不是这个礼物啊,礼物礼物走去啊,是不是,那在这边调用什么呀,调用走路。和运货函数是不是运货函数啊。是不是因为你得用得上啊,是不是以此类推啊,以此类推你会发现如果我们的一个程序非常大,那这里边的操作就非常多,对不对,多的话就会非常的混乱,或者去找管,呃,管理起来,运行起来啊,维护起来都非常的麻烦,那这就是面向过程,也就是说你这个东西多了的话,我这里可能只写了七个,那如果70个呢,7万个呢,那你是不是找起来就非常麻烦了,所以呢,程序员发现这里边有问题啊,就是少还行,如果只有前四个的话,或者只有这七个,还有你来操作啊,是不用面向对象就可以做了,但是呢,如果数量非常的多,那这个时候怎么办呢?好,面向对象就出来了,面向过程就可以解决上面那简单的是不是面向对象是怎么处理的?
12:40
面向对象啊,面向对象的开发。东西还是那些东西,但是呢,既然是面向对象,我都说啥叫对象啊,是不是好,我问你哈。这些功能可不可以为某一个整体都具有了,就什么东西能不能具有上面卫生过程,这吃饭呐,喝水,你需要吃饭,需要喝水,需要洗衣服,需要睡觉的所有的需要调的功能,有什么东西呢?女朋友看见没有,或者干脆叫老婆都行啊,不过你可能没有老婆,你可能就是女朋友啊,女朋友是不是好,你女朋友什么功能呢?看好了,我把你女朋友有没有给你什么呀,给你叫做做饭的功能,有没有给你倒水的功能,有没有给你洗衣服的功能,有没有给你拿睡衣的功能,你会发现都有。
13:31
所以说女朋友把这些功能全都包含了进来,有什么功能呢?现在女朋友有做饭功能啊,有做饭功能,然后呢,然后还有什么呢?还有倒水功能,倒水功能。然后呢,还有什么呢,还有这个洗衣服功能。洗衣服功能啊功能,然后还有什么呢?拿睡衣的功能,拿睡衣功能你会发现,哦,原来我自己调的这些函数,原来女朋友都可以实现,要么女朋友干嘛挑对象呢?是不是你说我有对象了,不就有个女朋友了吗?所以实际上原来那些松散的功能,因为他们可以归结到一个类别当中,就是女朋友的类别当中,女朋友具有这些功能,好,我把这些功能全部归到女朋友这里边来。
14:22
所以以后在开发的时候,我什么呢?我想吃饭了,我就说啊,是不是你就说媳妇儿,是不是你给我做饭。然后呢,我如果是可乐啊,可乐写错了可乐我就说啊,媳妇儿,这不是叫媳妇,应该叫女朋友,不过大家都喜欢叫媳妇儿是不是,媳妇儿你给我倒水去是不是?倒杯水去倒杯水好好说话啊,给我倒一杯水啊,谢谢,不然的话会挨揍是不是?所以这个咱每一句后面加个谢谢啊,不然容易出问题是不是?现实中请勿模仿,可能容易挨揍,然后呢,比如说我想什么呀,我想洗衣服是不是,你就说啊,媳妇帮我把衣服洗洗是不是?
15:07
媳妇叭,如说媳妇儿啊,媳写错了啊,媳妇啊,是不是写错什么媳妇啊媳妇。帮我把衣服洗一洗。洗一洗黑。帮我把衣服洗一洗啊,洗一洗。然后呢,以此类推,凡是女朋友能做的事情,你都让他来做就可以了,当然我们这里写媳妇是不太合适的,你应该写是什么呀?真实的名字叫女朋友是不是你帮我做饭,女朋友你帮我倒水,女朋友你帮我洗衣服,所以大家会发现原来这些松散的功能,因为女朋友都可以高。都可以包含进去是不是?所以在开发过程中,我就先定义了女朋友这个结构,然后把它把什么把这一类别它能够完成的工作放到了这一个结构当中,以后用的时候就让这个结构里边的某一个工作或某一个功能帮我们来完成就可以了,那这样一来的话,数据多了,你是不是按照什么呀,按照这里边的这个分类,就是女朋友这样的分类是不就可以解决问题了,快速的方便查找修改是不是?然后呢,下面这一样,比如说你可能就要去走路,可能需要运货,对不对,那这个时候怎么办呢?我可以定义一个叫做汽车的函数嘛,不对,什么函数,Sorry啊,叫做汽车的一个结构啊。
16:26
汽车这么个结构,汽车是什么功能啊,当然有什么呀,有这种叫做,呃叫做叫做行走功能啊,不对,应该叫做汽车这个叫什么来着,运动功能吧,运动功能。啊,运动功能,汽车不是脚跑还是运动,还有什么运货功能,是不是运货功能,然后呢,还有什么呀,还有这种各种各样的什么兜风功能啊,是不是兜风功能啊等等等等的功能,我们可以把这些功能呢,干什么事儿呢,都集合到汽车这个结构当中去啊兜风功能。
17:01
都给它集合在这一个结构当中,以此类推,那么当我需要做一个操作的时候,比如说我想去公司,是不是去公司,他怎么做呢?哎,我就可以调用什么呀,叫做汽车的运动功能。什么什么运功哈,运动功能,那这样是不是你就可以开着车去了,是不是,然后你想去海南是不是去海南我也可以叫做汽车的什么呀,兜风功能,当然运动也行啊,汽车运动功能啊,运动功能或者是兜风功能啊,兜风功能,你是不是该去海南了,是不是,然后我想什么呀,我想给丈母娘送礼去,对不对,你就可以写什么呀,我想去,当时咱叫什么来着啊,送礼啊,我想送礼,那这个时候呢,你就直接调用,我们写错了啊,你就直接调用我们汽车的运货功能是不是就可以了。汽车的运货功能。那这样是不是就可以把李送成了?是不是以此类推?
18:03
所以大家看了一下前面这个面向过程的这个和面向什么呀,和面向这个对象的,大家会发现他们里边完成的内容是一样的,唯一的区别在于面向对象。他会先把你的什么呀,内容或者叫功能进行一个分类,然后在用的时候你就直接找这个分类里边的功能帮你来完成就可以了,所以后期你想改哪个功能啊,或再次调用这个功能啊,找起来呀,维护起来都非常方便,这就是面向对象和面向过程的一个区别,我想大家应该稍微有一点点了解了,对不对?当然要完全理解面向对象,它也不是那么简单的一个特征啊,当然这里边儿也引出来面相对象中结构的特色啊,面向对象改成这样的,它到底有什么?好处呢?或者有什么特色呢?来看一下面向对象的结构特色。给大家总结一下面向对象的结构特色,所谓的结构特色就是我们为什么这么来写,会这么写,有什么好的地方啊,简单的说,六个字清考了叫高内句第耦合。
19:13
这就是低耦合,耦合,这就是我们面向对象结构上的特征啊,高内聚低耦合能说啥词儿啊,太搞太专业了,是不是听不懂?所谓的高对句是指什么呢?叫做具有关联的功能,具有关联的功能,然后呢,我们总结在一个结构当中,一个结构当中。你看,比如说这里边什么呀,我把什么做饭呐,倒水呀,洗衣服啊,拿衣服的功能总结到了女朋友这个结构当中,对不对?那我为什么不把什么,我为什么不把兜锋总结到女朋友里边,我为什么不把什么呀,我为什么不把下蛋功能总结到女朋友身上,因为那不是他身上应该有的东西,所以呢,所谓的高内句就是有关联的东西,我们总结到一个结构当中去啊,叫高内句,明白了吗?你不能说什么东西都往,都往女朋友这个类里边放,是不是?你比如说啊,我想什么呀,我想这个叫做搬搬水,就是搬大桶水,你把这工作放女朋友身上,那就不合适,你应该放男朋友身上,对不对啊?叭,如说我想干什么事呢?我想用一个我想给什么呀,写了一个什么,比如说我想写一个呃,什么功能,比如说咱写一个呃,就是盖房的功能吧,盖房子功能,那这个功能适合男人不适合女人是不是?当然咱不是歧视女性啊,我只说这个意思,因为女性干重重体力活确实不太合适啊,所以呢,这叫高那句有相似有关联的功能我放到一起,那什么叫。
20:39
第耦合呢,那就是没有关联的功能,没有关联的功能放在不同的结构中啊,放在不同的结构中,你看我汽车的功能,我就不我汽车的功能和女朋友之间功能没有任何重叠是不是?而且女朋友这个结构和汽车这个结构也完全没什么非得关联到一起的地方吧,是不是,嗯。
21:01
没有,他说啊,我汽车里边需要用到女朋友什么东西,或女朋友里边需要用到汽车里边什么功能都没有,所以这种没有关系的不放在不同结构中,称之为滴耦合,这就是面向对象的一个结构特色。好了,面向对象讲到这里边呢,我们需要给大家在普及几个考试当中经常遇到的面向对象的单词啊,面向对象的单词啊,或者叫做专用词汇啊,哪几个单词呢?一个叫O,咱刚刚说了,它就是面向对象的意思哦,不是O的对不对?还有一个常见的叫op啊,Op它是什么意思呢?叫面向对象的程序开发啊,这个大家应该是遇的比较多的啊,或者叫考试的时候遇到的比较多,Op这个P就是什么呀,前面object oriented,这个叫programming啊,就是编程嘛,是不是程序开发,然后呢,除此之外我们还有OA。O doi这么三个单词,这个也是面向对象中一些专用词汇啊,大家了解一下意味着什么呢?面向对象的程序设计啊,面向对象的啊sorry,程序的分析,面向对象的程序分析,然后第二个叫做面向对象的程序设计,这个D表示deend啊,当然这个很多时候A是啥意思不知道,我英文单词也不好啊,这个OI叫做面向对象的成的实现啊,面向对象面向。
22:27
对象的程序实现啊,所以呢,实际上啊,大家会发现,诶,后三个好像是一体的,哎,是不是没错啊,这三个实际上就是你做面向过程的三个步骤,你就像盖楼一样,我得先分析一下什么情况,是不是这个依山而建还是依水而建,适合什么样的东西,是不适合于什么样的结构,对不对,然后呢,再画出图纸,所以前面你去分析的过程就在这里边,画图纸就是设计的过程,然后你想把楼盖出来,那就是实现的过程,所以实际上OA。
23:00
然后呢D然后呢OI啊OI这就是面向对象程写错了啊,面向对象程序设计的程序开发吧,程序开发的顺序。他们总结到一起实际上就是谁呀,Op面向对象程序开发嘛,是不是这就是我们面向对象第一几节当中为大家介绍的面向对象和之前的一个差别,当然本章节中需要大家更多的去思考,去想,而非写代码,代码我们会在下一小节当中为大家继续讲解好不好?感谢大家收听本小节内容,我们下一小节再见。
我来说两句