类是对象的抽象,对象是类的实例!
类图是显示一组类、接口、协作、以及他们之间关系的图。
类图主要包括7中元素:类、接口、协作、关联关系、依赖关系、泛化关系、实现关系。
类:一组拥有相同属性、操作、方法、关系和行为的对象描述符。类定义了一组有着状态与行为的对象。
类:类名,属性,操作。
类名:简单名,路径名。类名一般用UpperCamelCase,大写字母开头,大小写混合,每个单词首字母大写。
属性:属性名必须,其他的类型、多重性、特性都是可选的。属性名采用lowerCamelCase,小写字母开头,非首单词的首字母大写。
操作:一般是操作名即可,如 getname();
接口(interface):是一个被命名的操作集合,只有操作名,不含有具体的实现。用一个圆圈表示。
类图中关系:
自关联:不代表类的实例与其自身关联,而是类的实例与其他实例有关!
1.关联关系:两个元素之间可访问,传消息,是最松散的关系。
(1)关联名(一般不用)
(2)角色:放在关联端,表示该类在这一关系中担任的角色。如Person类旁边是+Worker,表示Person类在这一关系中担任工人角色,可见性是public。
(3)多重性:格式为"min…max",如0,1,0…1,0…*,等。
(4)导航性:双向关联不加箭头,单向关联由一端指向另一端。
(5)限定符:一个对象连同一个限定符一起,决定一个唯一的关联对象或对象的子集。
(6)关联的约束:两个关联关系之间有约束,两个关联关系的线段用虚线连接起来。如果有方向还可以加箭头。
(7)特殊的关联:聚合与组合:表示整体与部分的关系。指向整体!!!!
聚合:由空心菱形表示!!在聚合关系中部分可以独立于整体,如教室与课桌,教室不存在时,课桌也能单独存在。
组合:强聚合!部分完全依赖整体,不能单独存在,生命周期一致。用实心菱形表示
(8)派生关联
2.泛化关系:(可以用java中的继承来记忆)子类指向父类,子类可以有多个父类。
3.依赖关系:如果X的变化会引起Y的变化,那么Y依赖于X,X叫提供者,Y叫客户。对于类图主要有三种情况用依赖关系:参数类型、局部变量、返回值。
4.实现关系:主要应用于接口与实现该接口的类之间,一个类可以实现多个接口,一个接口也可以被多个类实现。
抽象类:不可实例化的类
关联类:具有关联和类两者的特性,既可以关联类元素也可以拥有属性操作。通过一条虚线连接到关联路径。