签到成功

知道了

CNDBA社区CNDBA社区

PowerDesigner 面向对象模型(OOM)说明

2016-11-25 16:01 3103 0 原创 sql开发
作者: dave

 

一.     OOM 简介

Object-OrientedModel(OOM) 面向对象模型,一个OOM包含一系列包,类,接口 , 和他们的关系。 这些对象一起形成所有的 ( 或部份) 一个软件系统的逻辑的设计视图的类结构。 一个OOM本质上是软件系统的一个静态的概念模型。 

(1)利用UML描述系统结构http://www.cndba.cn/dave/article/1494

(2)利用类图生成不同语言的源文件(如Java、C#、PowerBuilder等),或利用逆向工程将不同类型的源文件转换成相应的类图。

 

1.1 创建OOM

(1)选择File→New Model菜单项

(2)在左侧Model type中选择“Object-Oriented Model”(面向对象模型)

(3)在右侧输入模型名称,选择语言

(4)选择类型

 http://www.cndba.cn/dave/article/1494

1.2 设计用例图

(1)定义用例

(2)定义角色

(3)定义关联

 

1.3 设计序列图

(1)定义角色

(2)定义对象http://www.cndba.cn/dave/article/1494

(3)定义消息

(4)定义激活期

 

1.4  设计类图

(1)定义类

(2)定义属性

(3)定义标识符

(4)定义操作

(5)定义接口

(6)创建联系

http://www.cndba.cn/dave/article/1494

1)  关联

2)  依赖

3)  泛化

4)  实现

 

1.5  生成代码

(1)选择Language→Generate Java Code

(2)选择类

(3)设置生成选项

(4)生成代码

(5)查看生成的代码

 

 

二.     示例

2.1 创建OOM

File--> new modelhttp://www.cndba.cn/dave/article/1494

 

这里选择我们的OOM 类型使用默认的Class Diagram, 语言选择Java。

 

2.2  OOM 生成Java 代码

通过工具面板创建一个类,如下图:

 

双击类,就可以编辑相关的属性。

 http://www.cndba.cn/dave/article/1494

给类添加变量:

 

 

如果我们想给类添加方法:

 

 http://www.cndba.cn/dave/article/1494

先写上方法名称,以及方法的返回类型,然后点击上图的第二步,修改该方法的对应属性:

 

修改方法的内容:


这里的方法名称不能修改,在这一步我们只能修改方法对应的代码。

 

如果要给方法添加参数:

 

完成配置之后:

 

现在导出将我们创建的类导成Java代码:

Language--> Generate Java Code.  生成Java 代码。

 

生成的代码如下:

