五、面向对象模型OOM(Object-Oriented Model)
一. 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 代码,具体样式这块就各位同学自己折腾了。