00:00
好,我们接着来看一下,呃,现在呢,有一个课堂练习题要求同学们来做一下。这里的具体要求是这个样子的啊,同学们看一下,就是说创建一个程序,在model包里面定一个account结构体,哎,这个是不是前面咱们做过这个东西是吧?然后在main函数中体会勾浪的封装性,它的要求是这样子的。Account结构体要求具有具体的字段。有账号,但是呢,这个账号我们要求在要求长度在六到十之间,余额必须大于20,密码必须为六位。然后呢,通过这个set什么什么方法给account字段赋值对不对,要求做这个东西,嗯,然后呢,在main函数中进行一个测试。那这样这个题大家想想能不能做。给大家。这个几分钟时间思考。思考完了过后呢,再接着看老师是怎么来完成这个作业的,好吧,主要是这里面多了一个呀什么呀,就是对长度余额还有密码的一个校验,这个呢,看大家能不能做做出来。
01:09
好,大家先想一想。好的,那现在呢,老师就来对这个题做做一个评讲,好吧,那我们一起来做一做这个题。好,先把它板梳一下。好,这是一个课关于封装的课堂练习题,那么给他一个标题三。具体的要求是这个样子的,对吧,诶第一个要求。第二个account。第三个。Yeah。这正在备份啊,正在备份,稍等一下。把这个备份的时间稍微调长一点。在一这些没体现出来。晕,这怎么没改过来呢?好,这样就就可以了,诶这样就可以了,在main函数中进行一个。
02:04
这是,呃,那么我我把这个自动保存时间稍微的改一下,因为他老是。经常这个备份的太频繁了点,这个地方有个备份设置是吧,每隔20分钟改成每隔40分钟吧。好,那么我们来一起完成它,那同学们注意啊,既然我们要做这个事情,那前面这个account的结构体,我们有一部分代码呢,我们就直接拿来用一下了,就不用反复的写,好吧,那么我们来完成这个东西,写大家看老师的代码。代码实现。代码。实现。OK。这个是要求。这是提的一个要求。把要求先把它放好。买吧。这是代码的实现。OK,那现在呢,我们来一起做一下这个题耶,这地方是怎么回事?
03:02
好,打开这个Vs code,那么我们新建一个,新建一个包包,好吧,新建一个文件夹,这个文件夹我们就叫封装的练习题。Inca。对吧,In cap练习exe。耶,好的,ECC,呃,Inca呃,CE,那这里面呢,我们建两个,建两个文件夹,一个是main文件夹对吧,另外一个呢,就是我们的model文件夹。没问题吧,Mode文件夹。那同样道理了,因为前面我们在讲这个这个抽象的时候,其实我们有一段代码。已经写了一段代码是吧,这段代码是不是我们不用再重新写,我把它先粘贴过来是不是同学们。是不是可以可以用一下啊,诶。我从这粘一部分进来,就是把account的方,Account这个结构体的定义,还有它的方法呢,先拿过来为我所用,当然我肯定要修改一下了,有些地方。
04:06
好,在model里面我们新建一个文件。对吧,叫account。得勾没问题吧,然后我把粘过来,那粘过来过后呢,有几个地方要改,因为他想把它做成一个封装的嘛,那既然是封装,我把这个account全部改成什么呀,小写的。怎么改呢?ACCOUNT。对吧,这时候全部就改完了,同时呢,把这个密码大家看没有密码这方字段,我们也全部改成这个什么呀,小写的。PWD同样,Balance是不是也一样改了呀?Balance。BY。那写完了啊,这样全部改完了,一下就改完了,嗯,改完过后呢,呃,同学们来看一下就是。既然你这个修改完了,那显然此时此刻这个已经。
05:02
这个在别的包就不能用了,那我就写一个构造方,就写就写一个构造函数啊,相当于一个构造函数,就是一个工厂模式的工厂。工厂模式的一个函数,对不对,这个相当于是构造函数吧,构造函数,嗯,写这个构造函数应该是挺简单的了,六一个。六。又一个account。那么这个时候呢,我们让他给我传这几个变量过来,对不对,一个是account number,它是一个十寸类型的。没问题吧,密码。也放过来十尊。然后呢,还有一个balance balance是float类型的。FLOAT64,然后所最后这个呢,要返回一个指针,什么指针啊,Account这个类型的指针,那这个指针完了过后呢,同学们看到人家这是有要求的,他说什么要求啊,他说你创建一个结构体呢,他要求呃,账号是要在六到十之间。
06:06
余额是要在60,呃,大于20,密码必须16位,这个应该挺简单的,我们就判断一下不就完了吗?是不是我们可以这样做,如果。它的长度注意看啊,我给他求一个长度那。这个是不是就把它的程度求出来了,如果它的程度不在这个范围内,它的要求是什么范围在六到十之间,好,那么我就上,如果它小于六。或者或者我们这一个怎么样啊,大于十。那说明什么?说明他就不满足条件,不满足条件我就给他输出一句话。就是什么呀,就是账号。账号的长度不对。就退出了。是不是,然后这个地方要返回一个什么呢?给他返回near,这个返回near就是空的意思,那对方拿到这个地方一判断,哦,发现是near,就说明这个怎么样创建失败了,明白意思吧,同样的道理。
07:05
下面也一样的,嗯,他说密码必须是多少位,六位,我进行一个判断,如果它不等于六。说明密码也不正确啊,就长度不满足条件,这写个密码长度不对。对不对,密码层不对,也返回一个利好,同样他说这个balance必须要大于20,同样道理加一个条件他balance,那balance呢,我们怎么取呢,就是你这。给我输进的这个东西。如果它小于20。对吧,小于20就是不满足条件,我们就写他的余额金金额不对。对吧,鱼。余额金,呃数目呃数目数目不对,OK,写完了返回一个利了,那如果说这三关都闯过了,那说明他们满足我们的条件吗?满足满足的话我就返回这个真正的就是创建好的这个account的指针类型,那这个地方也很简单这样写。
08:08
A,对不对,然后把这些参数给他传过来就可以了。是不是你在这传递过来的这些参数。这些是吧,Account number密码balance就有了,那这个时候呢,我们就把它附一下值就行。走。那把它写一个count number再来。密码。是不是写完了再来balance,那balance是不是也在这写就可以了,好,这就写完了,看到没有非常轻松。就就已经全部改完了,当然了,嗯,他这地方还有一些要求,我还没写,就是他说要通过set什么什么方法给account字段赋值,这个呢,同学们自己完成。同学们自己完成就行了,这个并不难,因为前面呢,老师已经是不是讲过这个类型啊,对不对,好,我现在测试一下,看看能不能用。
09:04
我这个是不是写已经写完了吧,我测试一下能不能用打开这个main包,我新建一个文件叫main点购。面点够,然后呢,我测试一下啊package。我测试一下刚才我们写的这个东西能不能用import。For,然后我给它来一个主函数,放me。抱起了。走一个,那现在呢,我们来创建啊,创建一个account这个呃。变量。怎么创建呢?At走,我是不是需要引个包啊,是不是要引包,引包是从哪里开始引?大家还有印象吧,是不是从这个src这个目录下面开始引,那就是go下线。Cold。是不是这个斜杠是正斜杠,再说一遍啊,不要不要写错了,因为有些同学老是在这犯糊涂,把这个写上,然后呢,现在我们下面是一个in in cap。
10:06
Excite。Rcc下面的一个model对不对,那在这个地方我们用model包里面的一个new account,所以O好,我给他传入这个相应的信息,第一个是账号,就是比如说这个是建设银行建设。行对不对,11111,好,这个应该是长途满足的余额,呃,再给他一个密码,密码它必须六位。六位OK,然后余额给他来个事实,好,我们来做一个判断,如果说你这个余额,呃,反回来的东西,它不等于逆额说明什么呀。是不是说明说明你这个就创建成功了,我们输出来一下。没问题吧,就创建成功。A、创建。创建成功。那么成诶成功啊,如果如果创建成功,我们把这个信息输出来就行了,对不对,那else。
11:04
如果他创建没有成功怎么办呢?没问题。我把这个呢进行一个处理,就是创建失败了。说你失败。就是你的东西肯定是有问题的。那边也会给你提示相应信息。来,我们运行一下这段代码,看看能不能跑起来,诶我们看看代码可能是有问题的,保存一下。保存一下框代码错在哪里?呃,好像有没啊在这。在这个命点go里面哪里有错?命点go里面哪有错?好。他说这儿。呃,他说命点,命里面有两个包。Package这个应该没错呀。是不是上面还有一句话呀。再来一下看看。Import not没有实现的一个包,他说这个包是不是单词没写错了,单词没写对,看一下。
12:04
上面这个没错了啊,GO11。幺幺里面有一个exer。C不是exer CI model,那这个包包是不是有问题?看这个是不是有问题哦,看这个包没打对对吧,它应该是变成model包了。啊,它应该变成猫多包才对。好,现在是不是这个这这个就没问题了,来我们跑一把。嗯,CD到CHAPTER11。是不是,然后DR一下CD到我们的这个练习里边去,没问题吧,Go run main.go没问题,跑起来。哦,对不起,还得进到这个命包里边去,然后再go run,命点抛起来,我们可以看到这个时候信息呢,它说创建成功对吧,是建设银行幺幺幺九九九四十对吧,没问题,那么我现在呢,我把这个故意改错一下。
13:06
大家看我把这个长度呢,呃,改给给它改成四位,显然四位它并没有在我们六到十的范围,它应该告诉我们创建失败。对不对,我们提示,我们看看是不是有这样提示,大家可以看到在这里确实有啊,他说账号长度不对,创建失败。那其他一样的,其他一样。啊,其他一样的,比如说我把这个密码来一个000,显然这个密码长度就不对了,看看能不能给出正确的提示啊,看密码长度不对,好其他意思类推,其他意思类推,好同学们,那关于这个。课堂练习呢,老师就评讲到这里,同学们呢,就是在老师的基础上,把这一个set方法和get方法加进去。加进去,比如说你在给他设置这个账号的时候,你要把这个条件给我加进去就行了,余额在设置余额的时候呢,你也给我加进去,密码也是一样,比如说别人要修改这个密码了。
14:05
对不对,他说密码原先是几几位的,那你在给他设置设置新密码的时候呢,你也必须是六位,好就这样子的。好,同学们,那我把这段代码呢,给大家稍微的整理一下好吧,代码呢量还是比较大的。呃,我们在原先基础上改进的好,那这样子啊,就代码因为很多我就不一个的截了,我就把它复制到咱们的这个板书里边去,首先呢,在model这个文件夹下面,我们有一个叫做account.go的文件是不是?然后呢,插入我们的代码。把代码插进去没问题吧,紧接着呢,我们还在main这个文件夹下面有个main点勾是不是,然后呢,我们在这里又把我们的源代码插进去。源代码插到从哪,从哪来找呢?从这来找。好的同学们可以看到,那同学们在这个基础上呢,我们要求大家做一些扩展啊,要求。
15:02
说明啊说明。说明。在什么呢?在老师老师。的代码基础上基础上。基础啊基础上增加增加如下的功能。那么增加什么功能呢?我给大家整理一下。就是这块的要求啊,把set方法。通过晒的方法给account字段赋值,当然了,呃,你再加一个,通过。通过get。叉叉叉的方法获取。方法。获取值啊,获取字段的值。获取字段。得知。OK,这这两这第二个呢,同学们自己把它完成,好吧,我把这个给大家放到这来。而且当然你做完过后,你要在主函数里面把它测试一下,看看对不对。
16:02
好,老师把这个写到这里来,看懂了啊,这个地方是要求大家增加的功能。好,同学们,那关于这个题的评讲呢,老师就先给大家说到这里,大家一定要在老师基础上把代码写一下,不然你光是听这个视频没有用好,一定要去多练一下,OK。那这块我们先说到这里。
我来说两句