目录(?)[+]

 

一.     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. public class Student {
  9. /** @pdOid 52d32718-cd89-4b1c-8c46-0f4fa83b0dac */
  10. private int id;
  11. /** @pdOid 5a14a55f-4d17-41ea-ad64-05a0c4f5c523 */
  12. private String name;
  13. /** @pdOid 46fb39fd-e50e-4166-9cdb-b7ae3bfdd229 */
  14. private int 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. public void 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. public class 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(">",">").replace("\"","""):null);
  99. onlinelistVO.setTitle(title!=null?title.replace("\"","""):null);
  100. onlinelistVO.setUrl(url!=null?url.replace("\"","""):null);
  101. onlinelistVO_list.add(onlinelistVO);
  102. }
  103. returnonlinelistVO_list;
  104. }
  105. publicvoid updateOnLineList(String delGroupids , List<Onlinelist> updateList,List<Onlinelist> addList) {
  106. DataBaseDaodataBaseDao = (DataBaseDao)BeanFactory.getBean("dataBaseDao");
  107. if(delGroupids!=null){
  108. dataBaseDao.executeDelete("DELETEFROM "+tablePrefix+"onlinelist WHERE groupidIN("+delGroupids+")");
  109. }
  110. OnlinelistIdonlinelistId = null;
  111. for(Onlinelistonlinelist : updateList){
  112. onlinelistId= onlinelist.getId();
  113. dataBaseDao.execute("UPDATE"+tablePrefix+"onlinelist SETtitle='"+Common.addslashes(onlinelistId.getTitle())+"',url='"+Common.addslashes(onlinelistId.getUrl())+"',displayorder="+onlinelistId.getDisplayorder()+" WHEREgroupid="+onlinelistId.getGroupid());
  114. }
  115. if(addList.size()>0){
  116. ((OnLineListDao)BeanFactory.getBean("onLineListDao")).addOnlinelist(addList);
  117. }
  118. }
  119. }

选择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.csdn.net/tianlesoftware

Weibo: http://weibo.com/tianlesoftware

Email: tianlesoftware@gmail.com

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表空间和数据文件的关系,否则拒绝申请

PowerDesigner 面向对象模型(OOM)的更多相关文章

  1. 物理数据模型(PDM)->概念数据模型 (CDM)->面向对象模型 (OOM):适用于已经设计好数据库表结构了。

    物理数据模型(PDM)->概念数据模型 (CDM)->面向对象模型 (OOM):适用于已经设计好数据库表结构了.   步骤如下: 一.反向生成物理数据模型PDM 开发环境 PowerDes ...

  2. PowerDesigner(八)-面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)(转)

    面向对象模型 面向对象模型是利用UML(统一建模语言)的图形来描述系统结构的模型,它从不同角度实现系统的工作状态.这些图形有助于用户,管理人员,系统分析人员,开发人员,测试人员和其他人员之间进行信息交 ...

  3. 八、面向对象模型(用例图,序列图,类图,生成Java源代码及Java源代码生成类图)

    面向对象模型 面向对象模型是利用UML(统一建模语言)的图形来描述系统结构的模型,它从不同角度实现系统的工作状态.这些图形有助于用户,管理人员,系统分析人员,开发人员,测试人员和其他人员之间进行信息交 ...

  4. [类和对象]3 C++面向对象模型初探

    ? C++编译器如何完成面向对象理论到计算机程序的转化? [C++编译器是如何管理类.对象.类和对象之间的关系] 通过下面的代码,我们可以的得出:C++类对象中的成员变量和成员函数是分开存储的 成员变 ...

  5. C++面向对象模型

    1. 基础知识 C++编译器怎样完毕面向对象理论到计算机程序的转化? 换句话:C++编译器是怎样管理类.对象.类和对象之间的关系 详细的说:详细对象调用类写的方法,那,c++编译器是怎样区分,是那个详 ...

  6. c++面向对象模型---c++如何管理类,对象以及它们之间的联系

    首先我们随意定义4个类结构 class cl1 { private: int age; string name; static int addr; public: cl1() { } void iwa ...

  7. C++学习笔记-面向对象模型探究

    C++中的class从面向对象理论出发,将变量(属性)和函数(方法)集中定义在一起,用于描述现实世界中的类.从计算机的角度,程序依然由数据段和代码段构成.那么C++编译器如何完成面向对象理论到计算机程 ...

  8. C++语法小记---面向对象模型(实例的内存分布)

    面向对象的模型(内存分布) 对于一个对象而言,成员变量和成员函数是分开存放的 成员函数位于代码段,所有的类对象共有 成员变量为每一个对象独有,位于内存中 类对象在内存中的分布和struct完全相同 对 ...

  9. PowerDesigner使用教程

    PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesign ...

随机推荐

  1. 初识MyBatis

    ORM:对象关系映射,它只是一种规则. 像MyBatis,Hibernate对jdbc进行了封装. 第一章 回顾JDBC开发 1.优点:简单易学,上手快,非常灵活构建SQL(自己写的),效率高.2.缺 ...

  2. POJ2965——The Pilots Brothers' refrigerator

    The Pilots Brothers' refrigerator Description The game “The Pilots Brothers: following the stripy el ...

  3. etc/ld.so.conf的使用说明

    这个文件记录了编译时使用的动态链接库的路径.默认情况下,编译器只会使用/lib和/usr/lib这两个目录下的库文件如果你安装了某些库,比如在安装gtk+-2.4.13时它会需要glib-2.0 &g ...

  4. windows下配置环境变量时,在cmd窗口执行配置的命令时无效的原因

    一个原因肯定就是配置错误,这个就要自己仔细去检查了,如果确信配置正确,可能是你的cmd窗口在环境变量配置之前就打开的,在配置好环境变量之后,在cmd窗口执行命令是看不到效果的,可以关掉cmd窗口再重新 ...

  5. NFC(13)使用Android Beam技术传输文件

    注意 Android Beam技术传输文件时nfc只负责连接两个手机,而传输文件实际是用蓝牙模块.且目前接收文件功能只是系统完成,不用自写个接收程序. 传输文件相关的重要api 从Android4.1 ...

  6. JS判断是否出现滚动条

    http://www.cnblogs.com/yazdao/archive/2010/12/06/1897742.html 该博文是想用JS检测浏览器是否出滚动条. 这边想到一个比较取巧的方法, 假如 ...

  7. git rev-list

    git-rev-list - Lists commit objects in reverse chronological order 按照时间顺序倒序排列的commit Update: If all ...

  8. poj3114Countries in War(缩点+DIJK)

    http://poj.org/problem?id=3114 缩点+DIJK 注意缩点之后有重边啊 floyd会TLE #include <iostream> #include<cs ...

  9. 无法找到.exe的调试信息

    原文:无法找到.exe的调试信息 前天重装了电脑,并配置了Visual Studio2005的VC正则库,boost/regex,运行速度马上快了三倍吧,到底是怎么快的,我还真说不清楚,因为电脑这玩意 ...

  10. codeforces 401D (数位DP)

    思路:很明显的数位dp,设dp[i][j] 表示选取数字的状态为i,模m等于j的数的个数,那么最后的答案就是dp[(1<<n)-1][0].状态转移方程就是,dp[i|(1<< ...