UML知识点对比学习

  UML视频看完了,在这个过程中,也记了笔记,画图的时候,才发现有的图符用起来不知道如何抉择,例如include和extend。故决定以此为引,将一些可以对比学习的概念汇总到一起学习,从而起到加深理解的作用。

include与extend 

  先看两张图,结合定义,我认为include与extend二者的区别在于 必须与非必须。include的内在含义是必须拥有,就像下边这张图,一个总的功能需要其他的子功能构成,保持功能的完整性,缺一不可。

UML知识点对比学习_第1张图片
  扩展是 非必须 的,可有可无,但是有的话,可以让我们实现的功能更加贴心和人性化,就像下边的这张图,执行查询操作后,我们能想象出这已经实现了查询功能,令人觉得贴心的是查询出的结果可以导出或打印。锦上添花,就是extend的魅力所在。

UML知识点对比学习_第2张图片 

类图的4种关系

(1)关联

  ——普通关联

  ——组合

  ——聚合

(2)依赖

(3)泛化

(4)实现

组合和聚合

  聚合:整体和部分之间的关系是松耦合,即不存在先有什么后有什么的问题,例如:书架和书没有先后关系。
  组合: 整体和部分之间的关系是紧耦合,即先有什么再有什么,例如先有书后有页码,相对于聚合有很强的附属关系。

UML知识点对比学习_第3张图片

  综上所述:聚合和组合的区别在于生命期的管理:聚合——火车不存在,但是引擎可以独立存在;组合——链表不存在了,节点就不存在了。

依赖和泛化

  依赖:是一种使用关系,类A中的方法或是参数需要用到类B,二者时间就是依赖关系,虚线箭头指向被依赖方。

  泛化:实际上描述的是类和类之间的继承关系。

    ——单重继承:相当于师承一人。
    ——多重继承:相当于有多个师父,例如郭靖,有江南七怪当师傅,也有洪七公,老顽童,一灯大师当师傅。

相关图的比较

>活动图和状态图

  前者侧重从行为的动作描述,后者侧重从行为的结果描述。

>顺序图和协作图

  顺序图,强调消息的时间顺序,通过生命线体现对象间的交互关系(时间顺序)

  协作图,强调参加交互的对象的组织,通过数字标号顺序体现对象间的交互关系(对象关系)

模式和框架的比较

  模式:支持软件结构设计的重用(宽泛) 

  框架:支持细节设计代码的重用(具体)

  形象地说:设计模式就像是房屋中墙壁的装修设计方式,是小单元的架构元素,使用范围更广,与应用的相关性更小;框架就像是房屋。

面向对象和面向过程

  面向对象和面向过程的思维方式不一样,前者从类出发,考虑属性和方法,以及类和类之间的关系;后者从模块出发。

  比如拿学生早上起来的事情来说说这种面向过程吧,粗略的可以将过程拟为:

  (1)起床

  (2)穿衣

  (3)洗脸刷牙

  (4)去学校

  这4步就是一步一步地完成,它的顺序很重要,你只须一个一个地实现就行了。而如果是用面向对象的方法的话,可能就只抽象出一个学生的类,它包括这四个方法,但是具体的顺序就不能体现出来。

UML知识点对比学习_第4张图片

  好了,就总结到这里,对比是一种非常好的加深理解的方式,与实例搭档起来更合适! 

你可能感兴趣的:(include和extend,模式和框架的比较,聚合和组合,依赖和泛化,面向对象和面向过程)