00:00
下面我们来看几个面向对象编程的应用实例。首先呢,我们看一下面向对象编程呢,它有个步骤,它的步骤呢,大概分为三步骤,第一步呢,首先我们要声明结构体。对吧,那就说首先你要确定结构体的名称是什么,第二点呢,你要编写结构体的字段,就根据他的需求,你要把字段以及字段的类型把它定下来,第三个呢,就要编写结构体的方法。对吧,他有哪些方法,你把它确定下来,这是他的三部曲,那我们来看一个案例,比如说这有个学生案例,我们来看一看,他说编写一个student结构体,包含这么一些字段,然后呢,各个字段类型他也告诉你了。然后他说在结构体中声明一个方法。返回一个时寸类型返回方法,返回信息中包含所有的字段值,说白了他这个方法呢,就是要把这个结构体里面的各个字段的信息怎么样显示出来。
01:03
二返回来,然后在main方法中调创建一个这样的实例,并访问C方法,并将调用结果打印输出。对不对,他这个呢,就已经把一个面向对象编程的一个步骤展示出来了,比如说名称告诉我们了,再比如说他把字段的名字以及类型告诉我们了,如果是我们自己在做开发的时候呢,那这些信息都要我们自己去分析。然后呢,他告诉你要写的方法,并且呢,调用是不是好,那么我们就来看一下面向对象编程应用实例的这么一个步骤,来走一个,那这样子啊,我们新建一个章节。呃,给他一个标题二步骤。步骤,开发的步骤我们整理一下。标题上开发的步骤。呃,它的步骤呢,大概这样子,三部曲对吧,大概三部曲。
02:02
好把它打开,咦,怎么卡了呢?大概三部曲。好,第一步声明。声明的时候呢,要把名字确定下来。第二个编写结构体的字段,第三步,编写结构体的方法,完事步骤完了过后呢,我们接着往下看,有了步骤过后,我们就这这么几个案例,一个是学生案例,我们把它写一写。对吧,学生案例。给他一个标题三。好,大体的步骤分为三步。好,走一个。那现在呢,我们就要走代码,这里面没有什么思路分析,我直接走代码。走下代码。好,我们看看代码怎么走,嗯,那打开我们的这个。还是chapter临时对不对,我们新建一个文件夹,这个呢叫object练习。
03:03
Object。Oo吧,咱们叫oo练习。C op ex exercise,那新建一个文件叫main.go。OK。好,然后呢,我们把前面一部分通用的代码拿过来为我所用。好,写一个主函数。对吧,然后我们看第一个题,第一个题呢,他是这么要求的,我把这个学生的案例粘过来。把要求粘到我们的Vs code,这样子呢,我们就不用来回切换了。好了,嗯,首先他说编写一个结构体,那么先搞一个结构体下来,Type。对吧,Steve,然后ru,嗯,他有哪些字段呢?人家已经告诉你了,有这么五个字段,来我们写一写名字对吧,名字它的类型他说了是石俊。
04:00
然后呢,有一个性别间的也是石尊。男女吗?然后呢,他有一个年龄,年龄是in特类型,他有个idd呢,也是in特类型,它还有一个score就成绩,成绩呢是一个FLOAT64。写完了同时呢,他说有一个方法叫CC,这个方法呢,能够返回所有字段的值,好这个也很简单,放然后呢,我们这样写。Student。A student。对吧,这个现在大家应该能看懂了,为了方便呢,我们直接把它生命成什么呀,这个指针类型,指针类型这样呢,提高我们的开发效率。好,接着呢,我们说这个方法叫C没有参数的传入,然后会返回一个字符串。对不对?那么我们就把它格式化,得到一个字符串吧。叫info。好吧,叫info。
05:00
寸走等于,那我就直接用format里面的一个方法F。PRF走一个就直接写了啊,就说嗯,信息如下,Student。的信息。好,我们写一个name等于。对吧,微一下,然后呢,他的这个真的。等于好,也把它放在一个中括号里边去。当然它还有年龄等于。对不对,年龄也把它放进去,还有什么呢?ID等于。ID。咱们等于。好,再来一个就是score,它成绩等于。对不对。好,这样呢,我们就把它写完了,诶这边写错了。写完过后呢,我们换一行,因为这行太太长了,所以说我换一行接着往下走。那换行的时候呢,同学们看到啊,这逗号保留在上上一行,然后在这边我们要输出的就是从这个student里面取出来一个是name。
06:08
第二个student他的什么类型啊,真的。再来一个student,他的age,再来student他的一个ID,再来student的一个什么呢?Score写完了。没问题吧,然后这个串拿到过后呢,我们将其返回。返回enforce string完事了,这个代码就写完了,那么写完过后呢,我们来测试一下啊,我们在这里进行一个测试,测试很简单,我们先创建。创建一个sto。对象啊,这个实例其实就是一个变量啊,好,那么我就这样写了VRQ。对吧,我就直接这样写。ST。直接赋值了啊,我就一次性的搞定对吧,这是一个结构体的名称下面写。名字对不对,名字呢,我们叫汤姆。
07:03
对吧,真的。这是他的性别,性别呢我们叫没男的对吧,还有他的下一个信息是年龄,年龄呢是个整数,比如说18。再下一个它的这个什么呢?ID对吧,ID它也是个整数,比如ID是1000,还有呢,就是他的成绩,他的成绩是一个小数,比如说他考了99.98分。好,自己写完,写完过后呢,我们就要调用它,调用它呢,因为它是一个指针类型的绑定,那么我们其实完全我们本身应该去去地字符的,但是呢,完全可以直接调用,原因我就不再多说了,写写完了。好,写完过了,我们来测试一下代码。好,现在我们CD到上一级。对吧,CD到我们这个o op。好,然后我们的go让命顶够跑起来。
08:03
我们看信息如何,大家看这里面有问题啊,代码有问题,我们看哪里有问题。好,大家看这里,我多了一个逗号。那逗号是不需要在这写的。在给值的时候,这地方少了逗号了,诶这地方都要有逗号,对不对,包括最后一行我们也要有逗号。好,这样就没问题了,跑起来。哦,他还有一个地方错误在哪里,这我们看到这地方有什么问题啊。好的,我们来看看这里面的问题是什么,他说。啊,那这一行应该提到上面去。看这样子是不是就可以了。对吧。诶,好像可以了,跑起来。好,我们可以看到信息呢,现在这样子的,我没有输出,我这个返回的过后没有接收string,我接收一下,然后把信息输出来,那我干脆就这样输出就行了,我点print对吧,是不是这样子就直接输出了,因为它本身返回一个字符串嘛。
09:03
所以我直接把它打印出来就可以了。好,我们可以看到学生的信息是这样子的。大家看这里学生的信息是名字。性别、年龄、ID和成绩全部搞定没问题,好,这样第一个题呢,我们就完成了,代码就这样做的,大家看一个面向对象的一个小案例,咱们就做完了。这里面的结这整个这个顺序是先定义结构体,确定字段,再写方法,最后调用是吧,OK好,我把这个代码呢给大家反述一下。把这个给大家板述一下啊啊,因为代码比较多,所以呢,我就直接把整个。复制一下。直接放到我们这边来,给它放到一个什么呢?表格里边去就行了。O了,好,接着我们看下一个案例,那下一个案例呢?他说,呃,编写一个小狗的案例,这个呢,同学们自己就完成,我就不写了,因为小狗案例和刚才的学生案例几乎是一样的,同学们自己去写一遍。
10:07
好吧,这个也比较简单,好的,我把这个呢,小葛案例就放到这,同学们课后自己完成,当成一个课后练习题。好,我把它整理一下啊,这是仍然是我们的标题三。对吧,标题三好写好了,这个课后学员课后练习。没问题吧,好,紧接着我们看下一个,这个还是给大板述一下第一步做什么事。对吧,结构题第二步。在main方法中去调用,我们再来看下一个案例,下一个案例是盒子案例,我们来一起做一做。这是一个合子的案例,同时呢,也也是面向对象的,呃,一个案例。走一下,他的要求是这样子的。找一个啊,同学们。大家看这里。编写编程呃,编程创建一个box的结构体,呃,在其中声明三个字段。
11:04
啊,分别表示立方体的长宽高,长宽高要从终端获取,也就是说长宽高是从终端输入的声明一个方法获取立方体的体积,大家都知道立方体的体积,它这个公式是怎么算的,还还有印象吗?还有没有各位朋友,是不是长宽高的乘积啊?就长乘以宽,再乘以高,第三一步调用它好,那这个呢,我们因为思路也很简单,我就直接走代码了。直接组代码来,同学们跟上老师思路。老规矩,我们在这里呢,直接写代码。好的。先把它放好。对不对,好来了,嗯,首先呢,还是根据我们面向对象编程的一个套路,首先呢,先把这个结构体写出来。Type。Box是一个structure类型,他说有三个字段,长宽高,那长宽高的类型大家能确定下来吗?
12:07
肯定都是float类型,对不对,那我就长用L好吧,L就是认识好L就认吧,这样写稍微写全一点,FLOAT64。写完第一个。第一个这个这个地方不需要打,不需要打逗号啊,第二个呢,就是长宽外。对吧,也是FLOAT64。高筷子GT好FLOAT64。写完了。这个就定完了,然后呢,他说写一个方法获取立方体的体积,那没问题,那我就先写了放。然后呢,同样FOX新fo对不对,然后呢,我们叫做cat。发动。Air。同学们,Volume get volume volume就是得到体积,得到体积的时候呢,嗯,这个地方我们就返回一个值64。
13:01
好,怎么算?非常简单,Box上面的这个长宽高长乘以box宽。高。Box颠。它的高。好,写完了,长宽高就做完返回去,这个就是我们所说的,写了一个方法获取到立方体的体积。对吧,我们声明一个方法,然后下面我们就来调用了,测试一下。测试代码好,测试的时候呢,同学们也很简单,就是你首先去创建一个box的这么一个结构体的变量。写完了吧,Box,好,那就是赋值了啊,Box点什么呢?它的长宽高长就嫩吧。我给他一个1.1高。Box,呃,宽啊宽with,那么就给它来一个22.0高box点。
14:05
好,给他来个3.0。当这个做完了以后呢,我们就可以调用方法了,我把这个体积拿到。等于box点什么呢?Get这个方法。对不对,改这个方法就写完了。那写完过后呢,我们输出来print打印下,我们说体积等于。体积为等于点volume。好,写完我们来看看代码有没有什么问题啊,同学们先运行一下。看到吗?啊有有点问题,呃,他说这个没有高,那就是我的单词应该写错了第几行,第四十四十三行,看这他也报错了对吧。DTH。写错了。好,我们再跑一下看效果。好,我们可以看到体积呢为这个,但是体积显然这个地方应该格式化一下比较好,我们把它格式化输出。
15:03
好,这样输出,直接这样隔出数体积为百分,好。点2F这样子呢,它就是按照什么呀,按照保留小数点的方式给我们输出的,对不对,非常简单,那就是6.66.60,好写完了。那这个呢,就是我们写的关于盒子的这么一个面向对象的一个编程题,我们把它板述一下。题都不难哈,同学们题都并不难,只是呢,把这些东西整理一下,好把代码给它整理一下啊,同学们,这个地方是它的核心代码。我们这里呢,先声明了一个结构体和它的方法,对吧。结构体和它的方法OK。第一步。然后呢,我们在调用的时候,我们走了一段核心代码,怎么调用的呢?是这样调用的。测试代码对不对,我们这样调用的。没问题吧,保存一下。
16:00
好,这是我们的这个关于盒子的练习题,就说到这里。往这儿再走一下。好,嗯,那么这个题做完了过后呢,我们紧接着再来做第三个题叫。景区门票案例。那么景区门票案例呢?是这样子的,他说,一个景区根据游人的年龄收取不同的价格。比如比如说年龄大于18,收费如何,其他情况?免费。请写,请写一个visitor结构体,根据年龄段来决定能够购买的门票价格。并输出。比如输出这样一个信息,好,同学们呢,现在同学们可以先思考一下。这个题大家先思考两分钟,然后再听老师的讲解,OK,好,大家想一想,建议大家先写再听。
17:00
好,我们来一起完成一下啊,我们来一起完成大家看到这里。名字和年龄呢,是通过这个控制台输入的,而且呢,当输入这个N的时候,大家看到他输了一个年龄为N。就代表要退出啊,输入一个姓名为N就退出程序,大家想一想这个怎么做。是不是咱们应该有个死循环呢,对吧,然后呢,在这个这个循环里边来进行判断就可以了,那我们来一起完成这个景区门票的案例。跟上老师思路。要求啊。第一个。要求第二个要求好,我们呢,来走一下代码。看老师怎么写代码也非常简单,我就直接上案例了。把这里呢,先拿过来。好景区门票案例。嗯,首先呢,他说他说这个有个visit visitor结构体,那么我们先来一个type。
18:01
Visit结构体。对吧。然后他说这里面有年龄,还有这个名字,那我就拿一个name。大写。Name尺寸,然后呢有年龄age。好写完,那这个时候呢,我们要写一个方法,他说有一个有一个方法能够计算他的门票,好,那我就这样写了啊,直接绑定一个方法方式。那这个时候呢,我们用一个visitor。指针类型。好,这边我们把它写成小写的,这样以示区别。好,那这个地方我就直接show它的price show它的价格就行了,根据年龄来显示它价格,我就做一个判断。如果。如果这个参观这个游客,他的年龄怎么样,大于18岁?那么我们就怎么办呢?收费20块钱,就写一句话啊。
19:04
Print。PNTF。好,写句话说名字,游客。游客的名字为。把它输出来对不对,然后他的年龄为。年龄。年龄为多少呢?也把它输出来好。收费为。收费。因为他现在已经大于18岁了,大于18岁,所以说我们收费呢,就按照什么呢标准收20元。好,现在呢,我把它信息打出来,一个是visitor的名字。对吧,他的名字是什么。打一个空格。他的名字,再来另外一个呢,就是他的年龄。Age就写完了,那么为了好看呢,我们换行。这是第一个else,如果他嗯不是大于18岁。
20:04
那就是其他情况我们就免费啊,这个很大方,就是他免费了。是免费。好,这里呢,我没有去做过多的判断啊,如果说写的严谨一点,要对这个年龄进行一个判断,比如说他的年龄总不能。总部的这个小于十,呃,一般小孩嘛,儿童我们不让他自己跑,比如说八岁。小于八岁我们就不让他玩了,比如说大于90岁,我们也不让他去游玩。我们加一个判断,如果。Visitor,诶这样写。就是visitor这个年龄。他的年龄点,Age。怎么样呢?如果他大于90,大于等于90岁,呃,80呃,90岁吧,我们就不让他去,呃,一个人去游玩了,因为很危险,或者再加一个visitor.h怎么样呢?小于等于八岁,我们也不让他独自游玩,直接返回就行了,就说你的年龄还不够。
21:04
对吧。你的年龄,年龄不到位。不到位啊。太小,不年龄。太大或者太小你的年龄考虑到啊,这样说考虑到安全,安全且请不要游玩就不要游玩了。不要。玩耍。玩耍。好,那么这个时候下面代码就不走,直接return就完了,没有返回任何东西,没有没有,因为没有返回值嘛,就直接return,就相当于说不执行了,好,那现在呢,我们就来就把这个写完了,我们来试一下怎么用它呢,测试。测试的时候,同学们,我们首先先创建一个visitor。对不对,但是名字呢,还有年龄是输入的,所以说咱们要这么去做visit。
22:00
解,写一个V。好的,那这个地方呢,我就用一个for循环,死循环在地方不停的判断啊,我就提示他一句话,请输入。啊,请输入你的名字对不对,起出你的名字,那么我就搜他一下。我们scan f。SC。SCN。对吧,L是看L。呃,这样呢,我们就可以得到一个值,好,我把这个值拿到,那怎么拿呢。地址传进去一个地址对吧,V点什么呢?Name好,然后呢,我们让他继续再接收。在接受一个什么呢?他的年龄。好年龄呢,我们是age,好现在这个做完了以后,我们就来调用一个方法,调用什么方法呢?调用刚才我们写的这个V里面的一个方法叫V点什么呀。
23:09
Show。是不是受price掉他吗?这样他代码不就跑起来了吗?但是呢,人家这还有个要求,他说如果年龄为N就退出程序,所以说这还应该加一个判断,加一个什么判断呢?如果这个人的他输入的一个这个名字啊。Name。它等于什么呢?它就等于这个N了。对吧,它就等于这个N,那就意味着这个人想退出不想玩了,那就提示一句话。Format。Fmt。第二就说。退出程序。退出程序就直接break。Break到哪个地方,就是把这个for循环break了吗?对吧?好,那么我们把这个保存一下,看看现在能不能跑起来看代码有没有什么问题啊,一保存我们看看这边有没有报错。
24:08
有没有报错呢?好像目前没有报错,没看出来。把这边挪动一下。好,没有报错,我们来运行一下,看看能不能跑起来啊,Go wrong。好,他说请输入你的名字,比如说我输了一个名字叫Jack。请输入年龄,比如说这个人的年龄,假设呢,我们给他了一个17岁。他说游客的这个名字为Jackie,年龄为17,免费,因为他不到18嘛。我不再输一个名字,比如说这个人的名字叫汤姆。他的年龄呢?比如说他是40岁。啊,游客的名字为汤姆,年龄为40,收费20块钱,假设现在我不想玩了,我就直接输了一个N。好退出程序对吧,那么我们也可以输一个年龄不正常的年龄,我们看看他会怎么办,比如说输了一个汤姆,年龄多少岁呢?比如说99岁,年龄太大了,我们就说考虑到安全,你就不要玩了,对吧,然后。
25:16
其实你再重新输入名字,又下一个人吗?比如说这个人呢,叫做史密斯。史密斯这个人的年龄呢?19岁,好,OK,退出主恩。代码没有问题。好,这就是我们写了一个景区门票的案例,也是通过使用面向对象这种方式来进行开发的,对吧?好,同学们,那现在呢,我把代码给大家整理一下。我们把核心代码给大家放到板书,到我们的笔记里边去,核心代码其实就从这开始的。怎么样做的呢?我们先定义了一个结构体visitor。是这个意思吧。我们先定义一个结构体visitor。好,然后呢,我们去调用了一下这个,使用了一下这个visitor,那么我们怎么用的呢?核心代码这一段。
26:09
是不是这段啊,这段代码是放在主函数里面的。好,我单独的写一句话,这一段代码是放在主函数里面的。对不对,这段。这段。代码是放在哪里的?主函数就是main函数中。Main函数中的。OK,这点大家注意一下。我把它整理到我们的笔记里边去,没问题吧?非常的简单啊,非常简单,好,那我们现在呢,就通过这么几个案例。啊,通过这么三个案例,把面向对象的应用实例给大家做了一个介绍,案例本身并不难,并不难,主要是让大家体验一下。就是说在我们的购。这个公浪语言里面去我们进行一个面向对象开发的时候,它的大致的步骤是什么样子的,加深一下对这个步骤的一个认识,后边咱们在写代码的时候呢,大家就能跟得上,看得明白,好,OK,那关于这块呢,我们先给大家介绍到这里。
我来说两句