00:00
关系来打开它,我们用图标来说话来,这些关系包括什么?包括泛化关系吧,泛化关系,直线关系吧,关联关系吧,还有什么聚合关系吧,合成关系啊,还有什么。依赖关系啊,依赖关系它是类和类之间的六种关系啊,类和类之间呢。大致其实我们叫三种关系啊,三种其实这个聚合和聚合,合成和依赖呢,我们都可以叫关联啊,都可以叫关联的类和类之间的关系啊。六种关系吧,形成六种吧,啊六种关系这是分的比较细啊来我们加速一下来看一个啊,咱们居中吧,行吧,首先第一个呢,泛化关系,咱们其实说的是什么呢?说的是类和类之间的什么继承,接口和接口之间的什么继承啊,那何在继承接口和接口之间的继承泛化呃关系其实严格意义上叫A,叫a is a b。
01:15
啊,实线关系,其实A叫什么a like啊AB就是那个电脑的,就是那个主板上的那个插槽。就那个插槽是虚的吧,是不存在的吧,就是抽象东西插槽像内存条吗。那个插槽像内存条吗?像啊,内存条能往这放吗?行啊,就像啊,A let a b关联就是a has a week啊,你和关系不一样啊,所以这个东西呢,你还得好好理解一下啊,来咱们继续咱们这边的话,比如说汉化板画一个啊,嗯,简单啊,大家看这这是什么呀。
02:00
累吧,累啊,来A类。来B类啊,A类和B类,那继承是哪个呀。泛话啊,类个类记成是这个啊,这边呢,我要提一提这个东西,来这边呢,我给它注释注释一下啊,这个我写上它代码是这样的public class a啊,然后呢,我在这写一个public class b去继承谁啊A啊,它其实表述的是这个关系啊,代码是这样一个代码。明白吧,好来,我给它连上去好了,这边呢,我给它全选,来我给它粘过来啊放到这。好,粘过来啊。行吧,就这么这么着吧,啊,然后接下来呢,它除了这个之外呢,大家想一想我们接口之间。是不是可以进能啊,是接口吗。接口吧,嗯,再来一个来接口这块我看看啊,这个接口双击来把这块改一改这个C接口吧。
03:07
然后这个呢,就叫D接口是吧,接口接口之间继承它还是这样啊,点右键吧,我把它改一改啊这个呢,我改成label吧,啊就是这个啊,Display label啊把它改改成这来这个我也改一下option啊,Display啊把改成label吧,这种方式我看起来可能比较舒服一些啊来我们还是它,哎,接口之间可以多继承吗?可以吧,这个我就我就不写了啊,我就直接写一个了,嗯,接口这块的话,再写上public interface吧,叫C吧,再来一个叫什么public interface,叫什么D吧D它就继承谁啊C吧啊必须继承C啊行了,这么着吧,啊来给它连上吧,接下来呢,我把这个也复制一下吧,啊复制之后呢,我给它放在这,大概呢,就是这么一个关系啊,大家呢,现在就把它掌握一下啊,以后的话我们要画这种图啊。
04:05
来。行吧,这个呢,我也稍微让它大点啊,啊大点啊行,这就是叫放号啊。接下来呢,我们看一下,下边有个实践吧,实践大家重点掌握一下什么呢?就是说。泛化指的是这种实线的空间箭头水相素。啊,泛化实现空气电流以后呢,看到这个圆边图呢,你看到这种关系呢,就知道它是一个什么关系啊,泛化关系啊,其实就是G什么关系啊,要是实线的话,我画一下啊,实线来这边往这拖一下。往这拖一下啊呃,比如说我在这个位置呢,有一个接口啊,点右键,然后呢,我这边呢,给它改一改啊改成这个,来这边改成E啊好了,然后呢,Z这个类吧,叫F,嗯,实线是谁啊,是哪个叫实线啊这个。
05:04
啊,这边的代码怎么写,咱们写写代码吧,来public interface e了,这边叫public能写上啊public class叫什么F啊去是吧,去实践什么呢。啊,就这个关系F实现E行了,我这边呢,再给它连上去啊,这是注释啊来把这个复制一下,接下来呢,我给它放到这吧,啊放到这。这个吧,实现啊行了。关联呢?关联怎么画?关联,比如说。简单点画一下了啊嗯。
06:02
看看啊,这边的话是不是有这个东西。行吧,这边的话这个改一下啊,改成A型吗。然后呢,这个是B,然后AB之间呢,用这个啊连起来。这个往下一点就放这放这啊这个呢,我们代码怎么写啊。The public class a吧,这边有个public class,什么B吧,A和B什么关系呢?其实在这啊,有一个什么B吧这样。啊,A和B的关系就是这个,来,我给它连上去,哎,这样。把它复制。好,这个呢,我们先到这儿啊翻过来。关联关系,其实在A对象中有B对象的引用,明白吧,在A对象中含有B对象的时候,引用比什么?比泛化弱吧,比泛化弱啊。
07:18
它比算法要弱一些,它这个箭头很重要啊,这个箭头指向这就代表A能找到BB,能找到A吗?你必要想找到A,你看一看啊,来这叫什么关联,我再这再来,我再说一下,这叫单向关联啊,单向关联啊,这叫单向关联来稍微大点吧。来,我把这个复制一下啊,然后把它替换一下单向关联,双向关联怎么画呢。双向关联就代表A能找到BB也能找到A啊,来C来D好了,来给它连上来,把这个线打开,打开之后呢,拉大点啊,拉大点之后呢,找到这个角色啊,这个D角色。
08:02
D角色在这把这个勾给它去了啊,叫navigable啊应用你看去掉了OK。那这个位置这个啊,OK行了,这样的话,这个呢,我们称作双向关联。来行了讲啊这边呢,我看一下这个代码应该怎么写啊,Public class c里边有一个什么D吧,Public class d里边有个什么C吧CC啊,这边写上什么D啊D行了,这叫双向。啊叫双向关联,A能找到BB能找到C啊就这意思,A能找到BB能找到A啊是这意思啊来这个写上,这叫双向关联,叫双向关联得这边呢,我给它复制一下啊,然后呢,我给它放到这个里边啊,这个关联的我就把这个也写上啊,单向的,双向的。
09:03
大概的这个图看一下图太大了是吧,还是小点小点啊,这个让他小点得了。太大啊。然后这个来张小点。小点啊,这个也让小点啊,来小点。这个小点啊。好了。呃,单向双向,呃,聚合呢。聚合其实说的是整体和什么部分之间的什么关系啊,也是什么是一个特殊的什么关联关系吧,整体和部分之间的关系,但是要记住啊,整体和整体不会决定部分的什么生命周期啊,整体不会决定部分的生命周期。合成关系也是来把这个复制一下,直接贴过来成关系,是特殊的关联关系,整体和部分定位,整体会决定啊部分的生命周期,这叫合成,聚合是它,合成是它。
10:10
依赖关系呢,主要是体现在主要啊,这主要体现在局部变量上啊和对象啊和对象就是类吧,类和类体中的局部变量之间的关系提了。方法执行结束啊,方法执行结束,该局部变量的内存就就消失了吧,就消失了啊。来看一下聚合吧,聚合的话我举个什么例子啊。聚合。就举一下那个班级和学生。
11:05
一个班级对应多个学生,行,就这个吧,啊来班级行了,这个吧,行吧。学生,嗯,别问他,哎,他们最基本是用什么关联吧?来这个往下点啊,行,这个往下的话可以这样啊,点住它,按住CTRL键往下按箭头啊。好,那这边呢,我来看一看,打开它啊,这有个student找到,找到student之后,把这个箭头给它去了啊,把这个箭头去掉,点亮了有用啊,箭头去了在这个整体部分加空心菱形啊,整体是这个class加空心菱形啊,点它来点应用空心菱形啊,OK就行这个啊。说一下单词不认识记位语,单词不认识记位啊来OK就行了,那这边呢,这个呢,对的,这个程序是怎么写呢?来我来写一写是这样。
12:02
Public class叫什么class吧,下面有个什么类啊,Student吧啊,我说一下啊,如果你这边要是有一个student,那你这就不叫聚合了。你这叫关联吧,是不是刚才我们说的是关联关系啊,A里边有B吗?你不是,你这个班级里边不是有一个学生对吗?所以你这么写肯定是不对的,没有办法描述我们现实生活的一个实际场景啊,所以这个时候呢,我们这边加一个什么集合。谁是整体啊?谁是部分啊。这是部分啊。来就是这样。Student哎,这边我写上啊,写上一个students。
13:02
好,就用OK,那这边的话,我其实还可以表示一下啊,这是什么意思呢?就表示在这个类里面有一个students这样的重现变量。注意啊,你这个需要写到这这个图所表示的意思,就表示下边那个这个里边有这个student。能理解吧,这个student不能写到这啊,这是一个角色啊,这个角色在这边呢,我打开它,我如果想表示这个关系的话,我可以表示表示一下啊,比如说像这个吧,这是什么student吧,这是一个什么班级吧,班级这边是你看看看有没有啊。一。行不行一吗。学生的话就多个吧,嗯,多个的话,这个学生点了跟学生吗?这边选零到N了啊,零到N应用OK,这样的话,那个图的关系就表示出来了啊,所以这边呢,我们连上来。把这个画一下,咱们放到哪了,放到这。聚合啊,就是这个来小点啊,聚合这聚合关系。
14:05
是这样。代码是这样啊,代码是这样的。加号表示公开啊,减号表示私有,那这个呢,咱不用改了啊。好,这个合成关系是什么样的,合成关系是整体决定部分的生命周期,把这个说完啊,把这个说完来。比如说现在呢,我在这儿有一个类啊,这个类叫人。然后呢,我这儿还有类叫肢体很恐怖是吧。很恐怖啊。人和之之间的关系要注意啊,一个人有四肢吧,有四肢。那这样的话。我们呢,还是最基本的这个关系啊,只不过我们要做一些更改,人要是没了这个四肢是不是随着就没了,这个四肢是不能传到别人身上的吧啊,所以这个是不能换的啊,所以这个关系要比这个刚才句子要强一些啊,打开老规矩,打开哪个找到肢体,找到肢体把勾去掉,应用这样一个勾就没了。
15:12
那这样的话,在这边是整体吧,能找到人啊,人这边打这个勾吧,哎点应用,你看这是空心吧,你再点掰掰了啊,这个时候就变成实心了。YY6实形啊,这OK了。还有。行吧,先OK吧,啊这么着吧,这是人和肢体这种关键合成啊,聚合弱聚合要弱一点啊,合成要强一些,合成这个整体和部分之间关系,整体决定部分的生命周期,这边的话我画一下啊,它的代码怎么写啊。Public class叫什么人吧?嗯,还有一个类叫什么public class什么是这个吧?哎,这是什么关系啊,里边有个什么。集合吧,是不是集合呀,集合啊。
16:06
之对吧。这能看懂吗?行,那这边的话我连上去啊,然后呢,我看一看。来这个连上。来,往这儿连吧。行了,呃,这个我再打开啊,这边有一个什么。这个吧,怎么画点哪个这个知啊是吧,知这边这吧。加上啊应用。这个啊,把它拖一下。然后继续四肢嘛,所以这个人的话,我们这边的关系来找一找人有几个呀,一个人。肢体这块的话有。这个得写零到。加角减四啊。
17:01
现在明白这么一个关系,好把这个复制一下,然后我给它放到这儿,这是一个合成。合成得这样画。依赖关系的话,就是最弱的关系了,这个关系弱的不能再弱了啊,为什么这么说呢?方法结束内存就没了吧。嗯,方法你你想我刚才讲的这个东西,方法结束之后,内存会没会没了吗?不会吧,他们是不是在都在都在堆里边啊成员变量吗。好继续这边呢,我再给一个类,比如说是呃,Tap,然后我在这来一个啊,比如说person,他和person之间的关系啊,哪一个关系这个啊连上去,这是依赖。来好了,这个代码呢,怎么去写呢?其实很简单啊,就是在这呢写一个比如说public class test,然后呢,在这个位置呢,有一个public class什么person,然后呢,我们在这呢有一个public void method的方法,在这个METHOD1方法里边有一个什么。
18:14
啊,这个关系你要记住啊,这个person这个东西挪的位置就不是这个。依赖关系person挪到这个类题里边。它就是什么了,关联。明白我的意思吧,好,来把这个复制一下,咱们给它放到这,这个关系是最弱的好了,那这样的话,类和类之间的六种关系呢,我就描述完了,我们希望大家呢,能够以今天的这个图呢为例,把它死记住啊,以后呢,你还会见很多这样的图,我希望你能见到这个图之后呢,不用问我了啊,直接老师这是什么关系,这个这个看一看来实线的空心箭头,这叫放哈空,呃,这个虚线的空心箭头,这叫实线,然后这个实线箭头叫关联,然后呢,实线这块还有个空心菱形,这叫整体和部分的聚合啊,如果是实心的话叫什么?
19:00
合层啊是虚线箭头,就是依赖行了,把这个注意一下,行,这个就说到这了啊,这个我也先关了啊,Rose工具先关掉了,不保存了啊,已经给大家保存到这个文档上了,下一周看一看就行了,行,咱们这节课先到这啊,下节课咱们再继续吧,啊所。
我来说两句