00:00
好,那接着的话呢,我们还有两个方法,第一个呢叫ADD member,第二个呢叫remove member,这两个呢,其实对应的就是咱们在这个页面展示的时候呢,第二个叫添加团队成员,第三个呢叫删除团队成员,这两项功能对应的核心逻辑就是这两个方法,好这个我们先把它描述一下啊,这个呢就是将指定的员工添加到我们的开发团队当中。这个写到这个这啊将指定的员工。哎,添加到。在这个开发团队中啊,将指定员工添加到开发团队当中,这里边呢,有很多种添加不成功的情况,咱们在一开始演示的时候呢,也说过这个问题,咱们找一下这个PPT啊,在最开始这块说呢,添加的时候呢,它有可能会失败啊,有这么多种情况都会失败,那这里边儿呢,咱们也需要考虑这样的一些问题。
01:03
啊,要考虑这样的一些问题啊,CTRLV一下,那如果说你要是不满足这些情况呢,那就算是成功的了。所以这块呢,能不能添加成功,咱们可以就先这个这个走这些就是如果你要这样呢,我就不成功,那这样呢不成功这个呢都让他去抛一些异常,然后如果这些呢都不满足了,那就说明你能走到后边,那就相当于能添加成功。这个逻辑清楚是吧,嗯,行,那咱们下面呢,就从这个来写一下这个方法啊,这个方法呢,还是呃,有点代码量的,这个首先说叫成员已满,无法添加成员已满这个怎么衡量。哎,就是如果你要发现这个total这是已经存的了是吧,它怎么着了,大于等于我们的这个max member了,你最多能分五个,我现在已经是五了,实际上基本上它也不会到六是吧,所以咱写了个等于呢,是保险点啊管系等于呢说诶那难道不等于就可以吗?啊,其实就是说大于等于的都不行是吧,所以它一般呢是取不到这个大于的啊,如果呢,你一旦发现这个total痛呢,是大于等于它的了,那这时候我们就throw一个异常,哎,我就要team的exception了。
02:22
那异常信息,那就是这个CTRLC,诶,那你这块抛了异常这块是不是对应的,我们先RL一下,这样啊理解吧,理解这第一个好,下一个说该成员不是开发成员,无法添加。咱们这个参数呢叫employee,但是咱们要添加的话呢,只能是,呃,最起码你也得是一个成语二,如果像马云这样的是不能添加的,那这时候我们怎么去限制他呀。我们判断一下这个E虽然是个e employee,但是呢,你看它是不是乘以R是吧?嗯,如果in instance of program,这就相当于是个程序员,那要是个程序员是不是就得能添加是吧?考虑能添加,那现在他说不是成员就不行怎么办?
03:22
是不是加个飞呀。理解吧,哎,这不就表明他是一个普通的employee了,就啊,那如果说人家这个employee是一个设计师,设计师是不是也是个成员啊,对啊,这个咱们都讲过了啊,如果你要是一个设计师是个处的话呢,他的副类也也就是处了啊,所以这块我们就这样卡着就完了,这个呢,还让他去throw一个异常,说这个事儿CTRLC搞定好,下一个说该员工啊,已在本开发团队中。就你已经在我们这个团队里了,这怎么判断,那就说明我们本身这个团队,你本身这个团队不就是在在你这个total所代表的这个数组里了,是吧?那就相当于你这个团队里边,我能够找到你现在的这个人,对吧?哎,对,我们就得去做一个便历了,哎,发现你在这里边啊,那便利的话,这个逻辑可能呃又得好几行,这块不妨咱们就写个方法吧,我就写成叫exist啊这个就知道了啊,咱把这个E呢给它扔进去啊,然后呢,嗯,你判断一下它是true还是false呗,对吧,哎,如果哎这个呢,是一个这么着啊,这就相当于是不是已经存在了,你要反回是个true,我这块呢,就抛个异常说呢,你已经在了。
04:55
哎,这样处理好,那这个方法呢,咱们需要去给大家创建一个啊在这写啊在这写好这个咱们刚才说这个事了啊,嗯,怎么写呢?嗯,咱们这时候呢,你看一下这个员工是不是已经在了,已经在了,我们怎么判断他在不在呢?拿D行,嗯,这个我们写个if啊,大家先别写if了,得写个for了,In I等于零,I呢小于谁total。
05:24
不能写那个team.las啊对吧,嗯,你要不就是后边不有有可能会有一些闹的呗,哎到total,然后哎,佳佳现有的咱们这个team I team当中元素它的get一个ID,如果这个ID呢,这个还得写个if哈。如果这个ID呢,你发现它等等于咱们一点盖率ID了,那说明我就找到了,找到的话呢,你是不是就是说明是不是找到了就是个true,呃,如果呢,你这个for循环以后呢,也没有进去过,那就是false对吧?嗯,这个时候呢,我是拿着这个ID来判断的,嗯,你要是拿这个member ID是不是也行啊,哎,Member ID member ID行不行。
06:17
想想。谁没有买的呀?谁能给说一说,这时候我要用memory判断可不可以?这个嗯,可以可以可以,这个嗯,不行啊大点。输进一次他一个值,它这个值不是按顺序的。是按顺序付的,但是那个值大家也不会一样啊,确不确定是哪个无所谓啊,反正你只要有这个,就我现在呢,就是找这个员工,这个员工呢,你就是这个员工,如果你要之前加过他肯定会有MID,对吧,虽然咱们还没有往里边去加这个逻辑啊,他肯定会有ma ID,而且ma ID每个人都是唯一的啊,之后再加他这D还是原来第一次加。
07:26
你要是我们加进来,你删出去,然后再给他加进来啊,那就看你后边这个逻辑怎么写了,嗯,那个也没事,那个也没事,嗯,那正常来讲,咱们肯定是,比如说我们他说的是这个意思啊,我这个开发团队中我加了两个人了啊,加了三个人嘛,我把这个人干掉了,正式来讲这个人呢,麦一开始应该是二是吧,我干掉了以后呢,然后我又给他加进来了,又加进来就不是二了,因为咱们上面用的那个sta叫cer,不是让它去做一个赋值嘛,现在再进来它就成四了,这个就没有了啊,就不让它存在了啊呃,这这块还不是主要的哈,就是嗯在想能不能用ma ID,有没有同学可能会想说有memory ID属性吗?
08:23
想想我这个employee会有M属性吗?你从这看员工employee当中确实没有memory ID,但是我说啊,这个E它一定是一个programmer,对吗?为什么呢?他能走到这儿了?说明他上边这块呢,就没有满足没进去,那说明人家是不是就是一个program,因为你这不是的时候是不是都抛一场啊,他既然能走到这,说明他这E是不是一定是一个programmer了,他要是一个programmer,这个E一定会有m midd对吧。
09:08
啊,而你这个数组本身,呃,又声明的是一个programmer,所以实际上我们拿这个ma ID去比呢,也是可以的啊,也可以,只不过呢,就是多一步,就是你需要在这里边呢,先给它做一个强转是吧,那你把它转成是一个programmer。而且这个强转一定是可以成功的啊,因为咱们不成功的,这不都已经给它过滤走了嘛啊,他一定可以成功,然后呢,你在这里边拿这个member ID去比也行啊也行,这个ID呢也可以啊也可以,所以这呢我就拿ID去比了啊,不说那种情况了,在这里边我们标示一下这个方法的一个作用。啊,就是判断,哎,指定的这个员工是否啊已经。存在于啊,现有的这个开发团队中啊,就这样啊,这个位置呢,我这写了个if,然后return to,其实呢,你要简单来写,直接呢,我们就这样CTRLX,我直接就return一个,它是不是一样啊。
10:16
那一旦你要发现有一个这样的等等的,它不就是一个处吗?也OK啊,好,接着回过来搞定了。嗯,再再往下,下面呢,是说说该员工以是某团队的成员了,他不一定是这个团队的,可能是别的团队了啊,嗯,这个怎么去衡量说已经是某个团队的成员了。啊,就是它是不是还有一个属性叫做这个状态啊,诶,对啊,就是这个,如果你要是在本团队呢,咱们拿这个team进行判断,你是不是在这个team里边就行了,但是你要是人家可能在别的团队里边,那你拿这个team就不合适了,呃,人家别的team呢,你也不一定能拿到啊,或者说呢,有好多团队你得所有的都得考虑,干脆呢,我们就直接拿他这个状态去判断,如果你的状态是busy,那就说明你在团队里了啊,那当然还有可能是叫vocation了啊,我C跟人家正休假呢,那恰好对应的就是下一个啊,正在休假,无法添加,所以这两个情况呢,咱们都根据status来进行判断啊,那status呢,现在咱们直接拿这个一点啊,Get status你发现没有,因为因为employee当中就根本就没有,只有我们programmer里边是不是才有这个属性啊,嗯,那那又由于咱们这个E呢,咱们能。
11:43
走到这儿了,说明它一定是一个programmer,否则的话呢,在这就已经走出去了,所以我们这呢,就可以大胆的去做一个强转了。哎,这个就要一个P了啊pro,哎,Gramar p能看懂吧,嗯,这个是我们说啊,一定不会,哎出现出现什么异常啊,哎类型转换异常,哎这个是因为你要有不是这个类型的,在这都已经出去了啊,在这一定可以强转,强转完以后我们此时呢,去获取咱们这个P点啊,它的叫get status。
12:27
哎,Get它的这个status,它的这个status呢,咱们这不是就相当于给它,呃也指定过这个值了是吧,它这个值的话呢,我们看它到底是什么样子的啊嗯,那这个呢,咱们可以这么着处理了CTRLX啊说如果你的这个间点干掉它的一个内。对吧,嗯,Status它的一个name就是它用的具体是哪个对象了,他这个name呢,是一个string型的,如果它equals啊什么呢,这。
13:06
理解不?就是咱们这个status,咱们这不是在这个里边先是拿的这个来赋的值,这是free的啊,这不是一个对象嘛,它有一个属性是free,就是我看他的这个name啊,你有可能回头改成busy了是吧,我就看你这个name呢,是不是这个free啊,是不是busy,你要是,嗯,你要是busy的话呢,说明你就现在是一个已经是某一个团队的成员,这样对吧,那这个写法呢,其实我说呀,不如这个写法好。第二啊E4,哎,我把这个呢,扔到这个参数位置。这个能理解不?当然在这个问题当中其实没啥差别了哈,就是大家写代码的时候呢,呃,我就是泛泛的去讲啊,说后边这写法不如前面那个好,为什么呀。
14:00
写就哎对对啊是是这意思,就是我们这个前面呢,你是一个确定的字符串,这个位置一定不会出现控制人了,哎,但是你要这样写的话,有时有有可能这个位置是个no是吧?哎,调它的时候呢,就是增加了你这个控制帧异常的一个风险,哎,所以大家写代码时一些细节点你可以考虑一下啊,这个我们这样写,在这个情况下呢,他就是一个,嗯,已经是某个团队的这个成员了。当然这个是不是也包括他如果恰好是本团队的,按说也能走到这儿是吧,只不过本团的这个咱们在上面呢,都已经给他考虑过了啊,就相当于这个范围呢,更小,这个范围更大一些啊这一种情况,然后再来一个else if啊,如果呢,你是一个叫VOC。嗯,第二啊一四,嗯,还是一个它,嗯这个。啊,CTRLC这样啊。
15:02
行,哎,这呢是你正在休假。哎,这样就我把这个删一下啊好了,这样呢,就把这个问题呢就搞定了,那行吧,嗯,就这个ES的话呢,大家我这用的是equals,你要说这个有可能写成小写了或怎么样的,这不还有对应的另外一个方法,你用这个也行啊,叫equals ignore case是吧?啊就是在忽略大小写的情况下呢,如果跟后边这个一样啊,也行啊也行啊,这个也可以,就是如果我这写成一个小写的BD了也行,就是你忽略忽略大小写的这个情况了,好再接着往下,下边这个呢,也有点难度啊,咱们这里边呢,还限制说团队里边呢,架构师,设计师和成员这个人数呢,有个上限啊,说架构师呢,最多一个设计师俩乘以下仨怎么办?
16:07
我现在想添加一个员工叫E,不一定能加成功,是因为呢,这里边呃,已有的这个团队里边呢,呃,他有一个这样人数的限制。怎么处理啊,添加一个你你得看一下这个E是谁是吧,这个E,如果你要加的这个E,他假设要是一个架构师,你是不是得看一下已经。已经在这个团队当中的架构师有几个?如果没有那就能加,如果有一个了,是不是就不能加了?啊,如果呢,你要添加这个E呢,是一个呃,设计师,你得看一下这个已经在的这个团队中的设计师已经有几个了。啊,包括成员也是一样,说白了呢,我们得先看一下这个team当中已经有几个架构师,设计师成员了,然后你再看你这个要添的这个意,你是一个什么,然后看看你要你你是一个设计师,你看看设计师已经有几个了,看看诶满不满足是不是得这样啊,所以说这个程序的话呢,其实这个逻辑就跟咱们平时做事一样,你平时你想你你怎么办,你就只不过用代码去实现而已啊,所以咱们这个事儿呢,要想实现得先啊,首先呢,要获取这个team中啊,这个已有的成员中,Team已有的这个成员中这个呃架构师呃设计师,还有这个程序员的人数,没问题吧,嗯,那这样的话呢,咱们我这写一个in的啊,In型叫number of,嗯,加。
17:59
下构师啊,叫二这个我这样写了,它呢先负一个零逗号,这个大家还记得不啊,Designer这也是一个零逗号,Number of程序员programmer,哎,这是一个零,这个咱们前面讲过吧,哎,就是都是int型的,我就都借用一个int了,哎中间用逗号一下,呃先呢赋值是零,然后呢,咱们这个看看你已有的这个team当中这个,哎各自有几个了,是不是就得写遍历了,In特I是零,I小于T点。
18:35
Last a,不对吧,Total是吧,还加加,接着怎么写?If,听MY这是吧,怎么着,接着instance of吧,先判断谁?哎,对,这个是一个重点,这个你要是先来判断成员呢,就麻烦了,因为大家全都是乘序员是吧?啊,架构师也是乘序员,这个呢,就不好办了啊,所以先判断这个范围小的,那那如果你要是inside of它,我们就让它加加行,然后这个位置一定要小心啊,得写r if,千万别写成又写个if了,嗯,Incense of。
19:30
是一个啊,这个是。他呢,加加好再来,我就直接else了,可以吧,在这个问题中其实没问题是吧?嗯,因为也就这个情况了啊,你要写个if也行啊,Instance of是一个普通的一个成员啊,本身咱们这个数组的类型就是program,所以这个一定是个储能进去的,就关键就看你满不满足上边了啊,上边要进去了,下边就进不来了,好,通过这样的一个循环,我呢就获取到了我们现在的这个团队当中有几个成员架构师设计师了,没问题是吧?接下来我现在呢,想把这个E呢给它加进来,这个E呢,我们在这个位置呢,已经给它做了一个强转了啊,已经能够看到它是一个呃,Programmer了,那我们接下来怎么去把这三种情况给它过滤出来呢?是不是该写衣服了,如果我们发现,咱们当。
20:39
前这个P你用P也行,用E也可以啊,哎,P就是你强壮以后的了,哎,如果它呢,叫instance of,先判断谁。啊,是不是也得先加构式啊,因为它范围小啊,对吧,你要拿p instead of programmer,它是不是一定是个programmer,对啊,所以先判断范围小啊,如果呢,你是一个架构师,就是我相当于我现在要添加的元素是个架构师啊,你要是一个架构师,然后我们看一下咱们当前的这个架构师的这个人数啊,如果我已经叫大于等于一了,说明我这时候已经是不是到上限了。
21:21
这不就抛个一场呗。哎,这个呢,就写一个它CTRLC。对吧,哎,这这样好,然后在else if说如果我们这个P叫instance of,你是一个设计师设计师啊,说如果你这个number of设计师是大于等于二了,哎,那就抛一个,哎那个异常。哎,然后呢,是不是还有一个是吧,你写个LC if也行,写个LC也可以啊,哎,这个时候呢,如果你是一个乘以,哎,如果此时,哎,你这个呢,是大于。
22:11
A number of。我这number of啊,这个少一个M是吧,这样啊CTRLC诶如果呢,你是大于等于三,那这个呢,就抛另外第三个异常。理解吧,行,这比较悲壮啊,这样这个逻辑还挺复杂的,这样的话呢,我们就判断一下你这个呃,P是不是在这个情况下呢,满不满足,那如果说这些呢,都没有进去,能走到这儿的,说明上边这个情况呢,就都都都排除掉了啊,那下边呢,我们就是选择是不是将咱们这个你写E也行,先写P也行啊将P吧,或者你写的是E啊,这是同一个对象,只不过咱们做了一个强转啊,将它呢添加到哎现有的这个题目中,好添加,怎么添加。
23:19
正常来讲,咱们直接就这不是这个team是吧?Team呢,你现在是不是total透,我们前面也有这样的一个经验了啊,哎,这个直接呢,是不是把这个P给它加过来就可以了,诶然后这个位置呢,你还得需要这个total透呢,做一个加加,哎,Totalto加加一下,那不妨呢,我就直接是不是合成在一起了,写前加加还是后加加,哎后加加呗,对吧?哎,如果这个to比如是二了,那你就是相当于是角标零一的位置有了,我们就先哎二哎,加到我们这个数度第三个位置,然后再加加一下就行啊注意这时候没完事啊,咱们要是加到这个团队中的话呢,你这个状态是不是也得改一下啊,另外的话,你这个员工他是不是也有一个叫t midd啊,是不是也得给人赋一下值啊?
24:05
哎,好,那这时候呢,你得注意这个啊,相当于我们这个,嗯,开发团队中,或者就直接写这个P吧,看它的一个属性。还有一个赋值,所以呢,我P呢,它有一个叫首先呢叫set status吧,哎,我得把它这个status得改一下,第二它得改成是一个busy了,这是一个啊,其次它有一个叫set,一个叫member ID怎么写这样counter佳佳。对吧,哎,这个要小心点,别丢了啊,别丢了这个问题,那我现在问一个小问题,我这两行代码跟这行代码,诶,我现在是把这两行写在这一行的后边了哈,你说我是写前边写后边,第一个有没有不同,第二个呢?嗯,如果要有不同的话呢,我应该写到前面还是应该写后边。
25:09
想想。写前面还是写后边,然后呢有没有不同,然后呢应该写哪边?谁给说说,这就看你对面向对象掌握的一个情况了。先说有没有不同。我指的这个不同是什么呢?就是说咱们最后呢,就保证你该加到这个团队,得加到团队里边,然后该给人家这个,呃,显示这个是busy,你得能显示出来啊,就这个意思啊,就是是不是满足我们这个项目的要求。嗯,怎么着啊,如果写前面的话没有加。
26:14
可能有同学会想说,我我我先设置,哎,我把这个都设置好以后,我这会我这个这个P就是有的是想先先设置是吧,设置完以后呢,然后我把它加进来啊,有的人可能说就应该写后边啊,为啥呢?因为你先进团队了啊,这个时候我给你呃发一个这个ID是吧?哎,然后给你设置成个busy啊,这样感觉逻辑是没问题的。啊,有道理,但是呢,这时候你你得从面向对象的角度去看啊,这两个先后有区别吗?其实都可以。其实都可以,因为这时候你这个P复过来的是不是只是一个地址值啊,哎,这不就看你面向对象,你对这个内存解析是不是清楚了啊,我们在这个对空间当中假设啊,咱们这个total呢,已经存了俩了,我现在是不是想把第三个这个这个P是在占空间一个引用了,然后对空间是不是指过来,你有一个实体的对象嘛,咱们呢,把这个P附给这个,呃,数组一个位置,其实也只是把它这个地址值是不是拿过来了,把地值拿过来了,并没有说真正的去COPY1份这个对象啊,把地址拿过来了,然后呢,你这个属性我是先附的后付的,实际上是不是关系不大,我先指过来了,我再附的这个纸,跟我附上这个值我再指过来是不是一样啊,你又不是说我附上值以后,我把这个整个这个对象呢,完全复制这一份,那样就有区别了,那样你是先复制的还是先复的这个值,那就有区别,但现在呢,你不就是个引用地址吗?先后实际上无所谓。
27:51
想想这个问题好,那这样的话呢,咱们把这个添加的这个方法呢,就搞定了啊。
我来说两句