打開UML類圖的正確姿式

UML(Unified Modeling Language) 統一建模語言,又稱標準建模語言。是用來對軟件密集系統進行可視化建模的一種語言。UML的定義包括UML語義和UML表示法兩個元素。UML是在開發階段,說明、可視化、構建和書寫一個面向對象軟件密集系統的製品的開放方法。最佳的應用是工程實踐,對大規模,複雜系統進行建模方面,特別是在軟件架構層次,已經被驗證有效。統一建模語言(UML)是一種模型化語言。模型大多以圖表的方式表現出來。一份典型的建模圖表一般包含幾個塊或框,鏈接線和做爲模型附加信息之用的文本。這些雖簡單卻很是重要,在UML規則中相互聯繫和擴展。以上內容來自百度百科。算法

推薦一個繪圖和學習的在線工具ProcessOn設計模式

UML類圖,屬於UML圖中的一種,是在面嚮對象語言用中用來表示一個類的圖形,基本的UML類圖以下所示:數組

類簡單表示:

如上圖,就表示一個類,三個格子從上至下分別表示:微信

  • 類名(若是是接口,就使用斜體表示)架構

  • 類的特性(通常是類的字段和屬性,可沒有這一行)app

  • 類的操做(通常是類的方法或行爲)ide

它們前邊的符號有如下幾類:工具

「+」表示public,「-」表示private,「#」表示protected學習

即最上邊的UML類圖表示代碼以下:flex

     
       
     
     
      
      
               
      
      



public class Student { private String name; private String sex; private int age; public void study() { System.out.println("study"); } protected void sleep() { System.out.println("sleep"); } public void eat() { System.out.println("eat"); }//get 和set方法和這個類的屬性無關}

類的關係表示:

01
繼承關係(空心三角形加實線表示)
 
     
       
     
     
      
      
               
      
      

public class SeniorSchool extends Student { public void graduate() { System.out.println("畢業"); } public void cllegeEntranceExam() { System.out.println("高考"); }}


02
實現接口(空心三角形加虛線表示) 


  • 讓高三學再實現玩這個接口

     
       
     
     
      
      
               
      
      
public interface Play { void play();}
     
       
     
     
      
      
               
      
      


public class SeniorSchool extends Student implements Play { public void graduate() { System.out.println("畢業"); } public void cllegeEntranceExam() { System.out.println("高考"); }//實現接口方法 @Override public void play() { System.out.println("高三學生玩"); }}


03
依賴關係(用虛線箭頭表示)

所謂依賴關係,就是構造這個類的時候,能夠依賴其餘的類。好比:人類依賴水和空氣,學生也是人類,表示以下:

  • Student有一個構造方法以下:

     
       
     
     
      
      
               
      
      

/** * Student的一個構造方法 * 依賴於Air 和 Water * * @param air * @param water */ public Student(Air air, Water water) { }


04
關聯關係(使用實線箭頭表示)

所謂關聯關係,其實就是這個類有一個屬性是其餘類,以下圖和代碼。

  • 宿舍類

     
       
     
     
      
      
               
      
      
public class Dormitory { private String num;}
  • 高一學生類

     
       
     
     
      
      
               
      
      

public class PrimaryStudent extends Student { private Dormitory dormitory;}

注意它和依賴關係的區別,有不少小夥伴很容易理解爲這纔是依賴關係

05
聚合關係(使用空心菱形和實線箭頭表示)

 直接看代碼,一目瞭然,學校中有不少學生就是一個聚合關係。說這個學校多是有些難以被接受,若是是用學生羣來表示可能會更容易理解

     
       
     
     
      
      
               
      
      
public class School { private Student[] students;}


06
合成(組合)關係
(用實心菱形和實線箭頭表示)

  • 它表示的是一種強‘擁有’關係,和以前的依賴與關聯有很大的類似,就好比Stuent類中的這個name,sex,age屬性,它就是一種組合關係,它們是一個Student類的組成,由於在初始化一個Student對象時,這三個就必須有。雖然這三個的類型是一個基本類型,若是是一個類的話就更好理解了,可是「萬物皆對象」,也是能夠勉強理解的。

  • 爲了更好的理解,咱們就給Student這個類一個組合關係的Book類。

     
       
     
     
      
      
               
      
      

public class Student { private Book book; public Student(Book book) { this.book = book; }}

最後再貼上整個圖:

Java學習

設計模式

數組結構算法

小魚與Java


本文分享自微信公衆號 - 小魚與Java(Fish_Java)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索