学习UML1--OOP与类关系

学习UML首先要了解面向对象的主要特征以及对象之间的关系。

  • OOP(面向对象)主要特征:

    • 抽象:强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节。
    • 封装:隐藏数据和实现,提供公共的方法供用户调用。
    • 继承:继承是指一个对象直接使用另一对象的属性和方法


      image.png
    • 多态:接口的多种不同的实现方式即为多态。也可以理解为同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
  • 类之间的关系:

    • 继承:子类自动共享父类数据结构和方法的机制。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。


      image.png
    • 实现(Realization):是一种类与接口的关系,表示类是接口所有特征和行为的实现.


      image.png

      实现与继承统称为泛化关系(Generalization)

    • 关联(Association):对于两个相对独立的对象,当一个对象与另一个对象有种某种对应关系,这两个对象之间为关联关系。


      image.png
    • 聚合(Aggregation):聚合关系是关联关系的一种,是强的关联关系,聚合是关联关系的一种,耦合度比关联关系强,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是平等关系,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。


      image.png
    • 组合(Composition):组合关系是关联关系的一种,是比聚合关系还要强的关系,类和类之间的关系是“整体-部分”的关系,整体和部分具有相同的生命周期,部分不能脱离整体而独立存在。


      image.png
    • 依赖(Dependency):是一种使用的关系,即一个类的实现需要另一个类的协助.


      image.png
    • 各种关系的强弱顺序:
       泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
    • 还有一些概念,内聚与耦合:
      内聚:指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
      所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。
      耦合:一个软件结构内不同模块之间互连程度的度量。
      对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。

下面这张UML图,比较形象地展示了各种类图关系:

image.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。