最近看了下设计模式,其中无可避免会设计不少类图,UML类图对于学习设计模式很重要,关于设计模式,我也会在这里写上一写,这一篇关于UML类图的就先当个铺垫。html
1.先上一个简单的类图来简单说明下:设计模式
1).其中MyClass表明的是类名。学习
2).name,gender和age分别表明成员变量,其中+表明public,#表明product,-表明private,冒号后面的String标示的都是成员变量的类型。url
3).getAge和setAge表明的是方法,前面的+跟成员变量标示的意义同样标示public,其中setAge中的String标示接收一个String类型的参数,冒号后面的表明的是返回值。spa
2.类与类之间的关系.net
类与类之间的关系分为,关联关系,聚合关系,组合关系,依赖关系和泛化关系,下面分别说下设计
1).关联关系:两个相对独立的对象,当一个对象的实例与另一个对象的特定实例存在固定关系时,这两个对象之间就存在关联关系。关联关系又分为单向关联,双向关联,自身关联和多维关联。3d
单关联,写IO相关类时候都写过相似于这样的代码 new BufferInputStream(new FileInputStream("d:\\my.txt"));code
其中BufferInputStream类持有一个FileInputStream的引用,经过构造方法传入的,这样就是一个单关联htm
双关联,举个简单的例子,咱们都当过学生,咱们都有不少老师,一样一个老师也有不少学生,类图以下
代码以下:
public class Teacher { private final static List<Student> students = new ArrayList<Student>(); public void putStudent(Student student) { students.add(student); } } public class Student { private final static List<Teacher> teachers= new ArrayList<Teacher>(); public void putTeacher(Teacher teacher){ teachers.add(teacher); } }
自关联,说实话没想起什么好的例子,能够拿单例看下
多维关联,例如一个页面能够有多个文本框,但一个文本框只能在一个页面下
2).聚合关系:聚合关联是一种特殊的关联. 它表示类间的关系是总体与部分的关系. 简言之: 关联关系中的一个类描述了一个较大的事物, 它由较小的事物组成.
好比一个软件工程专业有不少课程组成,其中Java这个课程从这个专业拿掉,这个专业仍是软件工程,而Java仍是能够单独存在的。
3).组合关系:整件拥有部件的生命周期, 因此整件删除时, 部件必定会跟着删除. 并且, 多个整件不能够同时共享同一个部件。
说我的的例子吧,人由不少部分组成,其中一部分是骨骼,若是人没了,那其实骨骼也就没生命力了,骨骼不可能脱离人这个总体而单独存在。
4).依赖关系:表示一个事物的使用须要另一个事物的行为,就像老司机开车,除了老司机类的开车方法里须要调用车的移动方法。
5).泛化关系:这就是一种继承关系,它表明父类和子类之间的关系。
其实还有一种就是接口的实现关系
好了这个UML类图就简单到这,画的很差,并且风格不统一(家里的版本和公司的不同啊!),这个类图看的清楚对设计模式的学习很重要!就酱!
参考:
http://blog.csdn.net/column/details/umlmodelingtechnolog.html