1. 程式人生 > >PowerDesigner 面向物件模型(OOM)說明

PowerDesigner 面向物件模型(OOM)說明

一.     OOM 簡介

Object-OrientedModel(OOM) 面向物件模型,一個OOM包含一系列包,類,介面 , 和他們的關係。 這些物件一起形成所有的 ( 或部份) 一個軟體系統的邏輯的設計檢視的類結構。 一個OOM本質上是軟體系統的一個靜態的概念模型。 

(1)利用UML描述系統結構

(2)利用類圖生成不同語言的原始檔(如Java、C#、PowerBuilder等),或利用逆向工程將不同型別的原始檔轉換成相應的類圖。

1.1 建立OOM

(1)選擇File→New Model選單項

(2)在左側Model type中選擇“Object-Oriented Model”(面向物件模型)

(3)在右側輸入模型名稱,選擇語言

(4)選擇型別

1.2 設計用例圖

(1)定義用例

(2)定義角色

(3)定義關聯

1.3 設計序列圖

(1)定義角色

(2)定義物件

(3)定義訊息

(4)定義啟用期

1.4  設計類圖

(1)定義類

(2)定義屬性

(3)定義識別符號

(4)定義操作

(5)定義介面

(6)建立聯絡

1)  關聯

2)  依賴

3)  泛化

4)  實現

1.5  生成程式碼

(1)選擇Language→Generate Java Code

(2)選擇類

(3)設定生成選項

(4)生成程式碼

(5)檢視生成的程式碼

二.     示例

2.1 建立OOM

File--> new model

 

這裡選擇我們的OOM 型別使用預設的Class Diagram, 語言選擇Java。

2.2  OOM 生成Java 程式碼

通過工具面板建立一個類,如下圖:

 

雙擊類,就可以編輯相關的屬性。

給類新增變數:

 

如果我們想給類新增方法:

 

先寫上方法名稱,以及方法的返回型別,然後點選上圖的第二步,修改該方法的對應屬性:

 

修改方法的內容:


這裡的方法名稱不能修改,在這一步我們只能修改方法對應的程式碼。

如果要給方法新增引數:

 

完成配置之後:

 

現在匯出將我們建立的類導成Java程式碼:

Language--> Generate Java Code.  生成Java 程式碼。

 

生成的程式碼如下:

  1. /*********************************************************************** 
  2.  *Module:  Student.java 
  3.  *Author:  Administrator 
  4.  *Purpose: Defines the Class Student 
  5.  ***********************************************************************/
  6. import java.util.*;  
  7. /** @pdOid4a8af797-2729-419d-9751-2c15a1baef8e */
  8. publicclass Student {  
  9.   /** @pdOid 52d32718-cd89-4b1c-8c46-0f4fa83b0dac */
  10.   privateint id;  
  11.   /** @pdOid 5a14a55f-4d17-41ea-ad64-05a0c4f5c523 */
  12.   private String name;  
  13.   /** @pdOid 46fb39fd-e50e-4166-9cdb-b7ae3bfdd229 */
  14.   privateint sex;  
  15.   /** @pdOid 5e139923-641e-45f0-ba19-773495078f63 */
  16.   private Number phone;  
  17.   /** @pdOid 540722b0-789c-491a-a145-a92226843e0a */
  18.   private String address;  
  19.    /**@param type 
  20.     *@pdOid e610d773-1a41-4f42-b5b7-f932b24fa6ec */
  21.   public String helloWorld(int type) {  
  22.      // TODO: implement
  23.      String str='Hello World!';  
  24.      return str;  
  25.    }  
  26.   /** @pdOid 9108fb19-6b33-4cfa-b629-bd6dc474abd0 */
  27.   publicvoid helloWorld2() {  
  28.   System.out.println("Hello World!");  
  29.    }  
  30. }  

2.3  從Java 類生成OOM

