两者的关系:对象图可以看做是类图的实例,用来表达各个对象在某一时刻的状态。
两者的异同:主要表现为两者建模元素的异同(下面有对比说明)。
![](https://i-blog.csdnimg.cn/blog_migrate/b183eb03a1a6bcd9a0bd87f5a413ecce.png)
![](https://pic4.zhimg.com/50/v2-9f5b4531415c906cbbbeab9a2e956621_hd.jpg?source=1940ef5c)
01 类图和对象图的关系
这就要从两者的概念入手了:
类图:用于描述系统中所包含的类以及它们之间的相互关系。
对象图:用于描述某一时刻的一组对象及它们之间的关系。
两个概念拎出来一对比,差别就很明显了,在于后者多了“某一时刻”。
因此,对象图可以视作类图的实例,用来表达各个对象在某一时刻的状态。
对象图中的建模元素主要有对象和链,对象是类的实例,链是类之间的关联关系的实例。
02 类图和对象图的异同
就像前面已经提到的,两者的异同主要表现为建模元素的异同。
下面就从两者的建模元素说起:
![](https://i-blog.csdnimg.cn/blog_migrate/978b27d1dc341b3024555756febb821e.png)
![](https://i-blog.csdnimg.cn/blog_migrate/e6e390c7e103265b93c543f76d372f99.png)
1)类具有3个分栏,自上而下依次为名称、属性和操作;对象只有两个分栏,自上而下依次为名称、属性
2)在类的名称分栏中只有类名;对象的名称形式为“对象名:类名”,匿名对象的名称形式为“:类名”;
3)类的属性分栏定义了所有属性的特征;对象则只定义了属性的当前值,以便用于测试用例或例子中;
4)类中列出了操作;对象图中不包括操作,因为对于同属于同一个类的对象而言,其操作是相同的;
5)类使用关联连接,关联使用名称、角色、多重性以及约束等特征定义。类代表的是对对象的分类所以必须说明可以参与关联的对象的数目;对象使用链连接、链拥有名称、角色,但是没有多重性。对象代表的是单独的实体,所有的链都是一对一的,因此不涉及到多重。