1. 程式人生 > >手把手教你使用start uml畫類圖

手把手教你使用start uml畫類圖

在畫類圖之前,首先得了解類與類之間的關係,剛開始也是知道類與類之間就是繼承啊,什麼聚合 關聯,自關聯等,都不太懂,其實也不是不懂,是平時不知道這些名詞,但我們在寫程式碼中無時無刻在使用到了,如果是面試,肯定要被面試官鄙視了,哈哈,現在就類與類之間的關係大致分為如下幾種

1:依賴(Dependency)

2:泛化(Generalization)

3:實現(Realization)

4:關聯(Association)

5:聚合(aggregation)

6:組合(combination)

現在一一對這6個進行概念性的分析並利用類圖去展示

A:依賴

類一方的改動將引起另一方的變動。這是一種典型的臨時關係,代表了類之間的一種短暫的互動。依賴關係在 Java 語言中體現為區域性變數、方法的引數或者對靜態方法的呼叫


程式碼體現:

Person.java

public class Person {
      public String getContent(String name){
     String result = "您的名字是";
     if(name!=null&&!"".equals(name)){
     return result+name;
     }
return "";
      }
}

Test.java

public class Test {
public static void main(String[] args) {
Person p = new Person();
String name = p.getContent("狗");
System.out.println(name);
}
}

類圖表示:


也就是說在Test類中獲取到Person物件後 你要去呼叫getContent()方法並且這個方法必須要傳遞一個引數,不傳遞就報錯,並且這個方法中還依賴了一個區域性變數,所以說Test類是依賴Perosn類,否則無法執行!

B:泛化

泛化定義了一般元素和特殊元素之間的分類關係,如果從面向物件程式設計語言的角度來說,類與類之間的泛化關係就是平常所說的類之間的繼承關係。如人與男人和女人的關係,比如人有眼睛  年齡  名字,那麼男人和女人都是有這些屬性的,所以不必去重新定義這些屬性,只要繼承Person類就相當於有了這些資料,

程式碼體現:

public class Animal {
public int age;//動物年齡
public String sex ;//性別

public void call(){
System.out.println("動物叫");
}
public void eat(){
System.out.println("動物吃");
}
}

Dog.java

public class Dog extends Animal {

}

Cat.java

public class Cat extends Animal {
    
}

測試類Test

public class Test {
public static void main(String[] args) {
Dog dog = new Dog();
dog.call();
Cat cat = new Cat();
cat.eat();
}
}

uml圖如下:


C:實現

實現是一種類與介面的關係, 表示類是介面所有特徵和行為的實現,一般都是幾個類的行為都有共性,或者約定的一般定義一個介面,子子類去實現

程式碼體現:

HttpBase.java

public interface HttpBase {
public void get();
public void post();
}

HttpClientGet.java

public class HttpClientGet implements HttpBase {
@Override
public void get() {


}
@Override
public void post() {


}
}

HttpClientPost.java

public class HttpClientPost implements HttpBase {
@Override
public void get() {


}
@Override
public void post() {


}
}

類圖如下:


D:關聯

關聯關係是類與類之間的聯結,它使一個類知道另一個類的屬性和方法 ,關聯可以是雙向的,也可以是單向的。雙向的關聯可以有兩個箭頭或者沒有箭頭,單向的關聯有一個箭頭。在 Java 中,關聯關係是通過使用成員變數來實現的。 如人與車

關聯有單向關聯和雙向關聯

單向關聯:就是自己的類中有引入自己的類引用變數,這個單例模式就是一個很好的例子

雙向關聯:就是一個類中的成員變數有一個有另一個類的引用,所以才可以獲取到另一個類的方法

程式碼體現:

A.java

public class A {
     String name;
     int age;
     B b;
     public void print(){
    System.out.println("我是A中的方法");
    b.back();
     }
public void setB(B b) {
this.b = b;
}
}

B.java

public class B {
public void back(){
System.out.println("誰呼叫了我 哈哈");
}
}

Test.java

public class Test {
public static void main(String[] args) {
A a = new A();
a.setB(new B());
a.print();
}
}

類圖:


E:聚合