1. 图
2. Use Case Diagram
a) 作用:抽象系统的功能。
b) 继承(范化)关系:用于表示相同接口,不同实现
i. 图:
ii. 代码:
public interface Customer{
public void buy();
}
public class RetailCustomer implements Customer{
private Shopping s;
public RetailCustomer(RetailShopping rs){
this.s = rs;
}
public void buy(){
s.buy();
}
}
public class WholesaleCustomer implements Customer{
private Shopping s;
public WholesaleCustomer(WholesaleShopping ws){
this.s = ws;
}
pulbic void buy(){
s.buy();
}
}
public interface Shopping{
public void buy();
}
public class RetailShopping implements Shopping{
public void buy(){
do some thing
}
}
public class WholesaleShopping implements Shopping{
public void buy(){
do another thing
}
}
c) 扩展关系:扩展的用例(计算积分),不一定需要执行。
i. 图:
ii. 代码:
public class Customer{
private Shoppping s;
public void buy(){
s.buy();
}
}
public class Integral{
public void countIntegral(){
…
}
}
public class Shopping{
private Integral i;
public void buy(){
do some thing
if(…)
i.countIntegral();
continue do some thing
}
}
d) 包含关系:包含的用例(收款),必须执行。
i. 图:
ii. 代码:
public clas Pain{
public void pain(){
…
}
}
public class RetailShopping implements Shopping{
private Pain p;
public void buy(){
…
p.pain();
…
}
}
public class WholesaleShopping implements Shopping{
private Pain p;
public void buy(){
…
p.pain();
…
}
}
3. Class Diagram
a) 作用:可用来描述系统中各种物件的形态,也可描述出系统中类与类之间的关系。
b) 接口:
i. 图:
ii. 代码:
public interface ITest{
public void doThing();
}
c) 类:
i. 图:
ii. 代码:
public class Test {
private String name;
public void doThing() {…}
}
d) 类实现接口:
i. 图:
ii. 代码:
public class Test implements ITest{…}
e) 类扩展类:
i. 图:
ii. 代码:
public class SubTest extends Test{…}
f) 类引用其他类:
i. 图:
ii. 代码:
public class Test{
private Other other;
…
}
g) 类多值引用其他类:
i. 图:
ii. 代码:
public class Test{
private Vector<Other> other;
…
}
4. Sequence Diagram
a) 作用:用来反映若干个对象之间的动态协作关系。适合于描述对象之间时间上的交互。可用于对对象间的职责进行分派。
b) A调用自身的方法:
i. 图:
ii. 代码:
public class A{
public void methodA1(){
methodA2();
}
public void methodA2(){…}
}
c) A调用B的功能方法:
i. 图:
ii. 代码:
public class A{
private B b;
public void methodA1(){
b.methodB1();
}
}
d) A调用B的获取方法:
i. 图:
ii. 代码:
public class A{
private B b;
public void methodA1(){
C c = b.methodB2();
}
}
public class B{
public C methodB2(){
return new C();
}
}
5. State Machine Diagram
a) 作用:是对类所描述事物的补充说明,他显示了类的所有对象可能具有的状态,以及引起状态变化的事件。除此以外,我们也能够使用状态机图来描述一个负责的方法的内部实现和跳转。状态机图比较适合于描述单个类内部的复杂行为,而不适合于描述交互行为。
b) 描述一次html请求
i. 图:
ii. 代码:
public void doPost(…,…){
提取参数;
boolean result = handleParameter();
Page page;
if(result)
page = generatePage();
else
page = generateErrorPage();
writer.write(page);
}
6. Activity Diagram
a) 作用:用于描述对象间的交互,但侧重于工作的描述,侧重于描述工作的流程,而不是工作的分派。比较善于描述并发的情形。
b) 描述并行任务处理:
i. 图:
ii. 代码:
public void handleTask(Task t){
SubTask[] sub = deviedeTask(t);
for(SubTask st:sub)
new Thread(st).start();
}
c) 描述银行取款
i. 图:
ii. 代码:
public void pickMoney(){
while(queue != EMPTY){
…
}
getMoney();
}
7. 小结:
图 | 作用 |
用例图 | 描述系统的功能需求 |
类图 | 描述类的属性和操作 |
顺序图 | 描述类之间的交互 |
状态机图 | 描述类单个类的内部状态变化 |
活动图 | 用于描述功能的执行流程 |
当实现一个系统时,我们应从用例图入手,分析系统所应该具有的功能接口。然后再使用活动图,研究功能的实现流程。再使用顺序图来进行功能分派,把职责分到类当中,再使用类图,勾勒出某个类,在完成某一特定功能时,所应该具有的方法和属性,最后使用状态机图,对功能的实现进行细化。最后进行编码。