Model Maker上手指南

Model Maker上手指南

目录

1.MM可爱的脸

2.MM中的工程Project

3.新建类图

4.添加类成员

5.实现类的方法

6.生成Delphi代码

7.逆向到模型

8.完全的逆向工程

作者:郭方明

完成日期:2005-12-06 version 1.0

联系信箱:[email protected]

注:转载文章,请注明作者信息。

引文

本文通过一个简单的例子介绍使用MM(ModelMaker)设计类图和生成Delphi代码,以及代码逆向同步的过程;让你在最短的时间内上手MM。 编写本文使用的是ModelMaker 7,不能保证文章内容适合所有版本。

 

谁需要阅读本文

刚接触MM需要掌握其基本操作方法。

使用Delphi语言想要学习UML建模的初学者。

正文:

MM简介:ModelMaker简称为MM,是一个与Delphi紧密绑定的CASE建模工具。MM弥补了Delphi IDE在建模设计上的不足。MM与其他 CASE工具最大的不同就是其强大的实时同步引擎,你的设计可以直接映射成代码,在代码上的修改可以自动逆向反映到设计模型。以“设计-编码-精练”方式代替了传统的“设计-编码”的工作方式。MM是一个强大的UML建模工具,她还支持时下流行的“设计模式”。

闲话少说,通过以下8个部分你就可以上手了,“Follow me, step by step”。

1、MM可爱的脸

我们先浏览一下MM的芳容,打开MM7。

MM的安装很简单这里就不介绍了,如果需要更多的信息可以浏览http://www.modelmakertools.com

MM的默认布局(菜单条下的工具栏上有一个下拉框,选中“basic”)分四大块。

1.左上是【树状视图区】包括:【图】(Diagrams),【类视图】(Classes)和【单元视图】(Units)。

2.左下方是【类成员区】

3.右上是【编辑区】包括:【图编辑页】(Diagram Editor),【实现编辑页】(Implementation)和【单元代码编辑页】(Unit Code)。

4.右下是【消息】和【文档】区。

注意:MM的各个页面都有“停靠”功能,你可以随意安排布局,但是由于MM的页面比较多,建议初学者使用默认的布局风格。如果不慎搞乱了布局可以点击工具栏上的下拉框选中“basic”即可恢复。另外,在1024×768以上的分辨率下使用会得到更好的效果。

2、MM中的工程(Project)

现在开始用MM了,首先我们需要搞清她会产生的文件。

先创建一个新工程(或模型),选择菜单“File|New”。你将得到一个空白的工程,该工程包含一个默认的祖先TObject 和 IUnknown。

然后选择菜单“File|Save As...”命名为FirstMM,你将得到FirstMM.mpd文件。

其实.mpd是以下的文件集合的打包:

1. <model>.mpr; 包含工程设置;

2. <model>.mma; 包含与工程相关的宏;

3. <model>.mmb; 包含代码模型数据;

4. <model>.mmc; 包含模型中的文档;

5. <model>.mmd; 包含图;

6. <model>.mme; 包含事件类型定义;

7. <model>.mmf; 包含工程信息。

也可以设置MM(参考帮助文件“Options | Environment options”)使其保存项目时存为以上一系列的文件。

3、新建类图

在MM建一个类有很多种方法(比如使用“Tools|Create Class Wizard...”)。我们用MM强大的图形建模功能来建我需要的类。

首先点击【编辑区】的【图编辑页】(Diagram Editor),把注意力都放在这个区域哦。

1.点击类似“+”的“add Diagram”按钮(将鼠标移到按钮上,稍停就会有该按钮的名称。以下提到的按钮我们都以MM提示名称来表示)。

2.MM弹出对话框要我们输入图名(name)输入:testClass。

3.在下拉框(type)中选择 Classes Diagram后点击“ok”。我们那就得到了一张名为testClass的空白类图。

4.这时你发先图左侧的一派按钮都可用了,点击“add Class”按钮(应该是第一个)。

