工作时培训的时候公司同事讲过UML,当时没怎么听,后在在看相关技术书籍的时候,发现用到还不少,于是恶补了些。UML体系庞杂,非十天半月可以掌握,但是作为简单的工具使用,去看清楚系统的内在逻辑还是可以速成的。(非设计系统),股票市场是一场拼图游戏,而UML也可以作为拼图工具去参与面向对象体系软件设计的!
废话不多说,进入正题。
先介绍几款画UML的工具,三大知名VISIO,RationalRose,PowerDesign不多说,个人喜欢用开源的,一是免费,二是通常体积较小,运行起来比较快。我用的是astah...下载地址:http://astah.net/download#community 。
类与类之间的关系如图:
关联是实线箭头,依赖是虚线箭头,继承是实线大箭头,实现是虚线大箭头。
一 ,关联关系
关联关系就是一个类的对象作为另一个类的成员变量出现。
1 单向关联
public class Menu { private Button loginButton; } public class Button{ .... }
老是记不住谁指向谁?为了方便记忆,就记成:我有你我就指向你。
2双向关联
public class Customer { private Product[] products; } public class Product { private Customer customer; }
3 自关联
自关联主要在数据结构中庸的多,构成链表节点的关键就在于自关联,可以说整个Java数据结构和‘链‘相关的都是自关联。
public class Node<T> { //单链表结点类 public T data; //数据域,保存数据元素 public Node<T> next; }
4 多重关联
public class Form { private Button[] button; } public class Button { .... }
一个button只能出现在一个Form中,而一个Form可以有多个或者0个Button。
5 聚合关系
在聚合关系中,通常表示整体与部分的关系。因为这样,所以成员变量通常作为构造方法,Setter,Getter或者业务方法注入到整体对象中。我的生命(整体)里有你的出现(部分)才是完美的!!!
public class Car { private Engine engine; private String carName; public Engine getEngine() { return engine; } //设值注入 public void setEngine(Engine engine) { this.engine = engine; } public String getCarName() { return carName; } public void setCarName(String carName) { this.carName = carName; } //构造注入 public Car(Engine engine, String carName) { super(); this.engine = engine; this.carName = carName; } } public class Engine { ... }
6 组合关系
描述整体与部分的关系,组合关系中整体可以控制部分的生命周期,一旦整体不存在,部分也将不存在。具有同生共死的关系。
public class Head{ private Mouth mouth; public Head(){ mouth = new Mouth(); } } public class Mouth{ ... }
二 ,依赖关系
依赖关系很好理解,通常体现三种方式:
1 在某个类中的方法使用了另一个类中的对象作为方法参数。
2 在某个类中的方法使用了另一个类中的对象作为局部变量。
3 在某个类中的方法调用了另一个类的静态方法。
public class Driver{ public void drive(Car car){ car.move(); } } public class Car{ public void move(); }
总的来说,关联关系一个类中必须要有另一个类作为成员变量。而依赖关系则不需要。
三 ,泛化关系(继承关系)
泛化很简单就是继承。
继承的UML表示:
例子就不举了。人,大人,小孩。 学生,小学生,初中生,高中生.....
四,接口实现关系
接口的uml就是把继承的实现箭头改成了虚线。
基本的掌握了以上类图模式,就可以入类图如无人之地。酣畅淋漓,岂不快哉!!!
参考书籍《设计模式的艺术--软件开发人员内功修炼之道》,这本书很不错,讲得很清晰。
何时才能仗剑行天涯!!!
本文出自 “我的博客” 博客,请务必保留此出处http://thinklili.blog.51cto.com/10867130/1762221
原文地址:http://thinklili.blog.51cto.com/10867130/1762221