00:00
好,那么异常呢,最后呢,咱们这块呢,给大家讲一个项目啊,这个项目呢,我们就写到艾特506这块了,然后对应的这个PPT是关于我们这个项目的一个说明,然后这个项目呢,也提前呢写好了啊一个代码啊,大家呢可以去看啊,就在这个model里边,对应呢,如果你要看这个课件的话呢,是在我们这个位置。找到这个对应的实战项目,诶这个授课的项目,我们现在要讲的是第三个要优上开发团队啊,人员调度系统打开以后的话呢,需求说明这儿呢,是我们这个PPT,这个我也把PPT呢就放到这了,你看哪个呢都可以啊,诶首先呢,我们针对这个项目呢,稍微的看一看,这个项目的话呢,涉及到我们Java民航对象的一些高级特性啊,同时呢,这里边也涉及到我们相关的一些异常内容了,所以呢,我们是在讲完异常以后呢,来讲这个项目,这儿呢,是我们对应的要练的相关的一些知识。包括呢,我们在整个呃,编写过程,然后呢,运行过程,测试的过程当中,还可以呢,进行相关的调试啊OK啊行,下边的话呢,就是针对这个项目的一个简单的说明,包括呢一个简单的一个功能的演示,那演示的话呢,咱们就不看这个PPT了,那这块呢,我们直接呢就回到这个代码层面。
01:08
然后呢,这块大家打开当前这个model以后呢,明显下边有好几个包啊,这个这块的话呢,我们运行的话呢,需要看这个view啊。打开以后呢,有个叫T6。这呢就是整个我们运行的时候呢,就诶点这个程序就可以了啊,然后右键这有一个run。啊,把这个方法呢,其实就吊起来了,然后运行以后呢,这块首先呈现给我们的是整个公司的这样的一些员工啊,一共呢,是有12个员工。啊,这都是顶配了,都是吧。啊啊,然后呢,这个员工呢,他有不同的职位啊,有的呢叫架构师,有的呢叫程序员,有的叫设计师啊,有的呢就是普通员工。啊,马云这块呢,就普通员工了啊,这块就什么也没写啊,啊这呢是他们相关的一个状态,奖金股票领用设备,不同级别的这个员工啊,他的相关的属性啊不一样,比如说像成员的话呢,他就没有奖金,没有股票。
02:03
然后对于这个设计师的话呢,是有奖金,他没有股票架构师呢,级别比较高,然后你看他的对应的还会发一些股票哈,OK啊,那马云的话呢,这个就更少了是吧。OK,好,这呢就是相关的一些信息,就是这儿呢,就相当于是公司总共呢,一共是有12个员工,所以现在呢,我要从这12个员工里边啊,挑选几个人组建一个开发团队啊是这个意思,所以呢下边呢就是我们对应的这几个选项。那么刚运营起来以后呢,其实这个开发团队里边呢,是没有任何人的,所以呢,当我们选择叫团队列表的时候呢,诶你会发现呢,是没有任何的成员。然后接着的话呢,我们可以通过这12个人呢,去选择一些人,哎,组建构成我们这个开发团队,那我们就选这个二了。这块呢,会提醒我们说你输入的ID是多少ID呢,就是我们这里看到的第一个列。从这里边呢去选,这里边儿呢,我们在天下话呢,其实还有很多的要求,那我们在PPT里边呢,其实都有写啊,比如说这里边儿呢,你像这个一就是马云是吧,马云的话呢,没有任何的职位啊,当我们选一个一的时候呢,他会告诉我们添加失败,因为呢,他也不是开发人员。
03:09
那这呢,就是其中的一种添加失败的原因啊OK好,然后这块呢,我们可以呢,再重新选择这个二再去添加,这呢,比如我们添加一个叫丁磊啊十这个你就把它呢写上。一回车就添加成功,然后呢,按回车键呢,继续,这时候我们在选一的时候呢,就把丁磊的这个信息呢,就加载过来了。接载过来以后呢,本身这个丁磊在整个公司的这个列表当中,它的状态呢,就变成叫BC状态了,其他的位置呢没有变。好,另外的话呢,这个丁磊你看到他这个ID呢,还是十后边呢,就是他几个基本的信息,我们就同样的拿过来了,然后前面这块有个叫TID。T呢,就是team的意思,就是在这个团队当中啊,它也有一个编号。OK,然后接着的话,我们可以呢,再去做一个添加,比如选随便选一个啊选个八。啊,然后我再随便来一个啊,再来一个,比如说七。
04:01
行,然后我们再看一下一好,那这时候呢,我们添加的呢,对应的啊,杨元庆是个架构师啊,柳传志啊设计师哟。都一家子是吧?都联想的哈,联想是一个世界企业是吧。华为是中国的,联想是世界的,是吧?嗯,好,这块呢,我们添加了三个人啊,他们对应的这个级别呢,不一样啊,相对应的有的是有奖金,还有股票这呢都能显示出来,然后在原来这个表当中呢,相应的状态呢,都改成叫easyc状态,然后对应这个TD的话呢,就依次往后顺的。好,然后接下来的话呢,我们选这个三呢,就可以做这个删除操作了,删除的时候呢,是依据叫TD进行删除的,也是我们这里边这个123,现在呢,我把比如杨元庆呢删掉,那我就选个二。说是否确认删除选的话呢,那就没有删成啊,直接就退到这个主界面了,那我这儿呢,直接选一个Y。这呢就删掉了,删掉以后的话呢,再一回车,那么当前呢,我删的是杨延庆,所以呢,他又改成了free的状态了。
05:00
啊,又回来了啊,然后呢,我们再选上这一,这里边儿呢,就有两个人了啊,那这时候呢,你稍微注意一下这个啊柳传志啊,他呢,原来的时候这个TD呢是三,现在呢还是三。没有说呢,因为呢,我们把中间这个啊人给删掉之后呢,它呢就变成二了,那也就是说呢,这个数呢,不是我们只是往后顺的一个数了,而是呢做成了一个属性了。这个属性呢,就已经给它固定下来,就是三了。OK,那有同学可能会想,那如果现在我又把这个杨元庆呢,给他加进来,或者什么样子呢?选个二是吧,最后又选个八,这时候你看是可以添加的,然后我们再选个一。诶,这时候的话呢,相当于我们这个T呢,就重新的给它了一个值,原来那个值呢,相当于就被覆盖掉了。哎,这个稍微注意一下。好,这呢就是我们相当于是呢叫呃添加团队成员以及呢删除团队成员这样一个操作。然后最后这块呢,是有一个退出的一个行为,当然了你说我们这块呢,选这个三叫删除的时候呢,如果你写了一个不靠谱的这个数据。
06:00
然后选个Y,那自然而然的他会提醒我们找不到啊,相关的一些这种信息,包括我们上面添加的时候的一些错误的信息,实际上呢,我们都是以异常的方式呢去展示的。OK。行,这呢就是我们基本的一个演示,选一个四呢,这个我们选一个Y,这呢就退出了。OK,这呢,就是咱们关于这个项目呢,一个基本的一个演示啊,大家呢,感受一下简单不。啊,似乎呢,看着也挺简单是吧,但是在写的时候呢,其实有很多细节呢,需要我们去注意的,这里边儿有一些细节呢,没有完全的展示出来啊,比如说呢,我们添加的话呢,有好多失败的情况,这个失败的情况呢,我们只是演示了一两种而已啊。好,那么简单来看一下,当前我们这里边这个包哈,诶这块能看到一共是有这样的几个包,这几个包呢,相应的这个功能啊都不一样,比如说我们在整个演示过程当中涉及到了这个都是算叫员工了啊,只不过员工这个类型呢不太一样,那么对应的话呢,都有哪几类呢?我们都把它写在这个do漫这个包下了,对应的呢,诶最基本的叫employee,它的此类呢叫做mer。
07:05
Programmer这个此类呢,涉及到叫设计师designer designer的此类呢叫architect架构师,所以这块呢,涉及到了有这样的几类员工,那一会儿呢,我们要写就先写它了啊,然后呢,第二个的话呢,涉及到他们会领用一些设备啊,那么这个设备的话呢,也有不同的这个情况,设备这块呢,用一个接口来表示的叫equipment,然后它对应的这个事现类呢,有这个叫notebook PC,还有printer啊,打印机这呢是有一组。来刻画的就是我们对应的这个设备的这个情况。好,那么整个呢,这里边儿啊,你会明显发现呢,已经有一些数据了,那么在实际开发当中呢,我们这些数据呢,通常都来自于数据库啊,咱们现在呢,还没有讲数据库,所以说这块呢,我们这个数据呢,就是提前呢,我们写到一个文件里了啊,这个文件的话呢,我们就放在这个叫service这个下边这儿呢,呃,一个叫data data data里边呢,就哎保存了我们相关的这个数据了,这呢是员工的数据,这呢是这个设备的数据。
08:01
然后呢,你稍微细看一下的话呢,我们这个数据呢,是以一个二维数组的方式呢,来进行的一个保存,诶下边这块呢,也是一个二维数组啊呃,那这块我们怎么去处理呢?首先要面对的一个问题就是你得把这个二维数组啊转换成是。呃,员工类型的一个数组。你像这里边儿呢,我们二维里边的这个元素,这里横向来看,每一行其实都应该封装为一个具体的员工对象。哎,根据什么去封装呢?我们这个里边的第一个列,比如说这写的是十,11 12 13,分别对应的就是上面这几个数。那如果你要是十的话呢,我们就new一个employee,你要是11的话呢,我们就new一个programmer,那比如说我们这里边儿是个12,那就这块呢,把它翻译过来呢,就去new一个design。哎,是这样的啊,然后下边这个呢,设备同样的道理,第一个列啊,你看21 22 23,根据这个具体的数值,我们去创建具体类型的对象,然后把后边呢这几个数据啊,然后填充到我们对应的这个对象里边,作为属性的出现,这呢其实是我们遇到的算是第一个难点的地方啊。
09:09
好,这呢就是它,诶这呢,我们提到是这个数据的问题,然后呢,我们会看到呢,针对于当前啊,咱们这个整个公司的这个员工还有一个呈现。啊,呈现呢,包括呢,我们去选择某一个员工,比如我选的啊,这里边儿我们选这个二的时候啊。二在上边儿呢。当我们选二的时候呢,他就要添加团队成员,比如我们写了个八,相当于我们就有能力呢,把ID是八的这个员工呢,给他挑出来。所以呢,我们需要呢,针对于啊这个相关的这些数据呢,做一些比如查询的操作,那么这个行为呢,咱们就封装在了叫name list service当中。诶或者说呢,咱们刚才呢,也提到了,这里边儿是二维数组,把它呢得转换成是对象数组,这个时候呢,也是把相关的代码呢,是写在这个里边,所以呢,我们接下来第二个啊,要完成的点呢,就是这个nameless service啊就他。
10:01
啊,这个完成以后呢,下边一个操作呢,涉及到了就是我们需要组建一个开发团队啊,开发团队这个成员呢,我们也可以呢,实现一个比如删除的操作,这样呢,我们把这个中间这个人呢,给他删掉了啊,诶上面这个啊。诶删掉以后呢,不就没有刚才说的那个杨延庆了啊,刚才那个删除操作呢,其实呢,是针对我们这个开发团队来进行的,那么这个相关的这个方法,我们是封装再来叫team service里边。哎,所以第三个我们要完成的实际上是这样的一个类。好,那么在整个这个过程当中,诶,我们会涉及到什么呢?相关的一些添加不成功的情况,删除不成功的情况,然后这些呢,我们都以异常的形式呢来抛出。所以这块我们会制定一个异常。好,这块还有一个叫status,这就涉及到员工的状态啊,比如说你是free状态啊,还是busy状态啊,然后这个状态呢,我们使用的叫枚举类来进行的刻画,这块呢,Status是一个枚举类。然后上边这块呢,是一个单元测试,就是我们在写代码过程当中,如果这个程序呢,比较大,我们写到一定程度的时候呢,适当的我们可以及时的进行一个测试,没问题了,我们再接着往下写,诶这是中间的一个测试的环节,好,然后呢,最后呢,我们整个呢。
11:11
跟用户交互的话呢,是有这样一个界面啊,相关的数据的展示啊,从前面获取数据啊,诶这样的一些行为,我们涉及到了有一个啊,就是这个view啊,在这块呢,跟用户呢,比如说显示这些信息,你选几啊是吧,这个呢是写到这儿的,然后呢,我们需要从键盘来获取数据,这个行为呢,我们是封装在这个叫ts utility当中,这个里边呢,就是封装了关于scanner的一个使用。好,那整个的话呢,我就把整个这个项目呢,相当于给大家呢说了一下,那接下来的话呢,我们就开始呢来呃,写这个项目,这个写这个项目的话呢,还是跟咱们这个项目一样啊,前面这一类的话我们都自己写,最后呢,涉及到跟键盘去交互了,这个呢是一个工具类,直接拿过来用就行,然后呢,我们跟用户去交互的时候呢,这个team view呢,这块呢,咱们也是直接用现成的就可以了,所以这两个呢也看作是现成的,前边这些呢,诶,除了这个data之外啊,剩下的都我们自己来写。
12:04
OK,那么接下来的话呢,我们就要开始呢去写这个项目了,把这个我们就收起来了,在当年这个product的这个包下呢,我们可以右键啊,先去新建一个包,这个呢,比如我们就称为呢叫team吧,这呢是跟这个model呢是并列的啊,这样的两个包咱们在这里边呢去写好,那么首先的话呢,我们也创建出来跟它一样的这样的几个包啊,这样几个子包,首先的话呢,这个叫斗闷。呃,一般呢,抖漫下边放的就是我们一些诈宾了啊,像我们刚才说一些员工啊,一些设备啊,都在这个下边了,好那么接着的话呢,我们再去创建啊,比如刚才提到这个service。诶service刚才呢,提到了我们这个name service,还有这个name list service和这个team service,这个呢都是在这个service下边提供的啊,然后呢,跟用户交互的时候呢,这我们有一个具体的界面了视图,所以这个呢叫view,诶中间呢,我们需要呢做测试的,我们到时候呢再去创建就可以了。好这呢,我们先创建出来了这三个啊,然后呢,我们就直接回到咱们这个PPT层面啊,稍微的做个说明。
13:01
诶,刚才的话呢,其实已经提到了相关的这些类呢,是什么样的功能了,OK,这个事儿呢,已经说过了啊,然后再往下。哎,再往下的话呢,我们首先呢,来完成的就是这个抖漫,诶这个do漫的话呢,下边需要设计这样的一些类,呃,然后呢,从programmer开始呢,包含一些设备,设备呢是个接口,具体的有一些实现类啊,这样一个场景啊。好,然后呢,有几个现成的类呢,我们把它拿过来,第一个呢叫做data啊,第二呢叫ts utility啊,这儿呢,大家你从咱们写好的这里边儿去粘过来也行,或者呢,你找咱们这个课件里边这俩也行啊,首先呢,这个data呢,CTRLC一下,咱们把它放在这个service里边。然后还有一个啊,这个ts utility啊,CTRLC一下,把它呢放在这个view里边。啊,这个呢,都是这个课件里边看这说的哈,他这样说咱们就这样写就行,所以这块呢,大家下来写的时候呢,也是参照一下这个PPT啊,这样的一个流程,在相关的类当中都涉及哪些方法呀,是构造器怎么去写啊,这个呢有哪些注意点啊,都看这个PPT就行。
14:02
好,这个完事了,然后接下来诶,它这呢,首先呢,针对这个TST呢,进行一个简单的一个说明,这呢我们稍微的可以看一眼啊,把它呢打开。这个呢,就跟咱们前面写的项目一项目二一样啊,封装了scanner的一个使用,比如说呢,我们去读一下用户的这个选择,1234,不是1234的话呢,就不让他出来,这个方法呢,直接调就行了,然后呢,这块呢,按回车键继续,刚才我们演示的过程当中都有这个需求,所以呢,你就直接呢调这个方法就可以了,还有呢,我们去读一个int,说呢,你想选编号是几的是吧,ID是几的,添加到这个团队当中啊,你想删除哪个人呢是吧?这个呢都是需要读个数,用的是这个方法。下面这块呢,说你是不是确认啊,Yes还是no是吧,对应的是这个方法。然后呢,下边呢,是上面这些方法当中要调用的这样的一个私有的方法,诶没了啊就这样啊啊这个呢,简单大家看一眼就可以了,然后接下来。下边的话呢,我们就来设计具体的这样的一些情况了哈,那首先这块呢,提到是设计,这个叫设备是吧,叫equipment啊这呢是这个接口,下边是它的三个实现类。
15:04
那咱们就先来做这个事儿吧。哎,把它呢,这样的盯一下啊。回过来这时候我们就开始在这个抖慢下呢开始去写了,然后先右键直接呢我们去创建一个接口。这个呢叫equipment,这个看清楚哈,像这个单词呢,我们平时不常写的这个你写的时候别写错了,一旦你写错了,后边跟着用,全都写错了,后边再改挺麻烦的啊。好,这个呢叫做设备啊,这个设备里边呢,就写了一个私有的,哎,不是私有的了,一个抽象的方法啊,返回值呢是string,叫get description。直接呢,我们就string。Get。是吧?哎,这样就可以了,看一眼别写错了。完事了,然后呢,接着呢,提供三个实现类。首先写这个吧,PC。让他呢,去implement一下,我们这个equipment这样啊,然后呢,诶我们讲过那个快捷键还记得不。Ctrl I是吧。
16:00
哎,CTRLL啊或者呢,你在这个位置呢,Alt加回车也行是吧。就啊好,这个呢叫get description啊嗯,这个设备的话呢,我们如何呢,去写这个方法呢,返回这个字符串啊,这个相当于得告诉大家了啊,最后呢,它这块呈现出来的实际上就是我们调这个方法呢,返回的这个字符串信息了,哎,相当于就把它的两个属性呢给它诶放在一起,后边这个属性呢,加个小块就可以了。行,那这个属性信息呢,这也提到了,词缀类型的叫model啊,此类类型的叫display啊。是有的。Model。哎,类型的display是吧,哎,这样就可以了,那关于这个model和display什么意思呢?这块有写,这叫机器的型号,下边这叫显示器的名称。啊,这个呢,为了方便起呢,你也可以呢,给他粘过来是吧,便于我们去看啊。好,那么接下来的话呢,我们可以呢,再针对这两个属性呢,提供一下,比如说盖菜方法。比如说构造器。
17:01
哎,构造器呢,先整一个空餐的。哎,再来一个代餐的。哎,这样是吧,然后呢,接下来我们去写这叫get description啊,你就把这两个属性呢给他,哎,返回就行了,诶model呢,你给他写前边后边呢,给他补上一个小括号。哎,加上我们这个叫play,哎,再补一个小括括,哎这样就行了,这里是一个统一的一种格式写法啊,主要目的呢,是为了调方法时候呢,呈现出来就是这样的一个效果。这是一个了,再来。Notebook。让他一下equipment问题啊,这块呢有叫。Private啊,Double类型的。诶这样啊好,然后这块我们为了不让他报错呢,先啊CTRL按一下,把这个方法呢,先提供出来啊好,这两个属性model呢,刚才也说过了,是这个意思。
18:02
哎,这个price的话呢,自然而然就是我们说的这个价格了啊。好,这就可以了,然后接着我们去提供首先盖菜方法。扩大器。啊,这个呢,就比较简单了都啊。嗯,OK,好,然后再针对我们这个叫get description啊,我们去写一下这个呢,就是model。哎,配上一个小括号,哎,加上这个price,哎,再配上一个小括号。哎,这就可以了。这个呢,就我们说这叫notebook啊,这个笔记本啊,这个是台式机啊,然后呢,再去提供一个打印机。Printer。OK,首先呢,Implement一下equipment啊,回过来ctrl I啊,重写这个方法先放到这儿。Private词缀类型的name。磁质类型的tap。
19:00
哎,这样啊。这个呢叫产品名称。诶,或者叫打印机的名称。这个呢叫机器的类型啊。行,就这样一下,然后还是加上insert。Get set方法。哎,够到够到气了是吧,哎,先来一个空餐的。诶,代餐的好没问题,然后接着呢,把这个方法呢,我们做一个重写啊,呃,跟上面一样,首先呢,是一个model。哦,对,看错了啊,这个是吧,Name啊。然后小括号加上一个tap。你看这样封一下就行,Ctrl alt加个L啊,稍微调整格式OK,那这样的话呢,我们就把这几个类呢就搞定了。哎,这就完事了啊行,然后呢,再往下,再往下这块呢,就提到了我们相关的这个员工了啊,员工这块呢,有employee,有programmer,然后呢,还有mer,具体的类designer design类,这是一系列的继承的关系,我们就一个个来,首先呢看一下这个employ啊,还有这个叫programmer,我就这样把他俩呢一块的盯一下啊。
20:22
这个呢,我们就都写到这个动脉下了。哎,首先啊,Employee啊。这个类。这里边儿呢,有四个属性,然后呢,提供一个呢,呃,用于初始化这四个属性的一个构造器。哎,这个是string类型的name。In的age。Double型的salary,诶,行啊,这就是我们平常常见的几个基本的属性了。这个先整个构造器吧,哎,空餐呢,咱们也整一个。哎,全餐的这样一个。然后盖菜方法,这都是基本的啊。
21:00
这么着诶就可以了啊行,这里边呢,其实也没有提这个突方法的事儿,这个图存方法呢,其实我们后边呢,是需要做这个重写的啊,其实你能感受得到啊,咱们在运行的时候呢,这呢,你看到这个情况,其实呢,就相当于调每一个对象的图轮方法了。但是暂且的话呢,我们,诶这个也没有提怎么去写,PPT里没写,咱们暂时就先不管它,一会儿呢,我们测试的时候需要了,我们回来再去补这个事儿。好,那么目前呢,关于这个employee呢,其实也就这样了,然后下边看这个叫programmer啊。哎,新建一个哎pro。啊。让大家去继承于首先employee,诶没问题,然后呢,在我们现有的这四个属性的基础之上呢,又多了这样的几个属性。呃,首先呢,叫private,这个int型的叫ID。诶这个呢,我们组建开发团队的时候呢,就是只有是programmer以及它的子类的对象呢,才可以放到咱们这个开发团队里边,像我们一开始这个马云,它就是普通的一个employee啊,他呢是不能够添加到我们这个开发团队里的,他也没有设备,从这个程序员这块开始呢,才有设备的,你看他后边就。
22:08
啥也没有是吧,比较空哈。好,那么既然每一个这个从成员开始的人都有可能进入到开发团队,开发团队的话呢,我们上面也看到他们有一个T嘛。这个TD呢,就是用的这个member ID呢来表示的啊,来这个关注一下。就是诶开发团队中。的这个ID是吧,或者叫ID吧。哎,就看到的这个,诶T啊。就这个值啊。好,这是一个了,然后呢,从这个成员开始的话呢,我们有一个状态啊,Status的一个信息,这呢我们就声明一下啊,Private status就叫做status是吧,然后这个status的话呢,这个呢是一个具体的类了,是一个媒举类,媒举类没有我们得需要呢,创建一下这块提到了是在这个service下边,我们自定义的一个枚举类,就三个状态,Free,还有。啊,就这样三个情况啊,CTRLC好回过来在这个service下边,哎,我们呢,右键去新建一个啊叫做innu,或者叫an,叫status。
23:10
哎,就这样啊好,它呢就仨直啊粘过来。诶,你转过来啊。就是仨值。因为呢,我们当前这三个对象的话呢,其实你也没有其他的一些实例变量的信息了,所以呢,我们就是干巴的放这样这几个值就可以了,是吧。哎,这就可以了。前面我们也说过啊,这样类似的这个场景了,行这就完事了,然后呢,回过来以后啊,在我们这个program这块呢,Status。哎,这个呢,我们得out回车一下看清楚啊,别用这个写现成的,是咱们自己在这里边的点一下。然后这呢,还显示的给它赋了个值,也就是说你创建这个programmer呢,默认情况下呢,它是个free的状态,所以呢,我们就直接status点啊free了。哎,这样就可以啊。行,这是我们说的第二个属性,然后第三个啊,Private这个呢,叫equipment这样的一个设备,这个看清楚啊,咱自己写的这个team这个包下的。
24:07
Equipment行,完事,接下来啊,我们可以呢,提供相关的这个,比如盖方法啊。啊,这是啊一组。然后呢,再提供这个构造器。哎,比如说空餐的一个。哎,这是一个,然后接着啊,这块提到一个代餐,这个代餐你稍微看一这个其中呢,Idary。啊,因为这个MID的话呢,我们在把它添加过来的时候呢,才会给他去付啊,你要是就是一个普通的成员呢,我们也没必要呢给他去付一个这个ID了,只有他进到团队的时候呢才会给啊然后这个呢,默认就是,然后这个呢是有必要呢给大家去指明一下的,所以我们这儿呢是四个加一个这样的属性,这个稍微的你得看清楚。调用负类这块呢,四个参数的,自己这块呢,再补一个设备。
25:00
一下。哎,就这个意思。好吐方法的话呢,同样的道理,我们暂时呢先不管啊,那这两个类呢,我们就写完了。啊,接着往后啊。诶,拎过来回来,哎,接着我们回到这儿啊,继续。Design啊。啊,Design啊没问题,这个呢叫设计师啊,设计师的话呢,我们private w型的叫bonus。哎,这呢是这样的一个属性,然后他呢,去继承于咱们的啊程序员是吧。哎,Programmer这个看清楚啊下的。OK啦,然后呢,针对这个属性呢,首先概算方法。给一个,然后呢构造器。整一个空餐的。啊,这是一个了。然后这时候这个参数比较多的呢,接着把负类的这五个参数呢,拿过来,再加上你自己的这个。
26:01
那这个就是这里边儿所描述的这个问题。完事了啊,就这样啊,然后呢,下边这个叫architect。Architect这个呢叫架构师,这个单词呢不太好写,不太常见。啊,以后想当架构师的呢,这个词呢,得熟悉熟悉是吧。啊,Designer啊,OK,这里呢,多一个属性private in型的叫做stock啊。这个呢叫股票啊。哎,所以呢,有的时候大家去一些这个。呃,咱叫什么公司啊,比较有前景的这种互联网公司是吧,那你可以拿到一些这个,呃,就是如果上市的话呢,可能会有一些股票啊,一些原始股啊,包括呢,前期的一些分红啊等等的这个都会有。当然呢,这几年的整个大环境不太好了,大厂呢,现在也比较难受一些是吧,不像那个一五年啊,一四年那个时候呢,其实好多的互联网企业起来特别起的特别快啊,即使呢,像一些大公司呢,它还有一些新的一些项目啊,起的话呢,你要是进的比较早,这个呢,也是一个技术骨干,后期呢,其实都会有这样的一些福利的啊。
27:04
好,那接着啊,我们这块呢,针对于它呢,首先提供这个get和set方法。哎,然后接着提供这个构造器啊。整一个空餐的。啊,接着呢,提供一个代餐的。Play呢调五个参数的,然后自己呢,再把stock呢给它加上。哎,这个就比较长了,就啊。OK,行,这呢就完事了。好,那么至此的话呢,咱们把这里边儿呢,这个呃,斗漫包下的相关的一些渣聘啊,其实呢,就设计完成了。这呢算是咱们的第一个功能吧。OK。那么刚才呢,我们写的是第一个功能,第一个功能呢,相对来说不太难,大家写的时候呢,稍微的小心一点就可以了,然后接下来的话呢,我们来完成一下呢,叫做name list service这样的一个类,这个类呢,主要的功能呢,就是咱们刚才这个这个类下边的这样的一些数据装配到我们相关的这个指定的对象下。
28:02
然后呢,能够呈现出来看到的就是。这样的一些效果的数据了。这也就是我们这个name list service,它要完成的这个功能,好,那下边呢,我们就来做这个事儿了,然后这个类的话呢,是声明在我们这个service下边的,所以在这呢,我们去新建。加name。List。哎,Service好,就来做它了啊,然后主要做的事呢,我们在这儿呢,其实也有这个说明,哎,就是它,哎CTRLC粘过来啊,就放到这儿了,剩下负责将data当中的数据呢,封装到employee的这个数组当中,同时呢,提供相关的employee数组的一些方法。OK,那具体的这个类里边呢,需要有哪些东西呢?诶这呢也有说明,首先呢是有一个属性啊,Employee类型的一个数组,然后呢,下边一个构造器,两个方法,那咱们先把这个事儿呢,先整体上给他做一个声明,然后呢我们再看具体里边呢是怎么来写啊。这呢是类型的一个数组。啊就叫employees啊,就它这呢,就是我们整个呢,诶打开来看一看,就是这呢,一共是从一到12啊这呢就是12个对象,12对象呢就放在我们这个数组当中。
29:11
OK。然后接下来的话呢,有一个public呢,叫nameless service这样的一个构造器。哎,这个呢,暂时我们就先放到这儿啊,然后呢,接着有个public呢,叫employee类型的这个数组,Get all。Employees是吧?那其实呢,就是我们调离方法的时候呢,获取这样的一个数组就可以了。相当于是一个get的方法一样啊,好,再往后甚至叫public。返回的是一个employee。Employee啊叫get employee啊指定的一个ID。诶这样的一个方法,诶这呢是什么呢,咱们呢,这不要这个添加团队成员啊,你选这块呢,就要指定ID,就把指定ID这个员工呢,我们给他取出来用的呢,就是这个方法。这个方法呢,你取的时候呢,我们一共呢,ID是有一到12,你写了个13不靠谱,所以这块呢会抛一个异常,这块呢就是一个自定义的一个异常了。
30:07
行,这块我们写到这儿的时候呢,再说啊,这个暂时咱先闹一下。这个呢,也先。哎,闹一下。这儿呢,就提到了这几个方法啊,这就完事了啊,下边的话呢,我们就具体的去写了,首先的话呢,我们要写的话呢,就是关于这个构造器了。啊,这个属性呢,我们就不显示复制了啊,然后呢,就在这个构造器里边去赋值,构造器里边要做的事呢,PPT里边这也写了,那你就CTRLC一下拿过来,咱就先来完成这个构造器的事儿。哎,写来写它了啊,什么意思呢,就是我们后边的话呢,不是说在这个view下面咱们就会写叫team view吗。哎,这块呢,从这个出,从这个需求出发啊,这个给大家说一下,现在叫team view,然后这个team view的话呢,我们后期呢,在这里边呢,去跟用户去交互,有个没方法,然后呢,你就哎team will啊,来个will啊new一个啊team will。
31:01
造个这个对象,然后造完这个对象的时候呢,我们在这个类里边呢,去声明一个,比如说呢,叫a private叫。哎,List service,哎,咱自己这个啊,比如我就叫做list一个service了,哎在这去new一个叫name list service,好当我们创建当前这个类的对象的时候呢,它就会有这样的一个成变量了。然后当我们这上呃,又造了一个当前name service对象,这不就调我们刚才这块这个构造器了吗。调离构造器的时候呢,哎,我们在调它的时候,里边这个事儿就做了,这个事做完以后呢,其实就把这个数组呢,都装配好了。所以呢,接下来呢,当你去调这个方法的时候呢,诶我就直接呢,把它返回这里边儿就有数据了。啊,有点懵啊,换句话说呢,就是咱们这个属性它呢,就来表示咱们当前这个所有的12个员工的,那现在你这个位置不是没赋值吗。把赋值的这个事儿呢,就放到构造器里了。啊,属性的赋值我们可以在过道期中做是吧。诶,就来这里边呢,去写这个事儿了啊,那杨IG呢,我们现在要做的事呢,就是把data塔里边的。
32:05
这个二维数组,还有这个二维数组相应的呢,我们得把它呢对应的转化成一些对象了啊。好,那么回过来。嗯,怎么做呢?这里边也有一些提示哈,说呢,根据项目提供的data类构建相应大小的employees的一个数组,就是这个数组呢,首先没有说化啊,你得先扭一下这个指定一个长度,然后呢再一个一个的往里边去放,那首先这个长度是多少呢?哎,取决于我们这个贝塔它的一个长度。贝塔里边这个employees是吧,它这个长度是不就一个两个三个往下数,这不就12个吗。哎,那回过来这个看怎么做呢。哎,首先employees等于new一下employees这个呢怎么写。哎,这呢是我们这个data塔这个类是吧。Data这个类里边呢,有一个employees这个二维数组,它的一个length。
33:04
是这样吗?OK啊,诶这个呢,稍微的注意一下。好,这个呢,我们先把这个数组呢,先把它呢,用一个动态初始化啊,初始化一下,然后的话呢,我们再通过一个。是不是现在要想的话呢,应该得写一个循环的方式了,依次呢去赋值啊,employees.length一下。这个呢应该都好理解啊,那关键的难点呢出来了啊,我们现在这个employees这个I的话呢,它呢new的这个对象啊不一样。也可能用的是一个program。啊,以及呢,Program的下边的两个词类的啊,那到底应该拗谁呢?取决于什么。对,取决于呢,我们这时候呢,取这个I的时候,这不是一共是有12个嘛,诶每一个在取的时候呢,当前这个二维数组的。啊,里边这个每一个元素里边的第一个是吧。哎,这块呢,我为了咱们方便看哈,咱们这么着一下。
34:02
这个呢,其实难度倒不大,但是呢,就是挺绕的哈。哎,我就先把它放过来,咱们一边看一边写啊,所以呢,这块呢,我们到底拗的是谁取其实就是这里边儿的这一列吧。哎,就看这个数据了哈,好,那我们现在要做的事呢,是不是先把这个数呢,再给大家取出来呀。如果他要是十,我们就是new。哎,你用谁啊,这块还得看data塔上面还有一个这个呢。哎,全局常量是吧。诶,你要是十的话呢,我们去new in employ e11呢,就它12,他13他是吧,这个呢,给我们提上稍微这块注意一下,咱们现在呢,看到的都是字符串啊,这个十你取出来之后呢,我还得把它是不是转化成是一个in的形的值是这个数,咱们才算是相等的是吧。好回过来啊,这个呢,我们就这么着了,首先呢啊,不是employees了是吧。里边这个employees。它的I的第一个位置。这不就是第一列的这个事儿吗?
35:01
诶,把它取出来之后呢,这是个字符串,我们得把它转化成是一个int类型是吧。哎,所以呢,使用叫点pass in。哎,这么着一下。这样的话呢,我们就得到了具体的这个数了,这个数呢,我们起个名就叫tap,它呢就决定了我们员工的类型。这个员工的类型呢,我们下边呢,根据你是十十一十二十三,我们就可以呢,你有不同类型的对象了,所以呢,情况也不多,是不是就随时了。哎,对的啊,好一进来,然后呢,如果你这个值呢是十,我们就去new employee,哎,那大家可能会去想,那我直接就写十。写实呢,是可以的啊,有同学说不行,可以的,没问题,只不过呢,你这样写的话呢,不太形象是吧。你说写个十,哎凭啥十就是new引泡呢?哎建议呢,你写谁呢?写这个名是吧?哎,那这个名怎么调呢?是不是就data点我们就调这个employee就行,实际上它的值不就是十吗。
36:03
诶,所以你写十写11行,但是呢,不是说可读性差一点嘛。哎,那这块我们就写点你是一个mer是吧,这就它,然后依次的话呢,一共有四种类型。啊,你可能是一个叫designer是吧,是12的。是一个R13的,哎,这样写好一点。嗯,那顺便呢,再稍微说一下,你看我这块呢,每次老是调data.data点这呢,都是他内部的一些成员了,而这个成员呢,有个特点啊,他们都是静态的啊。咱们以前呢,讲过一个import static。是吧?的话,就我们可以导入指定的类的一些静态的结构了,你看我这样写啊,Com点零点。嗯,咱们那个是放在team下的是吧,这个呢,是在service下吧。搜一下的。嗯,得塔,这个念得塔啊,这个念data。
37:01
或者这个念是吧。哎,它下边的星。注意啊,我这是import诶。最终给我整没了。又。嗯,我我我我这么着一下啊,他是觉得我不用写。我这么找一下。然后呢,我我再。还得再整一遍啊static com点06点下service下的。A塔点。我点星一下,诶这就没事儿了是吧,那我这样写完之后呢,这个星呢,其实就代表这个data这个类下边的一些静态的结构了,哎,如果你要上边写这个语句了,我下边这块呢,我就可以省略这个data点了,进而的话呢,这块呢,我也可以省了。这个呢,我也可以省了。这就一个小知识点啊,你要是不写那个sta的话,这块你就全。这是小事儿啊。这一个小细节啊,让大家再体会一下import static这样的一个知识点。
38:01
好,回来啊。那如果呢,你要是一个employee,哎,这就好说了,咱们就需要呢,这个employees,这个数组I的位置,咱们就去一个employee是不是就可以了。这个呢,下一个问题其实也出现了啊,我们在new的时候呢,尽量的把这个属性值呢,就顺带着就给它附上了。哎,所以呢,呃,这个我们先先这么着一下啊,我先把它先写过来,这个呢,New的话呢,就是一个叫programmer啊。这个是designer。诶RT是吧,但是这块呢,我们尽量呢,不要调这个空参的构导期。呃,因为这个数据的话呢,我们下边顺带着不就把这个数据取出来,直接呢,就调那个代餐的构造体多好啊。好,那下边我们就要取这些属性了啊,取这些属性的时候呢,你会发现呢,不管你是哪一类员工啊,作为employee的话,真的都是此类了啊,最起码呢,大家都有四个属性是吧。就这四个一般都有,一般要都有的话呢,我们不妨呢,把都有的这个事儿呢,我们就提前在这儿获取吧。
39:00
这呢就相当于叫获取通用的这种属性啊。好,那么第一个呢,这是1234,这其实就是ID了,这是字符串,实际上呢,我们也需要把它转换成是一个in的类型的啊。所以我就直接这样写了啊,ID第二,Pass。这个呢是小心一点啊,Employees这个里边的I的第二个列是吧。这是获取ID的啊。然后第三个呢,是它们的名字,这个呢,直接就是字符串了。这就不用转了是吧,Employees。I的第三个列是吧。好在下边呢,这是他们的年龄,这就得转一下了。Employees这个里边的I的。这是删了该。嗯,后边这个是他们的。后边那啥工资是吧。哎,工资这个你要不熟了,你稍微的再搂一眼啊,Employee这个呢是一个大型的,这呢需要也做一个转换啊。
40:00
啊,回过来。哎,在这儿啊,Double类型的叫prize啊。诶,是price salary。好,这个呢,就是pass。啊,Employee,这看不见了啊。这儿是吧。哎。这个呢,写一个四拉盖。诶这样就行好,那么这四个属性呢,是每一个类型啊,大家都有的,我就统一的就写到这儿了,写完之后的话呢,你要是employee呢,我们这儿呢,直接呢就ID了,Name啦age啦,Salary了,没问题是吧。然后你下边的话呢,我们说从这个开始,它会多一些属性。比如说这里边我们这个扩大器呢,要求你把这个设备的是不是得提供一下。啊,这两个不用啊,然后呢,它的这个类呢,叫做designer,再多一个owners,这个呢再多一个stock。呃,但是这块呢,已经不算是这个通用的了啊。
41:00
所以呢,接下来我们再去读,比如说这个数组,哎567这个你要读的话呢,就冒着一定的风险了。因为有的就没有了是吧,所以呢,就不适合往这块来写了。啊,因为这块我们针对于每一个I呢,都去这样获取,你像第一个呢,马云你再往后边去找这个角标五的根本就没有了。所以就不能往这写了啊,那往哪写呢。对,那最好呢,是不是就写到case里了?哎,就得往这儿写了啊,比如你这个I的话呢,就是一个programmer,你在这边去找它一定会有那个角标五的。哎,所以呢,你要再写的话呢,既然不是通用的了,那我们就写到这里边儿吧。哎,比如就这了啊,哎,下边这个呢,面对的应该是一个什么呢。啊,这个呢,我们从program这块开始,它不是有这四个吗。这四个完了以后呢,后边是不是该这个设备了。是吧,那equipment没有,所以你在这个位置呢,是不是得声明一个叫做equipment。诶,然后呢,这叫equipment,然后这块你得把这个设备得给我弄出来呀。
42:03
但设备的话呢,这块呢,就是我们对应的,咱们找一个看谁呀啊这块呢,看不到了是吧,这一共有12个啊,这12个的话呢,跟我们这12个呢,正好是一个对应关系啊。这是12个员工,这儿呢,一共也是有12个元素,第一个马云呢,其实对应的就是它了,第二呢,马化腾对应的就是这个。哎,就这意思压ID呢,就是这个I是几,你就去这里边儿找那个I。就行。好,这呢,遇到第二个问题了。看他是吧。诶,刚才我们这个成员这个员工的这个事儿还没装完呢,现在又出现下一个需求了。这里边儿呢,是对应的这三个值。跟我们刚才的员工啊,其实有点像哈,在这个设备里边呢,第一个列他写的是哪个数,我们就对应到这儿呢,去创建哪一个设备。同样的这个问题啊,那回过来在这个位置呢,我们需要呢,给它装配好就得是一个设备了,这个呢,很显然呢,是不是一行代码搞不定是吧。
43:02
那这块最好我们给它封装到一个方法里得了,咱们叫做create一个具体的equipment吧。哎,这个设备,那你创个设备,这个设备是要哪一行的呀,我现在是第行的这个员工,那对应这块呢,是不是就Di行的是这个设备啊。所以你把这个I呢给我传进去。啊,就是这样的一个情况,好,那么这个方法我们该怎么去设计呢。哎,我们首先呢,得写到这个构造器的外边了啊,在这儿来写。哎,我们要求它的,哎,咱们先写成public啊,返回值呢,就是一个设备。这个我们叫create一个设备,你把这个index呢传过来,其实这个呢,就是对应的我们是第几行了,其实啊,那其实严格上来讲,写ID呢不太合适。恰好呢,只不过这里边这个第一个第一行就是ID是一了,是吧?啊其实呢,是第几行的意思,这个是第几行,这块我也取第几行啊,这就写个index了,好根据呢,你上边员工是第几行,我这块就取这一行的设备返回给你一个equipment。
44:03
诶,这个稍微注意一下啊好,那这里边呢,下边相当于就又到这儿了啊,这个方法呢,因为我们只在这个内部用,不需要对外暴露,所以咱就了。这个呢,看看怎么去处理。是不是首先呢,找到你这个数组里边啊,Index这个位置的相当于第几行是吧?找到这一行呢,第一个值是吧?根据这个值呢,你看它是几,然后决定你要的是谁的。所以呢,应该是这么着了啊,这叫equipment找这个设备是吧,这个呢叫index吧。哎,这一行的第一个位置吧。第一个位置的话呢,它是一个string类型的,咱们其实需要的是一个int类型是吧,所以还是一个int型的,这个是我们的设备的。它的一个类型。哎,这块呢,又得是in enter.pass。这么着啊好,那么接着呢,再去Switch,把这个设备的类型呢往这一放。那根据呢,它的值是21 22还是23啊意思呢,去匹配这个呢,建议呢,你就不要写21了。
45:04
对,你就写这个叫PC是吧。哎,这样啊。OK,这呢,一共是有三个嘛。啊,CTRLC。哎,这个叫哎notebook啊,就是对应的我们这三个常量了。Printer是吧?哎,就他好,那么接下来的话呢,我们意思呢,就是在这里边呢,呃,这个break这样写的写了也行,或者这块我都懒得break了,直接用return就完了,是吧,你就你一个PC呗。哎,就可以是吧,然后呢,下边呢,依次如此啊。哎,瑞清一个叫notebook。哎,就这个啊。Printer。行就可以了,好,那么你不能这样给,这样给的话呢,都没有属性值的,你需要把这个值呢,也得给它填充上,这个值的话呢,相当于我们就得获取一下了,是吧。获取的话呢,来来看一看啊。
46:01
这个这是我们说的第一个,这第二列这块你看到其实都算是串类型了。但是有的话呢,他好像需要的不是字符串类型。这个你得稍微往前搂一眼啊。哎,看这儿吧。你稍微的看这一眼啊。嗯,这一块呢,我们就先这样盯一下这个。屏幕上稍微有点多了啊。好,你看下面我们要取它的这个,这算第一个列是类型,第二列和第三列,这个第二列这块呢,这个是string类型,这个是string类型,这是string,诶这个还好。那这块我们相当于是就这样取了啊。先找我们这个叫equipment这个设备,看清楚它的index。找它的这个第二个列是吧,这块我们找到呢,其实就是对应的这里边的算是叫这个model啊,Name或者是叫model了,哎,这个就是字符串类型,所以我这块这样写啊,你是叫model或者呢是叫name是吧。哎,这我们找到的算是第一个字段嘛,因为我们调构造器的时候,这不都是第一个字段吗。
47:01
然后第二个这块稍微的有点区别了,这个呢叫这个叫。这个呢叫display,这俩呢都是string,这个呢是double是吧。相当于这个还得转一下,那咱们现在那就先别统一的去转了。我先把这个呢,先取出来,这个是二是吧。然后这呢,我们先拿一个string来接收,它可能是叫做price。或者呢,叫display。啊也或者呢,是叫tap。那稍微的长一点,就是对应的第二个这个属性,就是放到我们构造器里边的第二个位置呗。能看懂是吧。好,然后呢,第一个那这个呢,我们就直接呢,往这儿去塞就完了。然后呢,对于PC来讲呢,第二个还是个死针形,那直接就把这个往这塞一下是不是就可以了。然后这个呢叫notebook notebook这块呢,稍微麻烦一点啊,第一个呢是string,这没问题,第二的话呢,这块你得转一下是吧。对,这呢,你得调一下这个double.pass double,然后把这个字符串呢放进去。
48:03
哎,给它转出来。是一个double型的,一个叫price。哎,这叫它的价格,然后把这个price你往这放一下,因为人家这块是个double型的啊,你不放的话,你不转的话,那就是string,那就报错了啊好,然后这个printer的话呢,第一个属性扔进来。啊,然后第二呢,它还是一个磁砖类型的,你还用它就行了,往这一扔,哎,这是不是就妥了。好,那当我们调完这个方法的时候呢,他就给我返回一个具体的这种设备了,但是这块你看我写的这个case,诶那人家可能说,诶那你这个Switch进去了,万一要是没进去呢,诶所以这块你看给我报错哈,那这块我就暂时跟你闹了。哎,其实这块呢,是执行不到这个no啊。好,那么这个方法我们就写完了,写完以后呢,再回过来,哎,好不容易这块我们就把这个位置给它搞定了。哎,这个就搞定了,然后再往下拽啊,再回过来。啊,这个想想我们写到哪儿了,别写着写着已经迷路了是吧,哎,忘了写到哪儿麻烦了啊好这块的话呢,我们写到这个成员这儿了,从成员开始呢,他们都有这个设备了,所以这个设备呢给他了,那对于程序员来讲,他已经完事了。
49:08
然后该这个设计师了,设计师这块的话呢,它除了有副类的这几个属性之外呢,他还多一个。奖金是吧,奖金的话呢,那其实呢,就是接着我们再去获取。或许你看这块呢,看不到了是吧,这个呢,可能我们会响一声,我们接着这样写一下是吧。然后再接着,哎,我们呢,去调这个employees,它呢,哎里边的这个你得看清楚是该哪一个了啊。上面呢是1234取了四个了。是不是就是这个1234啊,那对于马化腾来讲是到这儿了是吧,然后后边这个呢,其实就是奖金。设备设备咱们不是没有在这体现是吧。哎,这个其实就奖金,所以这块该五了是吧。这个一定要小心点,这是五啊,这叫奖金,奖金的话呢,其实也是一个数值类型的。
50:01
啊,如果记不清了,你过来看一下是一个double位型的啊,所以呢,我们再回过来这个位置呢,仍然需要做一个转换吧。诶点pass是吧。哎,怎么着往这一放啊好,然后这个位置呢,我们来一个double波形的叫bonus。诶,这样个值,然后把这个bonus ctrl c,诶往这一扔,这就可以了。把这个写完之后,你发现报错了啊。诶,这个呢,主要错误的原因呢,是因为说我们在上面呢,声明一个equipment说这又写了,不让写了。对,这是就是相当于,呃,咱们这时候理解呢,是在这个大括号内呢,你现在不是有两个名吗。这就不行哈,嗯,那就要么你换个名是吧。这是一种方案,或者说我们这个总感觉换个名感觉显得挺low的,怎么办啊,不信你就这样。把这个声明的时候,你写这。然后呢,这块呢,你只赋值。哎,这不就没有歧义了吗?诶,那就可以这样来去处理啊,然后那类似的话呢,Bo下边不也要用bono,那干脆也这样得了。
51:06
哎,这个呢,这样写一下owners这个就不要写了。这就行了。好啊,然后啊,接着该下一个了。对于下边这个呢,构造器是在现有的这个基础上呢,这不又加了一个叫做stock吗。股票是吧,好,那这里边儿呢,诶后边这三个属性呢,这不是先这俩先获取一下,然后呢,再整一个股票,股票是个int类型的股票呢,干脆也放在上面得了。啊,Int型的一个叫stock。Stock等于啊,这个integer第2PASS啊,Equip employees是吧。我这是不是写错了?不能写成设备了是吧,所以这块写的时候一定要小心点啊。然后这个呢是I,这个是。六了吧。哎,对的啊好,然后那个呢叫to,诶往这一放。
52:03
诶,基本上呢,算是搞定了。看看OK不?小心一点啊,然后这块呢,这不就是相应的这种复制的一个过程嘛,那这个代码呢,其实就在这儿提示我们这个事儿的啊。哎,这么着。哎,这个处理起来呢,还是有点悲壮的是吧。诶,那么以后的话呢,咱们这个数据呢,都是放在这个数据库当中的,数据库当中呢,我们需要用这个circleq呢去呃读或者叫查数据库当中,这个数据查回来以后的话呢,其实我们这个封装的事儿呢,到时候呢,其实都有相应的一些结构,我们可以直接去调哈。啊,直接的就写好了,我们直接呢,其实一调那个方法直接就帮我们包装好了,处理起来比较简单,所以这块的话呢,大家纯粹呢,就当成是一个练习,练你这个处理这个逻辑能力的是吧,以后呢,这种代码呢,其实我们很少写啊。OK。好,那么这样的话呢,咱们通过这个构造器的一个调用啊,我呢实际上就把这个属性呢,给附上值了。
53:01
诶,所以呢,我们后期呢,是不是当我们去通过这个view,诶再去调一个方法啊,显示这个界面的时候呢,其实你当前的这个对象的这个里边的这个employees这个属性就全部都有了。啊,就没问题了啊好,这个我们把它就关掉了,终于呢,把这构造器写完了,写完以后的话呢,接下来诶,我们接着看后边这个方法。首先呢,第一个方法叫get all employees啊,这个呢,其实我们都写的差不多了啊。哎,再往后找一下咱们这个啊。诶这个说他呢,就是获取当前所有的员工啊,其实呢,就把我们当前的这个属性呢,给返回一下就可以了,这就完事了啊,诶关键我们看下边这个叫get employee,找到指定ID的这个员工啊,那有可能你找不到,所以呢就抛一个异常,这异常的话呢,还是自定义的。那咱先把这个自定义异常呢,把它搞定吧,它呢是在service下边的啊,回过来service这右键新建一个啊自定义的异常咱们说了啊,为什么要自定义异常呢?主要我们关心的还是这个名称啊。
54:02
诶,所以这呢,就是跟我们这个开发团队相关的,所以咱们去自定义了,这儿呢,我们就extend一下啊,我们这儿呢,比如来一个叫exception吧。嗯,这呢是第一步,第二步呢,提供扩大器啊。首先啊,空餐的一个。带这个message的一个啊,就整俩吧,然后接着呢,抄一下它的这个数据。啊,CTRLC。再回过来啊,粘一下改一下诶这就搞定了啊好,这个写完以后的话呢,我们这个呃,自定义的这个异常,它的对象呢,就有可能在我们的这个方法里边呢,呃会去出现啊,因为这个ID呢,写的不靠谱啊,这个方法意思呢,就是获取指定ID对应的这个员工。ID啊,对应的这个叫员工了,好,那么这块呢,我们看怎么去处理呢。啊,这个呢,这个ID呢,你得看他写的靠不靠谱,这个ID呢,其实就是我们这个员工,哎,刚才我们不是复职的时候呢,它的一个属性呢,就是有这个ID吗。
55:01
哎,所以这块我们得利了是吧。哎,首先呢,我们去便利一下咱们当前这个数组啊。Employees,然后I加,然后啊判断一下啊,你写的这个ID,如果我们。啊,数组指定I位置上的员工的ID是相等的。是不是这就找到了。找到了,那我就return一下你当前这个员工呗。是不是就这么着?哎,那如果说要是没找到。相当于就没有进去一附啊方行完也正常结束,其实应该是在这写是吧。这个呢,位置呢,相当于就是呃,如果执行到此位置,就意味着你没有执行return嘛。那就相当于呢,没找到是吧。就意味着。但没有找到。啊,那这时候我们就可以死肉用一个叫team的exception是吧,然后这个位置呢,让我们写的信息呢,叫找不到指定员工啊。
56:02
诶,这个整一个字符串吧,找不到这体员工,诶就这样就完事了,好,因为呢,我们这儿呢,是一个继承于exception的哈,但是你要指明是不是他要抛一个处理的方式是吧,我们就Rose吧。加team的exception。哎,就完事了。行,这个呢就写完了,至此的话呢,咱们这个类呢就写完了。这个类写完以后的话呢,咱们先不用着急呢,去写下边那个叫诶这个类了啊,是不是还有一个叫team的一个service,先不着急写,咱们刚才写了啊,这么长时间了,这里边儿装的靠不靠谱啊,是不是应该测试一下。哎,所以下边呢,我们就先做测试啊。这个测试的话呢,我们专门的啊去创建一个包,这个包呢,我们用的是只unit单元测试的,所以不妨呢,我就叫做g unit了。哎,在这里边儿呢,我们去写一个啊,关于我们叫name。的一个测试啊,这样子啊,好,那么这测的话呢,其实主要我们的两个方法啊,一个叫getee,一个呢叫get指定的呃,Employee啊,所以这块我们就先一个个来测试一下,叫get all。
57:11
Employees这样的一个方法,首先的话呢,我们在这里边呢,去创建它这个name service,它这样的一个实例哈。诶,New一个啊,Name list service这玩意你创建的话呢,一定要小心一点啊,别这块导包的时候呢,导成人家这个model里边了,一测发现挺好是吧,人家写的啊,诶这个呢,你看它没有提示啊,要提示在这儿的是吧?这块呢是我们自己的这个team下的啊。好,然后呢,接下来啊,拿着这个name list service点我们就get。第二。啊get,哎哟,Get都写错了。这有点尴尬了啊,回过来get all。在这儿啊。多一个二是吧,哎,这么着啊,好,回过来点啊,Get all啊,Employees哎,就这么着,这块呢,我们就得到了一个具体的一个数组了,哎,我们就叫employees吧,然后呢,下边我们把它呢做一个电力啊。
58:09
诶,employees.lengths啊,直接呢,我们就打印一下啊employees I那就可以了,这时候它自动的就会调这个twoth string的方法了,那由于呢,我们没有去重写这个to string,所以这时我们打印的其实都是地址值啊。那就剩这了哈,这个呢是我们不希望看到的,咱们希望看到的呢,应该是啊,跟人家这个写好的一样的,咱把人家这个呢再跑一下。嗯,找到这个view啊,找到这个位置这块我们去做一个run。哎,就出来了啊,诶目前呢,我们看到呢,人家这块呢,展现出来是这样的效果,咱也希望呢,展现的是这个效果。那上面这块还有相关的这样的一个声明是吧,声明的话呢,还好啊,其次主要呢,就是我们现在要重启这个图方法了。回过来找到咱们的内幕list service,然后我们调列方法的时候呢,这个测试啊在这儿写的,然后现在呢,我们要从这个啊employee开始啊,要做这个twoth的一个重启了,像马云的话呢,就是普通的一个employee啊,所以从它开始。
59:08
人家就写图斯润。啊,这个呢,你可以直接呢,呃加上alt加insert是吧,诶调一下这个to string啊这个时候呢,把这四个属性呢,我们做一个这个展示,但这块展示的话呢,跟默认的这个效果呢不太一样,咱们就是依次呢,把这几个属性呢给它列出来,中间有一个制表符就可以了。所以我这块把它先干掉啊ID。哎,刚踢一下。这个name是。杠。这个。Salary。诶,这样就可以了啊ctrl out,再加一个L诶。没问题。这呢就写完了,写完以后的话呢,我们接着呢,再去搞定它的子类叫programmer。哎,这块我们可以这么着一下是吧,诶CTRLC。哎,给它给它粘过来。
60:00
诶粘到这儿啊,然后这块我们在写的时候呢,诶我们可以直接调负类的这个现成的这个了,所以呢,我们叫诶修点诶图斯顺,然后在这个基础之上呢,我们再去补充。杠T一下,哎,加上一个这块呢,稍微的得注意一下了啊,这个我们要找的是成员了。成员的话呢,以刘强东为例,前面那四个没问题,后边这块呢,要补一个叫成员,相当于在这写的。程,然后呢再一下,然后再后边这块有一个它的状态啊,这个呢叫status,那这个呢也都还好,然后再后边呢,你要稍微关注一下,他这儿呢,有一个设备是吧。设备这块中间离得稍微的远一点,这你要把不准的话,你可以这么着,成员这块你看一下啊,一个两个三个四个五个是吧,诶可以这样的一个小技巧啊。一个两个三个四个五个是吧,其实这块对齐的事儿呢,不是咱们的重点啊,以后我们实际开发的时候呢,都展示到客户端或者浏览器啊,到这个客户端和浏览器当中,我们去调这个代码了,现在呢,就稍微在控制台上看一看就行啊。
61:02
最后这块呢,有个设备,设备的话呢,咱们不是有一个叫equipment写了一个方法是不是叫get是吧。哎,这不提前我们都已经提供好了吗。然后这块呢,他没啥问题,行,这个呢是关于这个叫程序员的,那目前看到目前看的话呢,也没问题,但是你要接着再往下写的话呢,这个问题就出现了。什么意思,你看啊,我CTRLC。他的这个子类呢,叫做designer设计师。设计师这块呢,你要去重写这个图存率的时候呢,你看这个怎么处理呢。首先呢,前面这块的话呢,我们也有这四个属性想共用啊,设计师在这儿呢啊。嗯,想这四个呢,我们想用,但是这块你要用的话呢,咱们写super点村上,其实你就调到这个。Program这里了是吧。国家这块呢,是不是已经把它的负类的这个给覆盖掉了。你现在要想调休克呢,其实调的是他,而不是上边这个了。怎么办?
62:00
那以前有同学呢,说说能不能super.super克呢?诶这是肯定不行的是吧?呃,因为呢,你负类的这个方法呢,已经被他的负类呢给诶他他的负类呢,已经把负类的负类呢给覆盖掉了,这这不行啊。那怎么办呢?对,这块我们有一个这样的思路。呃,在这个employee这块呢,因为这个方法呢,被他的此类啊此类的此类呢,还会去覆盖,呃,那这时候都想教他,那干脆呢,把它单独拿出来得了。哎,我们这呢,就写一个叫private,哎,我这呢返回的叫string,咱叫get,比如说details。这呢我写个方法,然后呢,把这个事呢,CTRLX我就放到这儿了,然后这个位置呢,我们就去调一下叫gets。哎,这么着去处理,然后呢,在啊我们的这个子类呢,图书馆这块呢,他这样写呢,其实倒都还好是吧。那这个倒都没啥问题,然后关键的就是呃,他的这个子类再去调的时候的一个场景啊,那这块我们要get details这块已经看不见了是吧,那这个权限的话呢,还不能给他整的太小。
63:03
这个呢说呢不行。这个public呢,有点大诶,我只让他的这个子类能看得到。哎,可以严谨一点叫protected是吧,好,回到这个位置呢,我们叫get details,这就能看到了,好然后呢,在这个程序员的这个类里边呢,我们这边就可以也是叫get details来解决这个问题啊。所以这块我们写的时候呢,可以稍微的抄一抄他这个东西哈。所以你把这个呢,先CTRLC先借过来啊。粘过来,然后呢,它这个叫设计师啊,这个是它的前面这个基本情况,这块呢,就以雷军为例啊,这个位置改一下。设计师。然后呢,这个呢叫它的状态,因为你已经出了人家的负类了,看不见了啊,直接get status这样。嗯,这是他,然后后边呢,呃,再有一个空格,呃不是有一个制表符,这个是他的这个奖金是吧。
64:00
嗯,那咱们就先这样的拆一下。这么着拆啊,奖金这叫bonus啊,他在自己这个类呢,倒是还能看着啊,但是他这个下边的在此类呢,就看不见了,干脆我们就直接叫get吧。嗯,Get完以后啊,这个呢,就呈现出来了,然后再后边你看有几个,这个不准回来,以雷军为例,一个两个三个啊,三个就啊。所以这呢,我们给它删。123诶这就可以了是吧,好这个设备的话呢,它也是在这个成员里边定义的啊,这也看不到了,所以呢,就get一个equipment呗。这不就可以了?没问题吧?啊,这就可以了啊,稍微的你要是觉得有点长了,你就这样换上行,然后呢再去啊CTRLC针对它的子类architect。哎,放到这儿。嗯,那前面这个呢仍然不变,这个呢叫架构师。诶架构师,然后get它的就以这个马化腾为例,这是它的一个福利状态,这是它的一个奖金,奖金后边呢,有一个股票,诶这块我们再使啊先两个双引号。
65:08
两个双引号拆开,然后再两个加号,这就叫拼串啊,这样给它拆开这个位置呢,叫get,一个叫stock是吧,股票股票后边的话呢,就是它这个设备了,这应该是一个杠体就够。哎,我就这么着处理了,Ctrl alt加个L调一下格式啊行,写完了啊,写完以后的话呢,我们再回到刚才的这个测试这个位置,咱们再去做一个执行。诶,目前看一下应该还挺好是吧,这个呢就我们希望看到的,那目前呢,就展示这样的一个效果就行了啊好,这个呢,我们就告一段落了,接下来我们再去测试另外一个方法,它还有一个呢,诶对我们写一个test啊。叫get employee。嗯,在我们这个里边呢,咱们后边这不还有一个方法。这个是吧,嗯,这个找指定ID的这个员工,那我们这块来测一下这个方法写的呢,靠不靠谱啊。
66:03
行拉回来啊到这儿啊,首先呢,也是创建咱们当前这样的一个name service的一个实例了。然后接下来呢,我们指定一个ID。ID呢?假设我们选一个三吧。好,通过这个name service点我们就get一个employee,把这个ID呢往这一放,这呢就给我们回了个具体的employee,没问题啊,打印一下这个employee。那我们这个方法呢,它可能会抛出一个异常的情况啊,这呢还是继承了,诶非运营时异常了,所以我们必须要显示的去处理一下,你可以考虑呢,把整个这个包一下得了,哎,Ctrl alt加个T,这呢我们就直接选它。那这呢,就1.prints,哎,这么着处理就可以了。好。哎,这个别一点直接咱们1.getmessage吧,因为咱里边不是填信息了吗,然后呢,直接呢as out一下啊好,然后呢,我们去做一个。这个呢ID是三,实际上呢是靠谱的啊,这呢我们就找到了这是李彦宏啊没问题,好,然后呢,把这个ID呢,给它改一下,比如说改成了这个13。
67:02
啊,有效范围呢,其实就一到12了,13呢就没有了。那此时呢,就会抛一个异常,这呢,我们就把这个异常呢,给它开始掉了,然后打印一下这个信息。哎,就是这样一个场景。没问题是吧,你要是不用这个的话呢,其实我们用这个print可以,因为这个它的结果里也会显示这个这个再走。哎,它就成这样了是吧。OK啊行,只不过呢,我们在这个项目当中呢,其实不希望它显示这么多红色了,我们后边呢,真是在调的时候呢,也可以选择用这种方式啊。好,那这样的话呢,我们把这个测试呢就写完了,哎,说明呢,没什么问题,在测试过程当中,我们就补了一下相关的图斯针方法啊,这个大家稍微注意一下,好,那么接下来的话呢,我们需要完成的就是在service下呢,提供另外的一个类,这个类呢叫做team service,这个team service呢,就是针对的开发团队的相关的一些功能就写到这里边了啊,因为呢,我们基于当前,诶刚才提到有好多的员工了,这个我们测试呢是在这儿是吧?诶这么多员工,然后从这里边呢,去挑选一些人构成一个开发团队,开发团队的相关的方法我们就封装在him service当中,所以呢,下边就来写这个。
68:09
新建一个类。Him。哎,Service,诶就他啊好,那还是回到我们这个PPT这儿往下走。诶这块呢,是关于开发团队的一个管理添加删除,诶等操作回过来写到这儿。OK,那么这个类呢,我们都如何去设计呢?这呢已经给我们写出来了,它的一些属性,包括一些方法了,我们就按照这个原则呢,咱们去做就可以了啊,下边呢,也有相关的一些这个说明,哎,咱们就直接拿过来啊。好,首先呢这块呢,写第一个啊叫private int类型的这个呢叫counter啊哎,附了一个值呢,是一,诶说这个变量值是干什么的呢,看一下。说这个counter是一个静态变量,用来呢为开发团队新增的成员自动生成团队中的唯一ID及ID。
69:02
啊,这个呢,还有没有印象,以前我们有过这样的经验。咱们在讲static的时候是吧。对,说到这儿呢,咱们就稍微的回忆一下啊,再讲在这个时候呢,我讲这个应用,这个应用里边我们说的这个圆,说这个圆的话呢,我们每个呢,都给了个编号。对,这个编号的话呢,就顺着1234往后排是吧,然后这个ID的话呢,我们是不是有一个。然后我们这里边儿这个counter呢,就相当于这个in。要依次往后排。哎,只播呢,它是从一开始的啊,就是这样一个特点,行,这个收起来啊,这个就是他啊说它是哎给咱们这个叫member ID啊进行自动赋值的啊。哎,这样的一个基数吧。哎,就他这是第一个了,然后第二个private。这个呢,是呃,Final的还是啊,Int类型的,既然是final呢,它就是一个常量了,叫member。就他这呢是一个五,它呢表明就是我们当前这个开发团队呢,能接收的最多的人数,这个团队呢,上限五个。
70:07
啊,在这呢,也也有这个具体的说明啊。啊,这个我们就直接呢写到这儿了,行,这就过了下一个,哎,下边这个呢,其实就我们这个开发团队对应的这个数组了,就。Private。哎,Programmer啊。这个呢,就叫做team。一个啊,Programmer直接呢,就把我们这个常量呢放进去,哎,这就可以了。这就是我们这个,哎,开发团队。啊的这个数组OK啊。行,这个开发团队的话,我们也能看到,最起码你得是一个programmer,你要是一个employee是不行的啊。再往下呢,这个就是啊total啊,Private类型的叫total。哎,复值为零,其实不写的话呢,也是零啊,这个呢,就是我们记录开发团队中。哎,中的这个人数哈。
71:00
就是我们这个上限的是五,数的长度也是五,但是你实际上呢,有可能就存了三个人是吧,这个呢,就是这个total的一个概念。好,这呢我们就写完这个属性了,下面呢有对应的几个方法,首先public。啊,返回值呢,叫programmer类型的一个数组,Get一个team。OK,这是一个啊先now。第二个。这个呢叫添加了我们是一个Y叫I的一个member。把这个员工呢,给大家添加到我们当前的这个开发团队当中啊,就这意思,注意这个参数呢,它写的是employee哈,而不是一个programmer。这个employee啊,看不到alt加上回车看清楚team下的啊。行,这呢是我们第二个方法,第三的话呢,这个叫remove,就是移除的意思,咱不是有个功能就是删除开发团队的成员吗。所以呢,就是这个方法。Member。
72:00
Number ID,诶就这么着啊,好,那么添加也好,移除也好,都可能会出现一些异常,这块呢,我们也会有相应的异常的这个体现,诶这目前来看的话呢,这就完事了,那么接下来的话呢,我们就一个个的去写这样的这个方法了,就哎写这个方法的话呢,看看有没有其他的一些注意点和说明,这个你可以往后找一下,首先呢,你看第一个方法,然后干什么的啊,说返回当前团队的所有对象。在这个位置我们就写这个叫文档注释了。那就它啊,然后这块呢,具体的返回把这个信息呢,CTRLC咱们也可以呢,诶站到这儿,那它包含所有成员对象的数组,数组大小呢,与成员的人数是一致的。也就是说呢,我们这时候呢,如果你只是去返回一个气,这个是不对的。啊,因为呢,我们这里边儿呢,上限是五,但实际上你可能就存了三个人,他希望你返回的应该就是三个人构成的一个新的数组了。对,那它影响的是什么呢?就是咱们比如说啊这个添加团队成员,我这块呢写了一个二,然后呢,我来了一个十加进去了,然后再显示个一,注意这块我们在显示的时候呢,其实我这个写一呢,团队列表相当于呢就调这个方法了。
73:11
然后你把这个每一个成员的一个数字的方式展现给我,你这块你不能说长度是五,这块除了一个之外呢,剩下来四个空的,四个空的就不要显示了。所以呢,其实呢,我们要把有啊这个员工的这有这个人的这个呢,重新新造的数组,把它们放进去啊。所以在这里边儿呢,得这样了。哎,新的一个数组是吧。这个呢,我们叫,哎,我如果也叫team的话呢,你就要小心一点了,这叫team,这也叫team。或者你这块换个名是吧。如果要不换的话,我就写成他了,这个你一定要小心。哎,我就故意写成它了啊,这个长度怎么写。偷偷呗,是吧。好,然后接下来,接下来你可能有多个就循环了哈。哎,那小鱼。说涛涛。
74:01
爱佳家。好,里边小心一点啊。怎么写?静,我拿。这次点t if值是不是得这么着了?然后这块return呢,是不是就team了。哎,尤其这个位置小心一点啊。啊,你要怕整错了,你把这个名你改一下也行。好,那么这样的话呢,咱们就把哎,就是你有具体的这个程序员的啊,这样的几个元素构成一个新的数组呢,返回了,哎空的那些呢,就不要了。完事了。哎,这就它好,下边的话呢,我们来写的叫I的member。I的member的话呢,就是它。诶这个粘过来,然后这呢是它这个参数。哎,参数呢在这儿啊,你看这块呢,他提到有这个异常,呃,这块你看大家稍微的说一句哈,那我先把这个先删掉,呃,因为呢,这个有异常了,我要是提前先写出来的话呢。
75:00
这个叫team exception哈,这时候你看它要是生成这个文档注释的时候呢,也会哎,保留这个参数了。啊,就这个意思啊,就是一般呢,我们要写文档注释的话呢,就自动让它生成里边呢,需要说明一些东西呢,它自然而然的都会给你留着啊。行,就基于这个吧。把这个再粘一下。哎,相应的这几个信息,那都是什么意思啊,CTRLC。哎,就这么着了啊,行,下边这也同样道理啊,这个呢,我暂时呢先把它就去了吧,因为一会儿呢,我们真正需要的时候呢,我待会再补过来啊,这样让大家呢就更清晰啊。好,这个位置的话呢,同样的啊,把它呢也先拿过来吧。哎,这么着这个呢,其实后期呢,也会抛对应的这个异常信息啊。
76:00
行诶我就把这个粘过来了,行,咱们就先看第一个了,这个呢,就是我把这个员工呢,添加到当前这个开发团队当中,这个添加的话呢,其实有好多这个都是不成功的,这个情况这块你看不到了啊,你找我P的前边。在这呢啊,添加员工的时候呢,他有如下的一些失败的情况,这些情况都需要考虑。这是我们写这个team service里边呢,比较痛苦的一个方法。来吧。这个粘过来有点不太好看了。还得调一下是吧。行哎,他说成员已满了,无法添加,这样呢不能添加,这样不能添加,咱们就先把这个不满足的先给大家都考虑到,然后呢,只要能走到这儿的,这都是能添加的。来吧,第一个。成员已满,无法添加。诶这呢就是判断一下,如果你当前这个total呢,已经大于等于了。啊,这个叫max的member了,那就这时候已经满了是吧,这个我们就。
77:03
哎,你有一个叫team的一个exception,这里边儿呢,写这个信息啊,就写这个吧。好,那这块呢,既然你死肉了这块是不是就得补这个了。哎,这就我们需要的这个场景了啊。哎,是吧,Team exception,哎,就这样好,这是第一个,然后第二个。该成员不是开发人员,无法添加。你看这块我们添加的是一个employee啊,但是它必须得是一个program才行是吧,所以这块就判断呗,说如果呢,你要是。诶,Programmer是吧,这个是能添加的。Not not in,策划没有那个操作,前面的加个就行是吧。对,你要是个成员呢,这就处,然后呢,非就是你是false的时候呢,这不就。哎,判断就进去了,这个呢,也是throws一下,哎,Throw一下啊。这个信息。
78:00
没问题是吧。好,接着啊。说该员工已是某团队的成员。对,这个呢跟这个呢,其实都是判断这个status的啊,如果呢,这个员工的status呢,已经是一个busy状态了,如果他是一个VOC的状态,那就是对应的是这两种场景,所以呢,下边呢,我要取出这个员工的一个状态是吧,Status啊那这个呢,你去get status呢,不好意思,没有。是吧,但是你注意你看我这写的。On programmer。哎,就是我们这个属性呢,其实是定义在program里的啊,诶它竟然出来了,你看idea还是很强大的啊,我要点一下呢,它就是这样的效果。是吧,哎挺好的行,也就是说呢,我们现在这个E呢,其实你要去调这个get这个status啊,其实你是调不了的哈,那调不了的话呢,那就得强转,那这个强转的话呢,你说我这会转一定会没有问题吗。咱就要P嘛。
79:02
然后呢,我这样尽量这样去调的,因为只要强转的话,我们说可能会有一定的风险是吧。你说我这块转有风险吗?啊,对的,你看上面已经排除了是吧。因为你要不是成员的话呢,这不都抛一常都出去了嘛,能到这儿了肯定是成员,诶所以这块强转一定没有问题,好然后呢,这个status呢,我们获取它的一个值是吧,假设呢就叫status了,那我们也说过呢,这个Switch case当中可以呢放这个霉菌类。啊,这个呢,是GP5.0的新特性哈,诶,然后这里边儿呢,我们就直接写case一下,你如果呢,是一个BC的。哎哟,咱们这是用的JDK时期的这个环境是吧,这又有新特性了。对,这个呢,你要用JD8呢,这个就没有啊,这个咱们先。先悠着点吧,含蓄一点啊,咱们到最后一章的时候呢,咱们把这些新特性呢,都给大家讲一讲。好,如果你要是个BD状态,这个我们就直接呢叫through new的一个啊,Team的exception是这个。
80:06
好,这是一个了,然后呢,在case是一个叫VOC是吧,这样的一个场景。诶,是这个了啊。好,这呢,我们就把这两种情况呢给大家考虑到了啊out shift上给大家往上移一下,移到这儿吧。行,这个呢,就排除了他是一个其他团队的了,以及呢,他正在休假了,行这个呢是完事了,然后呢能够走到这儿。啊,那就下下边儿就意味着这个后边这个场景了。诶,这个啊,说该员工已在本开发团队当中。嗯,其实这个需求啊。嗯,没啥大意思。呃,为啥呢,就是他在本开发团队呢,其实他也是个B的状态是吧,呃,其实就意味着如果说走BD的时候,他都已经出去了是吧,其实这个呢,一般不会执行到这儿了啊。
81:02
但是呢,既然提这个事儿了,那咱们就把它当成是一个练习了,咱们就考虑一下得了。哎,如果已在本开发团队呢,那其实就意味着这个员工呢,你通过ID去找啊,等等你是能找到的是吧,那这块我们怎么处理一下。这个貌似一想一行代码好像搞不定是吧,这个咱们就写一个方法得了。啊is east是吧,把这个指定的我们这个员工,这个员工的话呢,目前是一个P是吧。呃,咱们把这个P呢,给它放进去看一下呢,它是不是存在,如果存在的话呢,比如我们这块去接收一下啊,叫波尔类型的叫is。啊,East这就存在了,然后这块呢,你加一个判断啊,啊is east这呢,如果是个处,你就在这个位置给它抛一个异常。哎,这么着行,这块看能看懂吧。就是我判断一下这个员工是不是已经在当前这个团队里边了啊,然后这个方法没有我们需要呢,创建一下是吧,Out回车创建一个方法啊。
82:02
就在这儿呢。哎,没问题啊,哎这块我们怎么去判断呢。诶,这个呢,我们就可以写啊,当年的员工呢,有一个get,我找哪个呀。去找ID型是吧,如果你的ID呢,跟咱们现有的这个团队里边这个ID呢,是一样了,现有的话呢,这个团队里边好几个人呢,所以这块你还得写一个方循环是吧。发一下啊,这个呢,是我们当年team,嗯,这个就不用它了,是不是啊。然后判断哈,如果当前这个team I它的get一个ID啊,跟你当前这个对象的ID呢是一样的。哎,我这块呢,就是成一个处是吧。然后呢,出来以后呢,这个位置直接就放。没问题吧?哎,可以啊,或者这个位置呢,因为这本身就是个波形,直接return它也可以啊。好,这个呢,就是判断一下我们啊,你可以写一下这个方法的一个作用啊。判断啊,这个P是否存在于当前的开发团队中?
83:07
怎么着?那这个team怎么了?这样的一个方法。获取当年团队成员,因为我在当年这个里边了嘛。我在当前这个类里边的话呢,我就直接可以掉了,而且呢,这块我也写的是total,就用不着呢,这块就这个位置呢,主要呢,你你说的是这个啊,其实没有必要,这个的话呢,它唯一的一个区别就是你不要把整个这个团队给我们,只给那个有几个就给几个是吧,我这块呢,在找的时候呢,我就直接呢只是考虑total了,所以就没有调上面那个方法,没必要了,是吧。嗯,OK行,然后这个呢,我们就写完了啊,然后这块呢,就判断他是不是在本团队当中完了。啊,然后呢,呃,下边还有撒是吧。坚持一下啊,说这个团队当中还要求最多只能有一个架构师,俩设计师,三个程序员。啊,那你还得判断一下现有有几个了,要加的这个哥们儿呢,你看他是什么也超了。
84:05
是吧?来吧,先干嘛?先呢看一下现有的团队中有几个架构师、设计师、程序员是吧?好,那这块我们又得又得是放了这个呢,偷透吧。嗯,这块啊,嗯这块呢,进来以后怎么办呢。心对应的是这个programmer是不是得判断了。那就得依附是吧,如果呢,这个ti叫instance of,你是先判断范围小的是不是架构师啊?Architect。如果你要是架构师,咱们是不是就得定义变量了?得记录一下是吧,所以提前呢,就需要了这个变量的话呢,我们首先呢,是这个a programmer,呃,它的一个number啊,这是一个先是零,或者我们就直接这样写了哈,逗号一个,然后designer。啊,这个他的一个这个直接账number。还有呢,诶这样我就直接直接这么着了,等于呗,是吧。
85:05
然后呢,再接着是我们这个R。哎,就他了是吧,它那个number都是零。嗯,哦,这个我们得先这么着了。嗯,要是这样写的话呢。这个写的话呢,能这样写啊,这是一个零逗号一下。然后这是一个零,再逗号一下,这样写可以是吧。或者的话呢,你还可以这样写啊。哎,这个呢,就把这几个变量呢先。逗号。CTRLC啊带逗号。这么着一下,然后下边的话呢,依次呢,把他们三个呢,再写这个连续等于是吧。就咱们前面呢,讲这个变量赋值的时候呢,说过这个事儿啊。哎,就这么着啊,这呢算是两种写法啊,用哪个都行。好,然后呢,下边的话呢,如果你要是一个架构师,就把这个变量的值啊,这个咱们写的时候呢,这个名稍微的差点意思哈。
86:04
这应该是小写的吧?这个稍微的我们也注意一下啊。哎,这么整好,然后这块呢,我们是把它这个来一个加加啊。好,然后呢,再接着呢,这个位置。Else if啊,如果这个team I。哎,这个叫是一个designer啊。这个呢就是designer,它这个number呢加加一下,然后这块呢,其实就else就行了啊。这个呢是programmer,他呢加加好,那么通过这样一个训完呢,首先我们先去记录一下啊,当前呢,我们的成员设计师架构师的个数。啊,记住。程霞设计师。架构师的一个个数。好,那么这呢已经搞定了,然后接下来我们开始要判断这个事儿了。
87:03
啊,那这个怎么弄呢。你得先判一下你刚当前的这个呢,哎,要添加的这个P是吧。啊,别迷失了啊,这个就我们要添加这个员工了,哎,他呢,判断他是不是先来判断是不是架构师啊。哎,如果呢,它是一个架构师。是架构师的情况下判断一下当前我们这个RT呢。是不是已经大于等于一了。其实呢,就等于就行啊,稳妥起见,我们把大号呢大于号呢给它加上了,如果这种情况下呢,我们就是一个team的ion是吧,就是这个呗。看看理解不?这样的。啊,再接着哈,说如果呢,你这个P呢,叫你是一个叫designer。这种情况下呢,我们判断一下你这个,哎,当前的我们这个designer这个呢,是大于等于二了是吧。
88:01
哎,接着泡一场。这个啊。哎,这么着好,然后呢,我再CTRLC,我就同步的这样,诶复制一份了啊诶它呢,诶这块你看我们写的是p in s of,它我是写成L衣服吗。是不是应该这么着?嗯,都可以是吧。都可以呢,不太合适的哈,如果这个P呢,他就是个架构师,你就让他进去就行,就不要再判断设计师了。是吧,都判断不麻烦了吗?诶得加else if啊,这个呢,它是一个程序员,诶programmer,呃,因为呢它一定是程序员,所以这个呢,你到底写不写这个if倒无所谓了,写个else其实也行是吧。因为这个P呢,本身咱们声明事,它不就是一个成员吗。嗯,所以这个呢,倒是还行,大不了你就这个呢,就。是不是就这么着就行。哎,这个呢,是他作为一个程序员啊,他。诶到哪了,到这了是吧,它呢大于等于三。
89:02
这个呢,我们抛的是这个。你还这么着?有点绕啊。行,这呢是我们判断一下,当前你这个要添加的这个元素,它到底是个啥,如果呢,满足这种情况呢,就对应的也抛出这个异常。没了,这是最后了啊,哎,如果能够走到这儿,还活着是吧?诶方法还没出去,那就意味着你这个P呢,是不是可以正常添加。这我们写上说代码,呃,如果能啊执行到。哎,到此位置是吧,哎意味着。这个P是可以添加到当前数组中的啊。哎,添加到咱们这个替数组里。诶,这个呢是没问题的啊好,那么写到这儿的话呢,我们稍微等一等去写这个啊上面这块的话呢,稍微的再给大家说两句哈,我这儿呢是这样写的。可能有的同学呢,会是这样写,大家看看这两种写法呢,有没有区别啊。
90:01
这样写哈,说呢我就先这样打开了哈,If。如果呢,这个P呢叫instance of是一个架构师是吧。是个架构师,说里边干嘛还整一个嵌套呢,多麻烦呀,直接就起了。斜它呢,诶大于一,大于等于一,在这种情况下呢,我们就死肉。然后呢,Else if。那你也知道我我要怎么写了啊。把这个CTRLC过来,然后并且。这个大于等于二。考虑一下有没有区别。可不可以这样写?这我加上这个L衣服吧。哎,这个呢是叫诶programmer是吧。这个呢,是这个大于等于三。
91:01
看这个啊。上下这呢,算是两种不同的写法。哪种写法更好?或者说区别在哪?下边的要好一点是吗?如果上下要都对的话呢,显然下边好,因为这个层级减少了是吧,哎,其实我说呀,下边这个有问题。看看谁能发现问题在哪。嗯。嗯。对,这个大家其他同学可能有没听清的是吧。嗯,这个呢,我们既可以从语法上去解释啊,就纯语法上去解释啊,也可以呢,就是举一个实际的例子,其实啊。哎,从语法上解释的话呢,你看是这样。啊,坚持坚持啊,我看有同学可能已经有点懵了,都是吧。这个从语法上怎么解释呢?语法上的话呢,如果我们这个呃,条件呢,是满足的哈,满足的话里边这要不满足了。那其实他就出去了,出去以后呢,注意他不会再考虑下边这个L,直接呢,因为你已经进入到这个if语句里了,直接呢就退出到最后了是吧。
92:08
就往后走了哈,但是如果我们要这样写的话呢,第一个条件如果满足了,第二个条件不满足,刚刚才也是这样情况哈,哎,它呢,只是这一个没执行,它是不是还会走下边这个L啊。这呢,我们是从语法上来解释的啊。啊,这个理解好,那我们要是举一个实际例子的话呢,嗯,怎么说呢。你比如说我们现在呢,已经这个有了两个设计师了。啊,有俩设计师的,现在我们要添加的这个P呢,它就是一个架构室啊。如果呢,按我们上面这个逻辑来讲,你是一个架构师吗?是。你的这个个数大于等于一了吗?没有,我们现在没有架构式哈,其实这个衣服没进去吧。那其实呢,这个架构师呢,我们说呢,实际上是可以添加的是吧,就后边呢,其实应该加了,但是呢,按照这个逻辑写咱们是对的啊。因为后边这个不都没考虑,但是你要这样写的话呢,说你这个P是个架构是吗?是这个人数大于等于一了吧,没有没有这个没执行是不是就进到这儿了。
93:06
说你这个屁,实际上是个架构师,你是一个成员,是一个设计师吗?是吧。你既然是一个架构师,不一定是个设计师吗?啊,是一个子类的实例的,一定是一个负类的实例啊,所以这个也是,然后呢,你这个个数大于等于二了嘛,我这就俩了,是不是这个也满足了。所以呢,你会发现莫名其妙的就会抛一个这样的异常了。诶,我这有俩设计师,我现在要加加一个架构师,怎么给我报这个异常呢,就感觉很奇怪是吧,就是因为你这个逻辑呢写错了啊。啊下来呢,捋一捋,这个呢,注意这是一个错误的写法。哎,上面这个呢,是咱们一个正确的写法。行来下来呢,大家再稍微再思考思考,行,那只要呢,你能够走到这儿,那说明呢啊,你就是一个不满足上面这些条件了,那就意味着你是能够添加进来的了。
94:07
好,添加进来想想我们都需要干什么事儿呢?诶,首先啊,你这个员工我先给你得加到这个数组里边是吧。哎,那这个气的话呢,这个血是不是就偷偷。加加了是吧,哎,是不是把这个P呢,给它加进来。这个以前我们已经有这个经验了啊,这个先用这个total total完了以后再加加,然后我们就给它合成一个了。哎,另外的话呢,这个对于他来讲的话呢,是不是还有一些属性要设置了。第一个呢,我们去set set一个它的叫member ID是吧,这个呢用什么呀。是不是CTRL加加就行啊。对,第一开始的话呢,它这个值我们在这写的是不是先是一,所以这块呢是后加加第一个呢就是一啊,然后呢,它加加一下的,然后第二个的话呢,就是二了是吧?哎,另外还有一个啊一点叫set一个status是吧。这个status呢?
95:01
哎,你给它改成一个BC的状态。哎,就可以了。好,那这让我写完之后的话呢,考虑一下这两个值跟这个的值,我是把这俩写到上边呢还是。这样的写呢?哎,就是我这两行代码的话,你看我需不需要这样子。他说这样也行。有没有影响?有影响吗?没看出来,没看出来那就没影响。嗯。没有关系哈,都行。所以已经完全已经丧失了判断能力了,是吧啊。你看这个呢,我们其实这块你想想我们放的话,也只是把这个地址放到这儿而已啊是吧,然后呢,我这块也只是通过这个地址去找到你实打实的堆空间,不就还是那一个对象嘛。就是你这个位置呢,放在这个地址,我这儿也是一个地址,不管你用它调也好,用它调也好,改的不都是你堆空间唯一的那个实力的两个属性吗。
96:03
所以你先改了还是付给地址啊,还是先付了地址再改,无所谓啊,反正那个地址还是那个地址嘛。对吧,所以没关系啊。好,那这样话呢,咱们就把这个添加这个事儿呢,就搞定了哈哟,往上一拽,写的挺长哈。终于写完了。还不一定靠谱是吧,还得测试才行啊,好,那么咱们先别测了,先往后写。这个呢,叫。Member哈,那告诉大家,这个方法比上面那个要简单一点啊。好,这呢我们要把这个元素呢给它移除掉哈,脑海当中你要浮现出这样一个场景,这呢是你这个总共的这个长度,咱们上面写的是五个啊,它里边呢添加了几个了,假设呢就有仨,现在我想找到指定里面麦呢把它给移除掉啊。首先呢,这慢呢,你写的。这是个靠谱的是吧。得能够找到才行啊呃,能够找到的话呢,我们就删掉,删掉的话呢,假设你删的是第一个,这块还是涉及到一个问题,数组的特点呢,就得是依次紧密排列啊,后边的往前移。
97:02
这个呢,是找到了没找到没找到,你抛个异常。然后呢,相关的你删掉以后呢,这个对象本身可能还有一些属性呢,要改一改是吧。比如说你的status啊是吧,MD要不要改啊啊,这个都是要考虑的问题啊。咋咋弄?下山。哎,先呢,看一看能不能找到这个人是吧,这个我们就怎么写啊。先写个循环。哎哎,写if服啊,写衣服的话,你不得先整个循环吗?从这个数组当中找一下,看有没有这个慢D的是吧。哎,In,一个I呢等于一个零,I呢小于咱们当前的是这个,这个就total吧。然后爱加加是吧。然后呢,在这个过程当中呢,我们去找一下哈,If,嗯,Team I get一个叫member ID啊,然后呢,跟我们当前这个ID呢,哎,如果要相等了,这就相当于找到了啊。
98:07
找到了这个员工。哎,或者这个团队的成员了啊,好找到以后呢,这块你得做点事儿。啊,没找到,没找到是什么情况呢。肯定不是else是吧?不能写是吧?这就S就成了第一个,要不是的话呢,直接就崩S了,不行,是不是应该是呃,出来以后的话呢,到这儿到这儿怎么着呢,算是没找到呢。对,刚才提到说判断I的值是吧。比如,我找到了。啊,找到的话呢,这块呢,你该干啥事干啥事,没找到是因为你整个这个循环的结束呢,是因为你I走到最大值了。啊,这种呢结束的,那就意味着这块呢,我们就可以给他加,比如你找到了,你该break就break掉是吧,哎这呢是通过这个break结束的循环,如果呢是通过这个条件结束循环,就是没找到。那这会儿我们可以考虑把这I呢给它,比如说搁到这儿吧。
99:03
好,那这呢就意味着,如果说我们这个I呢,是等等于。是偷豆吧?诶妥投啊好,如果呢,是这种情况的话呢,我们就可以呢,去throw用一个叫team的exception,然后这里边儿呢,写上这个信息是吧。CTRLC。好,这是它了。啊,这个呢,对应的我们在这呢,就得去throw一下啊。哎,这个呢,叫team的一个exception,好,没问题啊,回过来找到了,想想找到需要干什么。好几个事儿呢,是吧。呃,当前这个员工你得。表示一下是吧,比如说你的这个这个咱们说哈,找到了这个员工,然后呢,需要呃调整啊其相关属性。比如说你的这个状态是不是得改一下啊。哎,那我们就题目I,然后他呢,Set一下他的status是吧,哎,Status你就有free了。
100:03
还有呢,是不是我们当初改过他的ID吧?啊,这个呢,是当初你给人家设置过这个ID也设置过,那这个MD还要改吗。其实不用改。对,你比如说我们添加过一个两个三个,第一个呢,卖卖地一,这个是二,这个是三,然后你把它给删掉了,删掉以后呢,这个一呢,留着就留着了,如果你要再添加,添加我们上面是不是还会给他重新附一个买不买力啊,所以这个呢,其实改不改无所谓。留着就留着了,或者说你这个员工离职了,这个呢,你你把这个牌工牌就给他了,反正我也不要了是吧,这个一呢也不会再去取到了啊,所以这个呢就可以不改啊,我就稍微这写一下啊说呢员工的。这个呢叫member ID啊可以不。啊,修改。啊,你要修改的话呢,现在就改成零啊,改不改都行啊。嗯,其他的呢,关于这个员工的。关于这个员工的,其实就没啥了是吧。
101:00
下边呢,要改是不是应该就是改后边的往前移的这个事儿了。往前移的这个事儿的话呢,写到哪儿呢。找到了,按说就直接在下边写呗。就在这写。在这写的话呢,就意味着你找到的时候呢,顺带的一些操作是吧,我说呀,我就不想在这写了,我在这写的话呢,你看这个for里边套个EE再套个for显得就挺深了啊嗯。写字儿行不行?哎,对,写这是可以的,看看啊。说呢,你要是找到了,找到的话呢,这个我们把这个员工的改了以后呢,我们就直接break了,就结束这个for循环了。其实方循环的话呢,注意这时候我们是找到的情况,所以它不会等于这个头的是吧,所以这个呢就没有走到,所以呢,在这块我们就可以呢,去调整这个数组了是吧。哎,调整这个诶数组OK,所以呢,诶你如果要是找到的话呢,我们在break瑞前面写跟在这写是一样的,那如果要没找到呢,没找的话呢,你这个就等于偷偷了,其实走这儿的时候呢,直接就出去了,也不会执行到这儿是吧,所以写到这呢,是挺安全的啊好在这写在这儿写的话呢,因为呢,你是要调整,可能又会涉及到多个元素,还得是负号是吧。
102:18
呃,In的in的,这就别挨了,In这个接吧。嗯。怎么着直接写呀?不行,就是我这块呢,比如说我这这不好几个吗,你要删掉,假如这I呢,我第一个就找到了,你这不是好几个要操作吗。所以还得写个for循环啊,然后这个呢,For接接呢,从。我找到的是I是吧,所以这呢就先写成I了,然后呢接呢要小于,暂且先写成偷吧。然后呢,这个接呢,加加一下。想想我们这个调整要做的事儿哈,你要找到这个气从这个接的位置。把它后边这个呢替换一下是吧,这样要写接加一的话呢,这个要小心点减个一了得是吧。
103:03
呃,因为呢,它最大值呢是total投减二加上一就偷偷减一,这不就最大角标吗。好,这个呢是依次后边往前去移啊,移完以后呢,记着最后一个位置。是不是偷偷?减一的位置是吧,把它呢,是不是制成是个no啊,同时呢,这个total呢。还得减减一下了是吧,那这两个操作呢,我们就合并了。对,Team。剪剪头。然后这个呢,我们给大家支撑是个no。这就可以了是吧。完事了吗?完事了,就这样。啊,这个呢,就是大家在刚开始写不熟的时候呢,可能就得多想一想哈,哎,其实呢,大家写的多的时候,你发现呢,这个咱们写这个代码其实就是你的思路的一个体现哈,刚开始大家学辩证的时候,你觉得这个,哎呀,我这个搞不定这个一个大括号,这就少一个什么符号,诶当你这个语法都知道以后呢,诶做这道题主要的困难呢,其实在于你有没有捋清楚这个思路,只要理清楚思路的话,语言其实只是你的一个工具而已啊。
104:07
完事了,这个我们就写好了。这个写完以后的话呢,咱们其实要从这个代码的完整性上来讲呢,最后还差一个叫team view啊,这个team view的话呢,就是跟用户呢做这个交互的,然后最后呢,去调用咱们相应的这个team service,包括呢叫name list service当中的这个相关的方法了,那么这个类的话呢,咱就不要求大家呢去完成了。呃,当然呢,我们在这个,呃,那里边呢,可以去测试一下咱们当前这个team service写的到底靠不靠谱啊,OK,好,那这呢,咱们就把写现成的这个啊,Model下的这不有一个叫新view嘛,哎,把这个呢,大家就直接粘过来啊,这块呢从这儿开始啊,一直到最后这个位置啊,把它呢CTRL塞一下啊。这个粘过来的话呢,可能还得需要我们稍微的去调一下啊。诶,我CTRLV啊粘一下粘的时候呢,它上边呢,会有一些具体的导入啊,导入的话呢,它就自动的把我们这个刚才导过来的这个model下呢,也给我们拿过来了,显然呢,我们想用的不是他们这里边的是吧。
105:09
那怎么办呢?哎,这个呢,你就先把它呢,直接改成是我们这个team。嗯,这个把它去掉是吧。哎,这个下边的啊,CTRLC。哎,这样替换一下。哎,就这么着是吧。然后呢,这个ts utility跟他因为是在同一个下的,所以这个呢就可以不写了啊,这就去掉,然后呢,看看后边这块有没有问题啊,这个位置呢,还是把它就删了啊。那这么着是吧。往下走。啊,这个也同样的道理。那这个这个位置呢,本身呢,就没有这个方法,一会儿我们说这个事儿。哎,这个也同样的道理,把他俩删一下。啊,这个也一样啊。啊,还有这个你要删上感觉挺麻烦的,你就这么着得了,把它呢,CTRL2是吧,然后呢,上面这个放到这儿,然后呢,接下来啊替换为啊就替换为它,然后直接play骚一下完事啊。
106:06
啊,这样一个view view就当前自己的呗。哎,这样可以了啊。好,这个我们把它呢就关掉啊。嗯,接下来我们看一看整个这个一个大的一个思路是什么啊,这个咱们前面讲过呢,叫什么来着,Control shift减吧。把它们都收起来啊,好整个来看一看,当前这个类里边呢,有这样的几个属性和方法啊,首先呢,我们去创建一下之前咱们写的叫team这个service啊,以及呢,我们这个叫name list service这样的两个实例。然后接着我们在这个main方法当中创建当前这个team view,然后呢,去调这个叫enterme menu,就调我们上面这个方法了,哎,这个方法的话呢,其实就是咱们整个这个界面的一个情况啊,诶这块呢,我们把这个加号呢打开。诶就这样个情况,诶这个呢,我们把它呢也打开啊,就是当我们调这个方法的时候呢,其实呢,这块就展示一下整个我们,诶当前公司里边的所有的员工的一个信息,诶所以这块呢,会调用这个方法。
107:05
啊,这块你发现有一个条件的限制哈,因为呢,我们会点那个叫团队列表,当你要是选择团队列表的话呢,你再回过来呢,就不要再去显示它了啊这是一个小的一个优化问题哈,诶或者你刚开始写的时候呢,你可能没有注意到这个事儿,你可以呢,暂且呢,先考虑把这个给诶注掉哈,现在于我们一调这个方法的话呢,首先一上来就把当前这公司里边所有的员工呢,都给我们展示出来,调的呢,就是我们下边的这个方法。诶就这个方法啊好,然后呢,接下来呢,呃,让用户呢,去选择你是123还是四,诶这呢就对应的我们这个Switch是吧,诶123,然后呢,123的时候呢,这就是叫显示一下团队的列表,对应的就是我们下边有个方法,这是添加团队成员,这个删除团队成员退出的话呢,我们自己呢,把这个逻辑呢就写到这儿了。这呢,其实整个思路呢,跟咱们前面的项目一项目二呢,其实是类似的。啊,大体的一个套路啊,然后呢,刚才说的这个事儿呢,是因为呢,当你要是选团队列表呢,我们就展示出来团队列表了,这个呢,不是整个这个,呃,算是这个Switch就结束了,再回过来的时候呢,展示列表以后呢,就不要再让他去显示整个公司的这个列表信息了,所以我们这块加了一个衣服的一个判断。
108:09
啊,这就一个小的一个体现而已,啊,这个能理解这意思吧。就这个啊,你比如说我们现在啊,我选上这个一。这个呢,就把你当前这个团队这边,这不就显示出来了吗。选出来以后呢,你就不要让他再去调咱们这个事儿了。诶,那如果我要是选其他的话呢,你比如说选个二,咱们把这个呃,再来个七添加进来了,你看这时候呢,我一点回车,它其实呢,就会显示这个。啊,只有呢,你调一的时候啊,显示团队列表时候呢,就不要让它显示这个了,其他的你23这块呢,都可以去调它。哎,这呢,就是这样一个判断而已啊。好,那么这块呢,主要大家需要做的事儿呢,就是写这个方法,这个方法里边呢,又去调用到了,首先呢,整个公司的团队的成员的,然后呢,123这三个方法,一共呢,算是有四个方法,是不是就对应在这里边的1234这四个方法就行,所以这块这个细节呢,大家就不用去写了。
109:04
OK啊,那么首先呢,这第一个呃叫list all employees这块呢,其实就在调用咱们写的那个叫name list service里边,看看你这里边呢,所有的员工,咱不是哎调all employees这个方法了吗?这不是咱们自己写的这个事吗?啊,就这个啊这呢主要呢,咱们写的不就是当前这个构造器吗?回忆一下啊。诶这个问题好,这个呢再拉回来,诶这个呢,我们等会儿一块儿测哈,然后呢,这个呢叫list team,就是显示呢,我们这个开发团队这个成员的哈,在这里边呢,会有一个报错,这个报错信息是什么呢?是这个事儿啊,咱们现在去调这个team I调它的时候注意呢,这个呢得到的其实都是成员了。这个成员呢,如果我们要不写这个方法的话呢,相当于掉的就是to string的方法。而这个初死人方法呢,它默认展示出来的是这么长啊,但是我们这个开发团队的这个成员呢,我们显示一哈,它显示的这个信息跟这个信息啊,你看其实不一样啊。
110:00
所以说这块你就不要在这儿再去调图方法了。那就意味着我们就得自己呢,是不是定义一个方法。哎,就是刚才看到的我们这个方法,那这个方法没有,那我们就得自己呢,是不是声明一下啊。所以下边我们要做的事呢,针对这个里边呢,其实咱们就是把这个方法呢,给大家去提供一下啊好,那这个具体怎么做呢?呃,先把这个呢,我们CTRLC一下,从咱们的program开始呢去写。啊,因为开发团队的嘛,啊,因为只有从成员开始,后边才有这个正常的这个employee呢,他是没有权利进入到开发团队的,所以没有必要呢,从他这儿写了,在这儿写啊public。啊,这个呢是一个string是吧,诶这呢我们粘过来,诶从这开始去写啊,然后具体这个怎么去写呢,咱们可以参照一下人家写好的这个呗。咱们再加入一个架构师是吧,一块儿来看一下啊。架构师。爸爸。那这个我们再来看一下这个一是吧,OK啊行这呢,有这么几个人啊。
111:02
啊,其实这些人里边你看有一些本身就是成员是吧。加。这是乘以二,这不是是吧。这是吧。啊,其实呢,如果你看雷军也原来也是是吧,其实你要从这个,咱们就单纯从技术角,这不能画框,画框以为就挂了呢,是吧?诶单纯从这个技术角度来讲,大家觉得像像这些人谁比较厉害呢。徐柱,不会是吧?当然丁磊,丁磊是不是也不太行?雷军,雷军应该算是挺厉害的了。啊,就是从技术的角度来讲哈,但是如果说呢。嗯,说成员的角度哈,雷军还可以啊,但是你要说从这个技术的角度来讲,其实更高的应该是李彦宏哈。就李彦宏呢,其实我们可以把它呃加个title呢,叫做科学家的啊。呃,像当年他在硅谷呢,做那个搜索引擎的这个演讲的时候啊,下边这个听众的话呢,就有谷歌的创始人是吧。
112:01
哎,所以单从技术上来讲呢,李彦宏的级别是要高一些的啊,像雷军呀,这个这个包括360的这个谁呀。周鸿T啊是吧,包括马化腾啊,他们可以说就叫成员了是吧,或者级别高一点架构师。嗯,不能再高了是吧,诶这个呢,还是从科研角度来讲还是比较厉害的,但是至于说百度怎么样,那另一说是吧。嗯。好,这个拉回来啊,现在的话,我们写了三个不同角色的这个人,这儿呢,其实都是调他们各自的,咱们现在要写的这个方法。啊,因为他们这个实现的这个方式呢,不太一样啊,那我们就把它们盯一下啊,方便我们这块呢去做一个参考了啊。好回过来,首先这块呢,我们是写的这个程序员啊,程序员这块呢,相当于是丁磊了,那我们就这块儿呢,先就return一下呗。首先呢,是你这个叫MD是吧。整一个斜杠呗。然后这个叫get你的一个ID,然后接着。内是吧。杠T。Get一个name。
113:00
RT。Get一个。这个换人行吧。杠T。Get还get吗?啊get啊,Salary在后边一个杠T程序员是吧。哎,是不是就这样。啊,这个呢是对于丁磊来讲的,OK啊就写成这样,然后呢,我们把它呢,再CTRLC一下,嗯,考虑呢是设计师,设计师在这儿啊。哎,在这儿去写。好,然后呢,这个呢,我们就直接呢,得get一个mid了。嗯,前面这块呢,其实套路一样哈,这块呢,其实一写我们就想着说,诶能不能把这块都一样的这个事儿呢,又封装一下是吧。可以吧?可以哈,这个封装的时候呢,注意呃,从一开始这个成员开始,这就不太一样了,所以呢,你只能是回过来啊,要做这个事儿的话呢,那你又得是从这儿一直到这儿是吧。把这一段呢,给它取出来啊。我再造成一个方法,这个方法的话呢,跟我们前面这个类似啊,还得是protected,还这个string,我们叫get,比如叫basic details。
114:04
I for him。哎,以后呢,我们写程序的时候呢,这个方法名可能就是会比较长一些啊对,就在这个位置呢,我加了个basic啊,然后呢,这个方法呢,CTRLC一下,我在这儿呢,去调用一下。后边呢,补一个成员不就可以了吗。嗯,OK啊嗯,这个杠T呢,你要说我想补到这儿也行。杠T是吧,然后这呢,你就纯粹呢,就写个成就可以了啊好,然后呢这呢是构成的这个最基本的这个部分了,下边呢你都可以呢去调。所以把这个方法CTRLC一下回到我们这个设计师这块,从这一直从这儿一直到到这儿了,是吧。先到这儿啊。哎,这个呢就不要了,这个呢叫。设计师。诶,然后呢,这两个杠梯。哎,后边这块就加上你自己的叫get一个叫bonus是吧。诶这么着啊好,然后类似的这个操作CTRLC再放到你这个它的子类呢,叫做架构师里边。
115:05
啊,这叫架构师。行get bonus,然后呢,再接着。杠上踢一下,Get in这个stock是吧。那就这样呗。哎,完事了啊好,这个呢,写完了回过去,然后这个位置,诶这就不报错了。那这就搞定了啊,然后呢,诶结束啊I member,这是一个添加的一个行为啊,具体这块呢,其实咱们都可以呢,下边就进行这个具体的测试了,诶行不行啊,看一下我们写的这个service,因为这个list我们已经测试过了,问题不大啊,主要就看它了,来把这个我们跑起来。找出来了啊,首先这块呈现给我们的呢,这就是咱们调的name list service里边咱们写好的那些方法了。哎,这不就直接呈现出来,跟上面一匹配呢,哎,还挺好,都对齐了啊,没啥问题。啊,那这块呢是OK的,然后呢,我们选是一。
116:02
哎,也没有成员,哎挺好啊,选是二添加团队成员,这个时候呢,哎,你看里边蕴含的方法啊,我呢先写个ID,比如我写个十,先要根据这个ID呢,找到这个员工。啊,这个时候呢,使用的是我们这个,咱们直接在这儿一边说一边看一下啊。哎,往上边去找。呃,现在我们调的是这个是吧,哎,要添加的ID是不就是这个吗。我这写了个十先呢,去我们这个,诶内幕list维边呢,先找这个员工,所以这个方法呢,其实就已经测试过了啊,找到以后的话呢,把它再添加到我们这个,诶通过我们这里边这个添加的方法去做,咱们刚才呢,不是写过这个方法了吗?已经。嗯,好,这呢写个十号走起,这个呢叫添加成功了,诶这个添加呢,我们说有好多情况不都是失败的吗?咱们当时还做了好多种这个情况啊,比如这个呢,它已经是BD状态了,我再那选一个二,我再来个十,这个是不是就加不进去了。
117:00
哎,这不是类似的这个原因哈,这个十是一个成圆了,那咱们再比如说再整几个哈,哎,再来一个二,再来一个八。啊,然后呢,再来一个二,再来一个七。那么这里边儿的这个。嗯,八七,你看这个对应的状态这都改了,架构师的话呢,我们说只能有一个啊,现在我们再加个架构师。比如说马化腾二啊。哎,选个二,你看这个就失败了是吧,诶说明呢,咱们写这个方法呢,没啥问题啊,你可以呢,再去测试一下其他失败的这个场景,这个完了以后呢,我们再选上这个一,哎,相当于此时呢又去调用一下,哎这个呢就相当于是调上面这个了,团队列表这个方法。这里边儿呢,就是调咱们写的那个呃气。嗯,这个在哪儿呢?哎,西安呢,是调我们这个方法,这不就我们写的这个吗。昨天早都忘了是吧。就咱们一开始写的这个哈,就是那个团队的话呢,不是说最多有五个,咱们实际上可能就有仨,现在把这仨呢,不是构成个数组返回吗。
118:02
哎,就这个方法啊,哎,那么调它,然后呢,看一下靠不靠谱啊一回车。诶,还挺好。没问题。行,然后呢,咱们再来看一下这个删除的行为。删除的话呢,叫TD啊,通过这个TD来删,比如我们就删这个杨延庆了啊,哎,我们选上这个二,哎确认要删吗?咱们就直接确认了。叫删除成功,然后呢,现在这个列表里边看一下啊羊啊这块呢,看F了又回起来了啊,然后呢,我们再来看下这个一这边一三还没啥问题。啊,其实呢,整个我们这个程序呢,就没啥大的问题了啊,这个我就怪就退出了,好,那么整个这个项目呢,咱们就搞定了啊。告一段落。诶,那么大家要写的时候呢,稍微的咱们再捋一下啊,大家写的话呢,先写这个是吧,这是第一个需求,第二个需求呢,写name list service。呃,这个呢,主要做的事儿呢,其实就是把我们这个data当中的这个数据啊,装配到我们相应的这个数组当中。啊,这个主要写的其实是这个构造器的事儿。
119:01
啊,这块大家呢,需要呢去操作一下以后开发当中我们基本上不会这样去做了,因为我们这个数据呢,以后呢,咱们都是放到数据库里边了,就不放到我们对应的这个,呃,内存的这个。哎,数组里了啊,这块注意一下,那通过这个呢,大家稍微呢,去练一下这个逻辑啊。好,这是他的一个重点,然后呢,这是第二个事儿,第三个事儿的话呢,写这个team service。啊,相应的在这个过程当中,我们还会有一些异常啊,把这个自定义异常类呢,我们去写一下啊,这个里边呢,写谁比较麻烦呢,就这个添加啊,稍微费点劲。然后最后的话呢,这个team view的话呢,直接大家就粘过来就行,粘过来的时候呢,要注意一点,就是针对于我们从诶开发团队的啊这样的几个角色,我们需要呢,去提供一下它内部的一个方法,就是咱们的这个方法。啊,这块你再补充一下就可以了。行,然后呢,还是咱们以前讲项目这个事儿啊,相应在这里边这个新的知识点啊,没有啊,当然呢,这里边业务呢,逻辑会更复杂一点,大家写它的意义呢,就是训练一下你的逻辑能力啊,如果呢,这个项目呢,你能够比较自如的写出来,那相应的你解决问题的能力呢,就会强一些啊,你再回过去看咱们以前写的这种代码,你会发现呢哟,不就是一个小练习吗?
120:11
啊,会有这种感觉啊,但是这种感觉呢,需要你不断的去写代码才能实现的啊,OK。
我来说两句