這個是我要匯入的Java 程式碼:

  1. package cn.jsprun.service;  
  2. import java.util.ArrayList;  
  3. import java.util.HashMap;  
  4. import java.util.List;  
  5. import java.util.Locale;  
  6. import java.util.Map;  
  7. import org.apache.struts.util.MessageResources;  
  8. import cn.jsprun.dao.DataBaseDao;  
  9. import cn.jsprun.dao.OnLineListDao;  
  10. import cn.jsprun.domain.Onlinelist;  
  11. import cn.jsprun.domain.OnlinelistId;  
  12. import cn.jsprun.utils.BeanFactory;  
  13. import cn.jsprun.utils.Common;  
  14. import cn.jsprun.vo.otherset.OnlinelistVO;  
  15. publicclass OnLineSetService {  
  16.        privatefinal String tablePrefix = "jrun_";  
  17.        publicList<OnlinelistVO> queryAllSystemUserGroup(MessageResources mr,Localelocale){  
  18.               List<Map<String,String>>usergroupMapList = ((DataBaseDao)BeanFactory.getBean("dataBaseDao")).executeQuery("SELECTu.groupid,u.grouptitle FROM "+tablePrefix+"usergroups AS u WHEREu.type<>'member'");  
  19.               List<Onlinelist>onlinelist_list =((OnLineListDao)BeanFactory.getBean("onLineListDao")).queryAllOnlineList();  
  20.               Map<String,Onlinelist>onlinelistMap = new HashMap<String, Onlinelist>();  
  21.               for(Onlinelistonlinelist : onlinelist_list){  
  22.                      onlinelistMap.put(onlinelist.getId().getGroupid().toString(),onlinelist);  
  23.               }  
  24.               List<OnlinelistVO>onlinelistVO_list = new ArrayList<OnlinelistVO>();  
  25.               Onlinelistonlinelist = null;        
  26.               OnlinelistIdonlinelistId = null;       
  27.               OnlinelistVOonlinelistVO = null;   
  28.               Stringgroupid = null;                
  29.               StringquondamTitle = null;             
  30.               Stringdisplayorder = null;               
  31.               Stringtitle = null;               
  32.               Stringurl = null;  
  33.               onlinelist= onlinelistMap.get("0");  
  34.               StringnormalUser = mr.getMessage(locale, "usergroups_system_0");  
  35.               if(onlinelist!=null){  
  36.                      onlinelistId= onlinelist.getId();  
  37.                      onlinelistVO= new OnlinelistVO();  
  38.                      onlinelistVO.setDisplayorder(onlinelistId.getDisplayorder().toString());  
  39.                      onlinelistVO.setGroupid("0");  
  40.                      onlinelistVO.setQuondamTitle(normalUser);  
  41.                      onlinelistVO.setTitle(onlinelistId.getTitle());  
  42.                      onlinelistVO.setUrl(onlinelistId.getUrl());  
  43.                      onlinelistVO_list.add(onlinelistVO);  
  44.               }else{  
  45.                      onlinelistVO= new OnlinelistVO();  
  46.                      onlinelistVO.setDisplayorder("");  
  47.                      onlinelistVO.setGroupid("0");  
  48.                      onlinelistVO.setQuondamTitle(normalUser);  
  49.                      onlinelistVO.setTitle(normalUser);  
  50.                      onlinelistVO.setUrl("");  
  51.                      onlinelistVO_list.add(onlinelistVO);  
  52.               }  
  53.               for(Map<String,String>usergroupMap : usergroupMapList){  
  54.                      onlinelistVO= new OnlinelistVO();  
  55.                      groupid= usergroupMap.get("groupid");  
  56.                      Stringgrouptitle = usergroupMap.get("grouptitle");  
  57.                      switch(Short.parseShort(groupid)) {  
  58.                      case1:  
  59.                             quondamTitle= mr.getMessage(locale, "usergroups_system_1");  
  60.                             break;  
  61.                      case2:  
  62.                             quondamTitle= mr.getMessage(locale, "usergroups_system_2");  
  63.                             break;  
  64.                      case3:  
  65.                             quondamTitle= mr.getMessage(locale, "usergroups_system_3");  
  66.                             break;  
  67.                      case4:  
  68.                             quondamTitle= mr.getMessage(locale, "usergroups_system_4");  
  69.                             break;  
  70.                      case5:  
  71.                             quondamTitle= mr.getMessage(locale, "usergroups_system_5");  
  72.                             break;  
  73.                      case6:  
  74.                             quondamTitle= mr.getMessage(locale, "usergroups_system_6");  
  75.                             break;  
  76.                      case7:  
  77.                             quondamTitle= mr.getMessage(locale, "guest");  
  78.                             break;  
  79.                      case8:  
  80.                             quondamTitle= mr.getMessage(locale, "usergroups_system_8");  
  81.                             break;  
  82.                      default:  
  83.                             quondamTitle= grouptitle;  
  84.                      }  
  85.                      onlinelist= onlinelistMap.get(groupid);  
  86.                      if(onlinelist==null){  
  87.                             displayorder="";  
  88.                             title= grouptitle;  
  89.                             url= "";  
  90.                      }else{  
  91.                             onlinelistId= onlinelist.getId();  
  92.                             displayorder= onlinelistId.getDisplayorder().toString();  
  93.                             title= onlinelistId.getTitle();  
  94.                             url= onlinelistId.getUrl();  
  95.                      }  
  96.                      onlinelistVO.setDisplayorder(displayorder);  
  97.                      onlinelistVO.setGroupid(groupid);  
  98.                      onlinelistVO.setQuondamTitle(quondamTitle!=null?quondamTitle.replace("&","&").replace("<","<").replace(">",">"