5.这时鼠标带了一个“+”在图上找个合适的位置点击一下,MM弹出了对话框要求输入类名class name等类的基本信息。输入class name:TMMobject。选择祖先类Ancestor:TObject。现在我们已经得到了一个类并且看到了他的图形。

注意:选择Ancestor时你会发现你只能选TObject如果我们想要从其他类继承怎么办呢?

这里有一个必须说明的问题。MM规定新类的父类类必须作为模型数据的一部分,否则MM可能无法正常生成新类的代码部分。这就意味这如果想要声明一个新类就必须导入其父类,而导入其父类需要导入其父类的祖先类,如此循环好像必须要把Delphi类的继承关系全部导入到模型中!问题当然不能这样解决。

MM提供了一个叫“占位符”的标志来解决这个问题。我们打开界面左上方【树状视图区】的【类视图】(Classes)页面。选中TObject。从弹出式菜单中选择“Add descendant” 输入TKK作为类名。双击该类并在类编辑器对话框中选中选项“placeholder”。你会发现TKK变成一个虚框,这时的Tkk就是一个“占位符”。

把Tkk拖到我们testClass类图上。

6.重复步骤4和步骤5,我们加上另外两个类TMMFace和TMMBoday,他们的祖先类都是TMMobject。我们的图上有四个类TMMobject、TMMFace、TMMBoday和Tkk。那么如何展现他们之间的关系呢?

7.当然我们可以自己来画箭头,但是这个办法好好像很笨。一个更好的办法是用MM提供的向导。

步骤如下:先用鼠标圈住(或用键盘Ctrl+A)以上四个类。点击右键“Wizards|visualize class relations...”这是MM自动的生成了TMMFace和TMMBoday指向TMMobject的箭头。或者点击“Wizards|visualize related classes ...”这样MM会把关联到的类全部显示出来,我们的类图上就会多了TObject。

4、添加类成员

有了这些类后我们来添加类成员(属性和方法等)。

1.选中TMMFace在右键弹出菜单“class|add property”。

2.name输入:color,根据需要设置其他各项(相信会delphi都应该明白是什么意思,我们在这里就用默认的选项)。

3.ok后“好像世界没什么改变?”难道有bug?呵呵,如果你够仔细的话你会发现在左下方的【类成员区】出现两成员Fcolor:integer和color:integer。你是不是在想我的图上为什么没有呢?其实这是选项设置的问题。

在图的空白区域上点右键“visual style|Diagram properties”,选“symbol style”页,将“Project member type filter”前的勾去掉。把“fields、properties”等根据需要选中。“世界终于改变了!”

4.如上所述,给TMMFace加入方法WashFace。给TMMBoday加入属性:face:TMMFace和方法bath。

注意:给TMMBoday加入属性:face:TMMFace时你也许会遇到困难。步骤如下:在弹出的对话框上的DataType中选class在DataTypeName输入TMMFace即可。相信你明白这是什么意思了TMMBoday引用了TMMFace。哪么他们的关系应该反映在类图上啊,“Wizards|visualize class relations...”就OK了,看到你期望的哪条线了吧。

5、实现类的方法

在MM中我们可以直接用Delphi代码实现类的方法(好像Delphi IDE完全没用了一样,呵呵)。

在【类成员区】选中要实现的方法,点击【编辑区】,【实现编辑页】(Implementation)写代码。Implementation页的功能很简单这里就不详细介绍了,推荐大家回到Delphi IDE中来写代码,毕竟这是Delphi IDE的强项。

6、生成Delphi代码

激动人心的时刻到来了,生成Delphi代码。

模型建好了,我们还要干什么?

1.在界面左上【树状视图区】的【单元视图】(Units),点“add new unit”按钮。

2.在path Alias选择路径。Relative File name输入“MMUnit”单元名,ok。

3.工具栏按钮“Unlock Code Generation”按钮解锁(这一步必须要哦)。

4.在【单元视图】(Units)点击按钮“Generate”。

