UML类图的总结和思考

UML类图的学习

         UML类图简介:

         UML类图描述的是软件工程中类与类之间的关系,类图一般由三行表示,第一行是类名,第二行是属性,第三行是方法与特性,属性和方法前可以用三种符号”+”、”#”、”-”分别表示public、protected、private。

         UML类图设计分析:

一般在系统分析与设计阶段,类通常可以分为三种,分别是实体类、控制类和边界类。

实体类:对应系统需求中的每个实体,它们通常保存在永久存储体中,一般使用数据库表或文件来记录,实体类既包括存储和传递数据的类,还包括操作数据的类;2)控制类:控制类用于体现应用程序的执行逻辑,提供相应的业务操作,将控制类抽象出来可以降低界面和数据库之间的耦合度。3)边界类:用于对外部用户与系统之间的交互对象进行抽象,主要包括界面类、窗口、菜单等。

在类图中,类之间的关系可以分为6种,划分的依据是类之间联系的强弱。

首先是泛化关系,这是一种继承关系,表示一般与特殊,指定了类如何特化父类的特征与行为;

接口关系是一种实现的关系,接口关系也可以有类之间关系类似的继承关系和依赖关系,但是更多的是接口与类之间的实现关系,类是接口所有特征与行为的实现;

关联关系是类与类之间最常用的关系,它是一种拥有关系,用于表示一类对象与另一类对象之间有联系,使得一个类知道另一个类的属性和方法,在C++、JAVA等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量,在UML中,关联关系又包含几种形式:

1)双向关联:顾客购买商品并拥有商品,同时卖出的商品也与某一个顾客相关联;

2)单向关联:每一个学生都拥有有一个家,但是并不是每一个家都会有学生;此时学生类知道家这个类,但反过来不成立;

3)自关联:在系统中可能存在一些类的属性对象类型是该类本身;

4)多重性关联:表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直接在关联直线上用一个数字或数字范围表示。常见的多重性表示方式有:

a):1..1:表示另一个类的一个对象只与该类的一个对象有关;

b):0..*:表示另一个类的一个对象与该类的0个或者多个对象有关;

c):1..*:表示另一个类的一个对象与该类的1个或者多个对象有关;

d):0..1:表示另一个类的一个对象与该类的0个或者1个对象有关;

e):m..n:表示另一个类的一个对象最少与该类的m个对象有关,最多n个对象有关;

聚合关系:表示为整体与部分的关系,且部分可以离开整体而单独存在,在代码实现中,成员对象通常作为构造方法、某些业务方法的参数注入到整体对象中;

组合关系:也是表示整体与部分的关系,但是部分不能够离开整体单独存在,在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也不存在,在代码实现中,通常在整体类的构造方法中直接实例化成员类;

依赖关系:是一种使用的关系,即一个类的实现需要另一个类的协助,特定十五的改变有可能影响到使用到该类的其他事物,因此尽量不使用双向的互相依赖。而在代码实现中通常有三种方式来实现:

       1):将一个类的对象作为另一个类中方法的参数;

       2):在一个类的方法中将另一个类作为其局部变量;

       3):在一个类的方法中调用另一个类的静态方法;

比较类图之间的差异:

依赖关系与关联关系的区别:

  1. 从类的属性是否增加:

1):依赖关系的两个类都不会增加属性,其中一个类作为另一个类的方法的参数或者返回值,或者某个方法的变量;

2):关联关系,其中一个类称为另一个类的属性,相比于依赖关系,关联关系的两个类联系更加紧密,更加长久。

2.关系的生命周期:

       1):   依赖关系是仅当类的方法被调用时产生,伴随方法的结束而结束;

       2):关联关系是当类实例化时产生,当类销毁时关系结束,关联关系生存期更长。

聚合关系与组合关系的区别:

  1. 构造函数的不同:

1):聚合类的构造函数中包含了另一个类作为参数;

2):组合类的构造函数中包含了另一个类的实例化;

2.    信息封装不同:

       1):聚合关系,可以同时了解整体对象和单个对象,因为它们独立;

       2):组合关系,可以认识整体类,但是不知道子类的存在,因为子类被封装在整体类中。

猜你喜欢

转载自www.cnblogs.com/aichipaigu/p/11394356.html