00:00
我们把内图的这几个关系。给他做一个小结,我们讲这个类类图的关系的时候,首先讲的是依赖关系,对吧。那依赖关系我们是怎么来讲解的呢?首先我们对依赖关系做了一些说明。从概念上进行一个梳理。对吧,我们首先说的是只要类中用到了对方,那么他们就存在了依赖的关系,是这样讲的,对吧。然后呢,我们这有一段代码,通过这段代码呢,我们又画了一个类图来说明他们之间的关系,这做了一个小结。那这个依赖关系他们可能是怎么样形成的呢?可能是它是类的一个成员属性。对吧,某个类是另另外一个类的,呃,成员属性当然是说的他的一个对象了,他也可能是方法的一个返回类型,也可能是方法接收的一个参数类型。
01:03
对,也有可能是在方法中使用到了。方法中使用到。对吧,那这上面这一段代码,它对应的类图是什么样子的呢?写到这对应类图对应的类图。对应对图呢,我们同样给他一个小的箭头,这有一个小节给他一个箭头,对应的对图就是在eclipse里面画的,哪画的呢。是依赖对在这画的是吧,诶就是这个图。就说我们这一个person service病呢,它用到了另外十个类。就依赖。好,这是我们说依赖这样讲的,讲完依赖过后呢,我们有给他讲了依赖的一个特例,叫做泛化,泛化就是我们平常所说的继承。那这个泛化关系我们是怎么说呢?同样我们也是先说了它的一个概念,做了一个小结,最后画了一个类图。
02:02
把这个代码整理一下。我们首先说泛化关系,实际上就是依赖关系,而且也要明明确一点,它是依赖关系的一种特例。这个没问题对吧,然后呢,这有一段代码,这段代码完了过呢,这有一个对应的类图。对应的类图。好,我们把内图呢,待会儿放到这儿。同样,我们也做了一个小结,叫做小结。其实我们所说的泛化,主要就是说就是这个继承啊,只要是继承我们就认为是个泛化关系。那这里有一个类图是怎么画的呢?大家看是在这儿画的。对吧,就是到support。被service person service并继承。那么他们之间就构成了一个泛化的关系。把这个图呢跟大家截到这儿来。OK。讲完这个泛化关系过后呢,我们又为大家讲解了时间关系,时间关系就是我们所说的A类实现了一个B,那这个叫接口啊,B接口。
03:10
接口,它实现了这个B这个接口。OK,那么它也是依赖关系的一种特例。这边也画了一个类图,做了一个小结。好,我们把这个时间关系给大家整理一下。老师在整理的时候呢,就是把这个思路再跟大家梳理一下,达到呃一个清晰清晰的效果,就是什么呢?A类实现了B的接口。它也是依赖关系的一种特例。好,这个内存呢,我们就直接从这拿过来就可以了,哪里。是不是就在这儿啊?在这。这样我们用的是哪一个线条来表示它的实线呢?用的是这这个一个空心的三角形虚线表示的。放这就可以了,紧接着我们继续往下看。
04:03
把这个时间关系讲完了,我们就说类的,类与类之间的另外一种关系叫关联关系,那关联关系呢,它也是依赖关系的一种特例,这一点大家要清晰。我们往下走。看一下。这块呢,我们就简单一点哈,把这个图截过来就行了,因为这里面代码较多,我们这先强调一下,这样子的关联关系,其实就是类与类之间的联系,它是依赖关系的一种特例。那么关联关系呢?它具有这个导航性,就是谁关联谁的问题。对,你比如说同学们看到这有个person类,这个person类里面呢,它使用到ID card,但是ID card里面没有用到它,那就我们认为是单向的一对一。那反过来,如果ID card里面他又也用到了person这么一个对象,所以那么就是双向的,就说你中你用到我,我也用到你,就双向的,所以说我们这个关联关系呢,它是具有导航性,还有一个多重性的问题。
05:05
什么叫多重性呢?比如说person person ID这里面person里面只有一个ID,这样的实例就是一对一,那假如这个地方我们说一个人可以有多个身份证件,他可能这边就是个集合,就是list。啊,可能是个集合,那这样子呢,就构成一对多的关系,但也可能是多对多了,比如这个A类和B类之间可能是多对多的关系,有没有呢?也有可能比如说学生跟老师。比如说这个A是学生,是student,这边是老师,一个学生可以有多个老师,对吧?我可以有语文老师,数学老师,反过来一个老师可不可以有多个学生呢?也可以。好,所以说这边还有可能是多对多的关系,我这里就没话了,明白。好,这是关联关系,给大家画到这儿。好的。那关联关系说完了以后呢,我们紧接着又往下面继续来讲解聚合关系,首先聚合关系它是什么呢?各位,它其实是。
06:03
这一个,呃,关联关系的一种特例,它表示的是什么?整体跟部分的关系,好,我先把这块拿过来。先把这个拿过来好吧,这是它的一个介绍啊,基本的介绍。接着我用这个来描述聚合关系。聚合关系,它是整体跟部分的关系,而且呢,它整体跟部分是可以分开的,我们才称之为聚合。它是关联关系的一种特例。既然是关联关系,那肯定也有导航性和多重性的问题,对吧,因为我用到你嘛。OK,那这边我又我们有一个案例来说明应用实例。应用实例。好,这个地方我们干脆,呃用这个标题三,好吧,用标题诶标题三。标题三这边也一样,应用实例用标题换一个标题三,那应用实例是怎么讲的呢?同学们看我们的代码呢,是在这个位置。
07:03
啊,这这边因为这边就没有这个代码了,我我把这个拿过来吧,好吧,刚好这有一个截图拿过来比较好,那这边对应的类图是什么样子的呢?类图是在哪里讲的呀,是在这儿聚合对不对。聚合就说我们这个。Computer里面聚合了mouse鼠标和monitor,就是我们的这一个显示器。好,他们就存在这么一个关系,就画在一起吧。放小点,放到一行。这样好看对不对,放的好看。好,然后聚合关系讲完了过后呢,我们又给大家讲了,就是另外一个,另另外一个关系叫什么呢?叫做组合关系。那组合它是一个什么样的关系,那这样子的。组合关系,它也是整体跟部分的关系,但是整体和部分不可以分开了。最经典的案例就是下面这个案例,Person里面有一个头,我们人有头,人和头的关系是一种什么呀?组合的关系,人和ID就是我们身份证是一个聚合的关系,身份证丢了我们可以补,但是人的头丢了,那那那就不是一个人了。
08:15
是吧,所以说这个小这个小案例呢,把这个说的很好,还有一种就是他虽然没有直接溜出来,但是他在删除或者是创建的时候,它是级联的,那这样子呢,也可能构成一种就是我们所说的组合关系。好的,我把这个呢放到这来。好,这是基本的一个介绍,基本介绍。对吧,好,这边我们说了两点对吧,一个是这这。然后这边有个应用案例,应用案例来把这个再说了一遍,应用案例呢,我们是举的这样一个案例,这有源码。是不是?啊,这有源码,把源码拿过来。我们把源码放在一个表格里边,好吧,那对应的类图呢,对应的类图。
09:03
好,类图对应的类图我们在eclipse里面其实是画过的,在哪里呢?在这。是吧,在这个地方画的person。看这。如果是这个图标,你们看这个图标表示就是。组合的关系,这个就是聚合的关系,主要是看。这这个菱形是实心的还是空心的,如果是实心的就是组合,如果是空心的呢,就是聚合。OK,把代码放这就可以了。好,除了这一,除了这个小案例,是不是我们这儿还有一个案例就是呃,Computer一个升级版,如果这种关系呢,我们也称之为一个聚合,好吧,我把这个案例呢,也给同学们放到这儿,还有一个案例,案例二。案例二,一起放吧。案例二,好,这块地方我就直接放一个表格就完事了,好吧。案例二,那这边呢,我们有两个类,是不是一个是Mo?一个是Mo。
10:01
好,放这吧,还有一个类。还有一个类,就是我们的monitor。Monitor。那这个地方同学们看到它是六出来的,这地方要强调它上来过,这个属性呢,直接六了,所以这个时候那就不可分割了,对吧,我们认为是不可不能分离,那对应的类图呢,我也画到这对应的类图。对应的类图。好,如果是这样子子的话,它对应的类图呢,就是两个均为组合。所以说它就。呃,我们看这是。哦,这个地方我没有,我没有去改是吧。我没去改。因为因为这个,诶,我看看地方是什么,这直接溜了一个溜了一个,那你为什么这没改呢,那就不对。好,那这么这个这个图形我们要改一下了,因为你现在如果按照这种方式,按照这个地方的computer,他们就应该是一个什么样聚合的关系,那把这个图标换一下就行了。
11:00
对,因为现在呢,它是组合,那你就不能用空心的菱形来表示它们的关系了,要换成实心的菱形理解啊,当然这个是针对这一个composition这个案例来说的,如果是上面的computer,那它仍然是聚合,好吧。我把这个呢画到这儿来。没问题,同学们放好。就是针对这个题呢,我们对应的类图应该是这样子,好同学们,那关于我们就是。关于类图的类与类,类图的这个如何去画,如何根据它的一个关系去用不同的符号表示他们的关系,我们就说到这里,总结一下,其实就是六大关系。依赖。泛化,实现关联聚合、组合。对不对,那么而且大家一定要知道,泛化和以泛化和实现是。是这一个依赖的特例,关联也是依赖的特性特例,那么组合和聚合呢?它是关联的特例。
12:05
那说说到底,其实我们所说的六种关系,其实我们最终都可以归结到一种,是哪一种呢?就是依赖。只是根据他们实际的情况不同呢,我们又把它细分成了另外五种。是不是这个道理,OK,好,那关于类图的一个讲解和它的整理呢,我们就给大家介绍到这里,希望大家能够真真正的把这个类图把它搞明白,因为后面我们讲设计模式的时候,会反复的用到这个类图的相关知识,OK,这讲就到这里。
我来说两句