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 代码。
生成的代码如下:
/***********************************************************************
*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 代码添加进来,确定:
这里把包的结构也生成了,我们看这个类具体的一些属性,双击类:
有一个变量:
两个方法:
2.4 OOM 生成Java 代码格式说明
从2.2 节导出的代码来看,默认的生成代码模板也不十分清晰。 如果我们要修改这个默认的模板,可以按照一下方法来操作:
Language--> Edit Current Object Language
然后:
profile>class>templates>definition
修改这里面的样式就ok了。 我现在也不折腾Java 代码,具体样式这块就各位同学自己折腾了。
-------------------------------------------------------------------------------------------------------
Blog: http://blog.****.net/tianlesoftware
Weibo: http://weibo.com/tianlesoftware
Email: [email protected]
DBA1 群:62697716(满); DBA2 群:62697977(满)DBA3 群:62697850(满)
DBA 超级群:63306533(满); DBA4 群:83829929(满) DBA5群: 142216823(满)
DBA6 群:158654907(满) DBA7 群:69087192(满)DBA8 群:172855474
DBA 超级群2:151508914 DBA9群:102954821 聊天 群:40132017(满)
--加群需要在备注说明Oracle表空间和数据文件的关系,否则拒绝申请