5.赶快在你本地的文件夹(刚才设置的path Alias)下找找,一个MMUnit.PAS出现了,打开看看Unit的开头都有了,却没有发现TMM们的身影?为什么?

6.在【单元视图】(Units)把“Class not assigned to units”下的类都拖到“MMUnit”下。

7.点击按钮“Generate”。

8.我看到你脸上露出了笑意!呵呵,成功了!

7逆向到模型

下面我们看看在Delphi中对类的修改怎样返回到MM中,用Delphi打开MMUnit.PAS。

1.我们给类TMMFace增加一个成员(str:string使其代码如下:

TMMFace = class(TMMobject)
        private
           Fcolor: Integer;
           str:string;
        public
          
procedure WashFace;
          
property color: Integer read Fcolor
write Fcolor;
        end;

2.在Delphi中点菜单“ModelMaker|Jump to ModelMaker ”回到MM中。

3.在【单元视图】(Units)选“refresh Import”按钮。

4.查看TMMFace发现【类成员视图】果然有了str:string。

注意:在【图编辑页】(Diagram Editor)查看TMMFace发现没有str:string。这选项的问题。在图的空白区域上点右键“visual style|Diagram properties”“Member visibility
filter”把private,public等全选上就有了。

中间小结:

以上讲的过程为:用MM设计-在Dephi中(实现,修改)-重新映射到MM模型中-重新修改精练设计。这样一个过程。这是一个正向的开发过程,也是我们在实际开发中正常的流程。

但是在没有MM以前我们已经有了很多的类,很多的项目。我们能把他们变成漂亮的图形吗?

8、完全的逆向工程

逆向工程在MM中十分简单。但是要提醒你的是不熟悉MM的脾气的时候先备份一下你的旧代码。

1.【单元视图】(Units)选“Import Unit..”

2.选择你要导入的.pas文件。

3.ok后你在【单元视图】(Units)可以看见多了一个新的单元。

4.【图编辑页】(Diagram Editor),右键菜单“Wizards|visualiztion Wizards”选刚导入的单元,单元下的类选到右边。next,finish,我们的图上多了刚才选中类图。

图形化我们已有的类就是这么简单,一个完全的逆向工程就完成了。

结束语

MM的功能十分的强大,本文只介绍了很小的一部分,有兴趣的读者可以参考MM的操作手册

另外,我计划写一篇新的文章《MM与模式设计》,完成后与大家分享。

笔者也在学习当中,文中如有错误或疑问请发邮件[email protected]给我,谢谢。

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

时间: 2024-10-29 00:04:45

Model Maker上手指南的相关文章

树莓派(Raspberry Pi Model B+)无显示器和无线网卡上手指南

树莓派(Raspberry Pi Model B+)无显示器和无线网卡上手指南 最近买了一块树莓派板子(Raspberry Pi Model B+)平时作学习之用,只买了块裸板没有显示器和网卡(现在觉得完全没有必要去买显示器),在搭建环境的时候就遇到了一些问题,现在对在搭建树莓派环境遇到的问题做一个总结. 现在我知道的能够连接到树莓派的方法一共有四种,分别是串口终端操作.局域网.PC直连和手机USB网络共享,后面3种方法都是通过ssh的方式登陆树莓派(装好VNC-server后也可以用VNC查看

Android SDK上手指南 3:用户交互

在这篇教程中,我们将对之前所添加的Button元素进行设置以实现对用户点击的检测与响应.为了达成这一目标,我们需要在应用程序的主Activity类中略微涉及Java编程内容.如果大家在Java开发方面的经验不太丰富也没必要担心,只要按步骤进行即可完成学习.我们将在本系列的下一篇文章中深入探讨Java语法,从而保证大家了解初步Android开发任务中所必需的编程语言知识. 大家可以在Android当中以多种不同方式实现用户交互.我们将学习两种最为典型的处理方案,从而实现应用按钮对用户点击的感应--

Android SDK上手指南 2:用户界面设计

http://mobile.51cto.com/ahot-419184.htm 内容简介 我们将为应用程序项目添加布局方案,在这方面XML与Eclipse ADT接口将成为工作中的得力助手--不过在后面两节中还会用到一部分Java开发知识.XML与Java在Android平台的开发工作当中可谓无处不在,如果大家对二者还缺乏基本的了解,请尽快想办法补补课.对于刚刚入门的读者朋友来说,本文所介绍的要点将成为各位日后开发工作的重要基础. 1. XML基础知识 在我们开始讨论布局之前,先来梳理作为标记语

Rancher 快速上手指南操作(1)

Rancher 快速上手指南操作(1)该指南知道用户如何快速的部署Rancher Server 管理容器.前提是假设你的机器已经安装好docker了.1 确认 docker 的版本,下面是 ubuntu 的输出 [#63#[email protected] ~]$sudo docker version [sudo] password for cloudsoar: Client: Version:      1.9.1 API version:  1.21 Go version:   go1.4.

UnityShader快速上手指南(三)

简介 这一篇还是一些基本的shader操作:裁剪.透明和法向量的应用 (纠结了很久写不写这些,因为代码很简单,主要是些概念上的东西) 先来看下大概的效果图:(从左到右依次是裁剪,透明,加了法向量的透明) 裁剪 代码 Shader "LT/Lesson3_Cull" { Properties { _Color ("Color", Color) = (1, 1, 1, 1) } SubShader { Pass { Cull Off CGPROGRAM #pragma

DPDK快速上手指南(18.02)

DPDK快速上手(linux) 本文档主要来自linux_gsg-18.02.pdf的翻译,翻译肯定有不妥之处,请批评指正,我会随后修改,不胜感激. 1. 介绍 本文档包含有关DPDK(Data Plane Development Kit的缩写)软件的安装和配置的说明,目的就是让用户快速用起来.本文档描述怎样在linux应用环境下编译和运行一个DPDK应用程序,而不过多深入细节. 1.1文档路线图 以下是针对所有DPDK文档建议的阅读顺序: 发布说明(Release Notes):提供具体的发布

Mac 触摸板增强神器BetterTouchTool 上手指南

BTT 功能解剖 1:应用选择区点击左下角的「加减号键」可以添加或删除列表中的应用,但它不适用于 Global 选项,前文中已提到,因为它代表的是整个操作系统的大环境,所以任何对它的设置就相当于增加一个新的系统「指定」操作方式. 出于这个原因,这部分的设置项也都是针对 Global 的,分别是: 拷贝 Global 相关的手势操作设置粘贴上述设置禁止将单指滚动操作应用于 Global禁止针对 Global 的窗口捕捉,该功能用于自动调整窗口位置,类似 Moom(下图蓝色虚线框效果)禁止任何针对

UnityShader快速上手指南(二)

简介 前一篇介绍了如果编写最基本的shader,接下来本文将会简单的深入一下,我们先来看下效果吧 呃,gif效果不好,实际效果是很平滑的动态过渡 实现思路 1.首先我们要实现一个彩色方块 2.让色彩动起来 over 实现一个RGB CUBE 先看代码吧: Shader "LT/Lesson2" { Properties { _OffsetX ("Offset X", Range (-1.5, 1.5) ) = 0 _OffsetY ("Offset Y&q

caffe简易上手指南(一)—— 运行cifar例子

简介 caffe是一个友好.易于上手的开源深度学习平台,主要用于图像的相关处理,可以支持CNN等多种深度学习网络. 基于caffe,开发者可以方便快速地开发简单的学习网络,用于分类.定位等任务,也可以用于科研,在其源码基础上进行修改,实现自己的算法. 本文的主要目的,是介绍caffe的基本使用方法,希望通过本文,能让普通的工程师可以使用caffe训练自己的简单模型. 本文主要包括以下内容:运行caffe的例子训练cifar训练集.使用别人定义好的网络训练自己的数据.使用训练好的模型fine tu