/*********************************************************************** *Module:  Student.java *Author:  Administrator *Purpose: Defines the Class Student ***********************************************************************/ import java.util.*; /** @pdOid4a8af797-2729-419d-9751-2c15a1baef8e */public class Student {  /** @pdOid 52d32718-cd89-4b1c-8c46-0f4fa83b0dac */  private int id;  /** @pdOid 5a14a55f-4d17-41ea-ad64-05a0c4f5c523 */  private String name;  /** @pdOid 46fb39fd-e50e-4166-9cdb-b7ae3bfdd229 */  private int sex;  /** @pdOid 5e139923-641e-45f0-ba19-773495078f63 */  private Number phone;  /** @pdOid 540722b0-789c-491a-a145-a92226843e0a */  private String address;     /**@param type    *@pdOid e610d773-1a41-4f42-b5b7-f932b24fa6ec */  public String helloWorld(int type) {     // TODO: implement     String str='Hello World!';     return str;   }    /** @pdOid 9108fb19-6b33-4cfa-b629-bd6dc474abd0 */  public void helloWorld2() {  System.out.println("Hello World!");   } }

2.3  从Java 类生成OOM


这个是我要导入的Java 代码:

package cn.jsprun.service;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Locale;import java.util.Map;import org.apache.struts.util.MessageResources;import cn.jsprun.dao.DataBaseDao;import cn.jsprun.dao.OnLineListDao;import cn.jsprun.domain.Onlinelist;import cn.jsprun.domain.OnlinelistId;import cn.jsprun.utils.BeanFactory;import cn.jsprun.utils.Common;import cn.jsprun.vo.otherset.OnlinelistVO;public class OnLineSetService {       privatefinal String tablePrefix = "jrun_";       publicList<OnlinelistVO> queryAllSystemUserGroup(MessageResources mr,Localelocale){              List<Map<String,String>>usergroupMapList = ((DataBaseDao)BeanFactory.getBean("dataBaseDao")).executeQuery("SELECTu.groupid,u.grouptitle FROM "+tablePrefix+"usergroups AS u WHEREu.type<>'member'");              List<Onlinelist>onlinelist_list =((OnLineListDao)BeanFactory.getBean("onLineListDao")).queryAllOnlineList();              Map<String,Onlinelist>onlinelistMap = new HashMap<String, Onlinelist>();              for(Onlinelistonlinelist : onlinelist_list){                     onlinelistMap.put(onlinelist.getId().getGroupid().toString(),onlinelist);              }              List<OnlinelistVO>onlinelistVO_list = new ArrayList<OnlinelistVO>();              Onlinelistonlinelist = null;                    OnlinelistIdonlinelistId = null;                   OnlinelistVOonlinelistVO = null;               Stringgroupid = null;                            StringquondamTitle = null;                         Stringdisplayorder = null;                           Stringtitle = null;                           Stringurl = null;              onlinelist= onlinelistMap.get("0");              StringnormalUser = mr.getMessage(locale, "usergroups_system_0");              if(onlinelist!=null){                     onlinelistId= onlinelist.getId();                     onlinelistVO= new OnlinelistVO();                     onlinelistVO.setDisplayorder(onlinelistId.getDisplayorder().toString());                     onlinelistVO.setGroupid("0");                     onlinelistVO.setQuondamTitle(normalUser);                     onlinelistVO.setTitle(onlinelistId.getTitle());                     onlinelistVO.setUrl(onlinelistId.getUrl());                     onlinelistVO_list.add(onlinelistVO);              }else{                     onlinelistVO= new OnlinelistVO();                     onlinelistVO.setDisplayorder("");                     onlinelistVO.setGroupid("0");                     onlinelistVO.setQuondamTitle(normalUser);                     onlinelistVO.setTitle(normalUser);                     onlinelistVO.setUrl("");                     onlinelistVO_list.add(onlinelistVO);              }              for(Map<String,String>usergroupMap : usergroupMapList){                     onlinelistVO= new OnlinelistVO();                     groupid= usergroupMap.get("groupid");                     Stringgrouptitle = usergroupMap.get("grouptitle");                     switch(Short.parseShort(groupid)) {                     case1:                            quondamTitle= mr.getMessage(locale, "usergroups_system_1");                            break;                     case2:                            quondamTitle= mr.getMessage(locale, "usergroups_system_2");                            break;                     case3:                            quondamTitle= mr.getMessage(locale, "usergroups_system_3");                            break;                     case4:                            quondamTitle= mr.getMessage(locale, "usergroups_system_4");                            break;                     case5:                            quondamTitle= mr.getMessage(locale, "usergroups_system_5");                            break;                     case6:                            quondamTitle= mr.getMessage(locale, "usergroups_system_6");                            break;                     case7:                            quondamTitle= mr.getMessage(locale, "guest");                            break;                     case8:                            quondamTitle= mr.getMessage(locale, "usergroups_system_8");                            break;                     default:                            quondamTitle= grouptitle;                     }                     onlinelist= onlinelistMap.get(groupid);                     if(onlinelist==null){                            displayorder="";                            title= grouptitle;                            url= "";                     }else{                            onlinelistId= onlinelist.getId();                            displayorder= onlinelistId.getDisplayorder().toString();                            title= onlinelistId.getTitle();                            url= onlinelistId.getUrl();                     }                     onlinelistVO.setDisplayorder(displayorder);                     onlinelistVO.setGroupid(groupid);                     onlinelistVO.setQuondamTitle(quondamTitle!=null?quondamTitle.replace("&","&").replace("<","<").replace(">",">").replace("/"","""):null);                     onlinelistVO.setTitle(title!=null?title.replace("/"","""):null);                     onlinelistVO.setUrl(url!=null?url.replace("/"","""):null);                     onlinelistVO_list.add(onlinelistVO);              }              returnonlinelistVO_list;       }       publicvoid updateOnLineList(String delGroupids , List<Onlinelist> updateList,List<Onlinelist> addList) {              DataBaseDaodataBaseDao = (DataBaseDao)BeanFactory.getBean("dataBaseDao");              if(delGroupids!=null){                     dataBaseDao.executeDelete("DELETEFROM "+tablePrefix+"onlinelist WHERE groupidIN("+delGroupids+")");              }              OnlinelistIdonlinelistId = null;              for(Onlinelistonlinelist : updateList){                     onlinelistId= onlinelist.getId();                     dataBaseDao.execute("UPDATE"+tablePrefix+"onlinelist SETtitle='"+Common.addslashes(onlinelistId.getTitle())+"',url='"+Common.addslashes(onlinelistId.getUrl())+"',displayorder="+onlinelistId.getDisplayorder()+" WHEREgroupid="+onlinelistId.getGroupid());              }              if(addList.size()>0){                     ((OnLineListDao)BeanFactory.getBean("onLineListDao")).addOnlinelist(addList);              }       }}


选择Language –>Reverse Engineer Java, 将我们要导入的java 代码添加进来,确定:

 


http://www.cndba.cn/dave/article/1494

 

这里把包的结构也生成了,我们看这个类具体的一些属性,双击类:

有一个变量:

 

 

两个方法:

 

 

 


 

2.4 OOM 生成Java 代码格式说明

从2.2 节导出的代码来看,默认的生成代码模板也不十分清晰。 如果我们要修改这个默认的模板,可以按照一下方法来操作:

 

Language--> Edit Current Object Language

然后:

profile>class>templates>definition


 

修改这里面的样式就ok了。 我现在也不折腾Java 代码,具体样式这块就各位同学自己折腾了。

 

 

 


 

 


 

-------------------------------------------------------------------------------------------------------

Blog: http://blog.csdn.net/tianlesoftware

Weibo: http://weibo.com/tianlesoftware

Email: tianlesoftware@gmail.comhttp://www.cndba.cn/dave/article/1494

DBA1 群:62697716(满);   DBA2 群:62697977(满)  DBA3 群:62697850(满)  

DBA 超级群:63306533(满);  DBA4 群:83829929(满) DBA5群: 142216823(满) http://www.cndba.cn/dave/article/1494

DBA6 群:158654907(满)   DBA7 群:69087192(满)  DBA8 群:172855474

DBA 超级群2:151508914  DBA9群:102954821     聊天 群:40132017(满)

--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2264
    原创
  • 3
    翻译
  • 579
    转载
  • 192
    评论
  • 访问:8094290次
  • 积分:4356
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