




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
uml活动图编辑系统 目录1.设计背景32.系统需求42.1.系统界面42.2.活动图显示方式42.3.创建活动图42.4.编辑活动图42.5.删除活动图42.6.显示状态迁移42.7.初步案例图43.系统分析53.1.系统基本结构53.1.1.基本对象的确定53.1.2.基本对象关系63.1.3基本类文档73.2.基本用例模型及用例描述93.2.1. 基本用例模型93.2.2.基本用例描述103.2.2.1.创建图形用例描述103.3.序列图113.3.1.创建图元序列图113.3.2.编辑图元序列图114.系统设计124.1.概要设计124.1.1.解决方案124.1.2.设计思想124.1.3.系统框架124.2.界面设计134.3.完整的用例模型144.4.完整的对象图144.5.系统状态图154.6.系统活动图165.系统实现175.1.图形类(cdiagram)定义文档175.2.图元基类(celement)定义文档175.3.工具类文档175.3.1.抽象基类(ctool)文档175.3.2.创建工具类(ccreatetool)文档185.3.3.编辑工具类(cedittool)文档185.4.图元工具类185.4.1.起点工具类(cstarttool)文档185.4.2.活动状态工具类(cactivestatustool)文档195.4.3.等待信号工具类(cwaitsingaltool)文档195.4.4.发送信号工具类(csendsingaltool)文档195.4.5.同步条工具类(csynchronousbartool)文档205.4.6.判定工具类(cjudgepointtool)文档205.4.7.状态迁移工具类(carrowtool)文档205.4.8.终点工具类(cendtool)文档205.5.图元类文档215.5.1.起点类(cstart)文档215.5.2.活动状态类(cactivestatus)文档215.5.3.等待信号类(cwaitsingal)文档215.5.4.发送信号类(csendsingal)文档225.5.5.同步条类(csynchronousbar)文档225.5.6.判定类(cjudgepoint)文档225.5.7.状态迁移类(carrow)文档235.5.8.终点类(cend)文档235.6.视图类(cactivechartview)文档235.7.显示状态迁移对话框类(cdlgstatemove)文档246.课程设计总结251.设计背景面向对象技术是一种发展成熟的程序设计技术,在当今社会中占有主流地位;此外,uml在软件开发过程中的作用也越来越重要,因此,有必要掌握面向对象程序设计技术以及能够熟练的在软件开发过程中运用uml。2.系统需求2.1.系统界面系统界面应提供编辑区、菜单栏、工具条,以方便创建编辑图形。2.2.活动图显示方式用不同的图元表示起点、终点、状态迁移、活动状态、等待信号、发送信号、同步条、判定等各种活动图。2.3.创建活动图选择菜单栏或工具栏上的创建起点、终点、状态迁移、活动状态、等待信号、发送信号、同步条、判定等各种活动图命令,在编辑区内创建各种活动图。2.4.编辑活动图能够实现选择图元、移动图元、改变图元大小、在图元上编辑文字等各种编辑功能。2.5.删除活动图在菜单栏或工具栏上提供删除活动图的命令,能用弹出式菜单或选中图元后单击del键来删除活动图,若删除的图元不是状态迁移,则应级联删除与之相连的状态迁移。2.6.显示状态迁移在菜单栏或工具栏上提供“显示状态迁移“命令,用于显示已经输入的所有状态迁移,能够显示状态迁移的前后状态信息。2.7.初步案例图经过初步的需求分析,系统的初步案例图如下:3.系统分析3.1.系统基本结构3.1.1.基本对象的确定将每一个具体的图元定义为不同的类,因此就有:起点类(cstart)、终点类(cend)、活动状态类(cactivestaus)、状态迁移类(carrow)、等待信号类(cwaitsingal)、发送信号类(csendsingal)、同步条类(csynchronousbar)、判定类(cjudgepoint);因为各种图元类有公共的属性,再抽象出一个图元基类celement;因为要对各种图元操作,因此要存储所有的图元,所以再定义一个保存所有图元的类cdiagram。根据对图元的操作,提取出工具类来定义对图元的公共操作,此类为虚基类ctool;因为创建图元与编辑图元的操作不同,因此,抽象出创建图元类(ccreatetool)和编辑图元类(cedittool);又因为不同的图元又有不同的操作,因此再抽象出各个对不同图元操作的工具类:起点工具类(cstarttool)、终点工具类(cendtool)、等待信号工具类(cwaitsingaltool)、发送信号工具类(csendsingaltool)、同步条工具类(csynchronousbartool)、活动状态工具类(cactivestatustool)、状态迁移工具类(carrow)、判定工具类(cjudgepointtool)。因为要在对话框中“显示状态迁移“,所以,需要定义显示状态迁移的对话框类(cdlgstatemove)。3.1.2.基本对象关系通过对基本对象的分析,我们可以得到如下的基本对象关系: 图元类的继承关系 工具类的继承关系3.1.3基本类文档3.1.3.1.工具类的类文档ctool工具类基类对象关联包含图形基类cdiagram继承类无属性cdiagram* m_d保存图形cactivechartview* m_pact指向当前活动视图行为virtual void press(cpoint pos) =0;响应鼠标左键按下消息virtual void move(cpoint pos) =0;响应鼠标移动消息virtual void release(cpoint pos) =0;响应释放鼠标ccreatetool创建工具类继承类ctool属性cpoint* m_pstart记录鼠标按下时的位置cpoint* m_pend记录鼠标释放时的位置行为void press(cpoint pos);响应鼠标左键按下消息void move(cpoint pos);响应鼠标移动消息void release(cpoint pos);响应释放鼠标virtualcelement* create(cpoint start,cpoint end) =0;创建图元virtual void update(cpoint start,cpoint end)=0;动态记录鼠标的位置cedittool编辑工具类继承类ctool属性int m_focus记录图元获得焦点的控制点celement* m_pelem指向正在编辑的图元行为void press(cpoint pos);响应鼠标左键按下消息void move(cpoint pos);响应鼠标移动消息void release(cpoint pos);响应释放鼠标cedittool(cdiagram* d);保存正在编辑的图形3.1.3.2.图形类的类文档cdiagram图形类属性cobarray m_elems保存所有的图元行为celement* find(cpoint pos);判断选中了哪个图元3.1.3.3.图元基类的类文档celement图元基类继承类cobject属性bool m_select某个图元是否被选中int m_logo标志是哪类图元cstring m_wordsinelem记录图元上显示的文字cpoint m_pstart,m_pend分别记录创建图元的两个点行为virtual void move(int vx,int vy);移动图元virtual crect createinputarea();创建显示文字区域virtual bool contains(cpoint pos) =0;判断是否点到了图元virtual void draw(cdc* pdc) =0;创建图元void movecontrolpoint(int pos,int vx,int vy);移动图元的控制点virtual int findcontrol(cpoint pos) =0;判断是否点到了图元的控制点3.1.3.4.图元工具类的类文档因为8中图元工具类的类文档都差不多,只是名字不同,因此,这里仅仅给出一个图元工具类的类文档。carrowtool状态迁移工具类继承类ccreatetool属性行为carrowtool(cdiagram* m);记录图形void update(cpoint start,cpoint end);更新图元位置celement* create(cpoint start,cpoint end);创建图元3.1.3.5.图元类的类文档同理,因为8中图元的类文档也差不多,只是名字不同而已,因此,这里也只给出一个图元类的类文档。carrow状态迁移类继承类celement属性方法void move(int cx,int cy);移动状态迁移int findcontrol(cpoint pos);判断点到哪个控制点void draw(cdc* pdc);画状态迁移bool contains(cpoint pos);判断是否点到了状态迁移carrow(cpoint start,cpoint end);生成状态迁移3.2.基本用例模型及用例描述3.2.1. 基本用例模型3.2.1.1.创建图形用例模型3.2.1.2.编辑图形用例模型3.2.2.基本用例描述3.2.2.1.创建图形用例描述创建图形用户编辑系统1.要求创建1.建立空文档2.选择创建起点2.创建起点3.选择创建活动状态3.创建活动状态4.选择创建发送信号4.创建发送信号5.选择创建等待信号5.创建等待信号6.选择创建判定6.创建判定7.选择创建同步条7.创建同步条8.选择创建状态迁移8.创建状态迁移9.选择创建终点9创建终点3.2.2.2.编辑图形用例描述编辑图形用户编辑系统1.选择图形1.高亮显示图形2.选择编辑起点2.编辑起点3.选择编辑活动状态3.编辑活动状态4.选择编辑发送信号4.编辑发送信号5.选择编辑等待信号5.编辑等待信号6.选择编辑判定6.编辑判定7.选择编辑同步条7.编辑同步条8.选择编辑状态迁移8.编辑状态迁移9.选择编辑终点9.编辑终点3.3.序列图3.3.1.创建图元序列图在系统处于初始状态下,用户选择创建图元命令,然后在编辑区内按住鼠标左键并拖动,这时会动态绘制图元,绘制好后释放鼠标,按下鼠标时系统会记录下图元的起点,鼠标弹起时系统又会记录图元的终点。3.3.2.编辑图元序列图创建好图元后有时需要编辑,这时先选中需要编辑的图元,方法是用鼠标左键单击要编辑的图元。将鼠标定位在图元内部,然后拖动鼠标,就会移动图元到新的位置。将鼠标定位到图元的控制点上,根据选择的不同控制点以不同的方式改变图元的大小。用鼠标双击图元,就会出现一个文字编辑区域,可以在给区域内输入文字。4.系统设计4.1.概要设计4.1.1.解决方案本课程设计采用的开发环境是microsoft visual c+ 6.0,它是一种可视化的开发环境,并且利用其提供的mfc类库来进一步简化程序的设计。4.1.2.设计思想本课程设计是基于面向对象技术的系统设计,因此,定义了各种类来描述系统的各个部分的属性和具体实现方法,并且利用uml来描述系统需求、系统结构、系统行为。4.1.3.系统框架本系统主要包括创建图元、编辑图元、删除图元、显示状态迁移等四大部分。uml活动图编辑系统建立空文档创建图元编辑图元删除图元显示状态迁移4.2.界面设计由图可知,系统界面提供了创建各种图元的命令,包括菜单命令和工具栏命令,并且提供了删除图元的的菜单和工具栏命令,还提供了显示状态迁移的菜单和工具栏命令,此外,在状态栏上可以显示鼠标在编辑区的坐标位置,这样可以方便绘制图形。4.3.完整的用例模型根据对系统的详细分析,可以得到如下完整的用例模型:4.4.完整的对象图通过对各种对象功能以及系统结构的分析,可以得到如下完整的对象图:4.5.系统状态图该系统中的状态主要有:创建图元状态、选中图元状态、编辑图元状态、删除图元状态、显示状态迁移状态,其转移过程如下:在初始状态下,只能先创建图元,否则,系统没有反应;创建图元后,可以选中图元,继而编辑图元或删除图元,删除图元有三种方法:可以选择菜单栏中的删除命令,也可以直接单击工具栏上的删除命令,还可以在图元上右键单击,这时会弹出快捷菜单,单击其中的删除命令删除图元。在选中图元的状态下,可以移动图元、改变图元的大小、在图元内编辑文字。除了初始状态的任意状态下,可以选择显示状态迁移命令来显示当前的状态迁移信息。4.6.系统活动图下图是用该系统绘制的本系统的活动图。5.系统实现5.1.图形类(cdiagram)定义文档class cdiagram /图形类public:cobarray m_elems; /保存所有的图元public:celement* find(cpoint pos);/查找点到哪个图元;5.2.图元基类(celement)定义文档class celement : public cobject public:bool m_select; /是否被选中int m_logo; /具体图元的标志cstring m_wordsinelem; /图元上显示的文字cpoint m_pstart,m_pend; /记录图元的起点与终点public:void movecontrolpoint(int pos,int vx,int vy);/移动控制点virtual crect createinputarea();/创建文字区域virtual void move(int vx,int vy)0; /移动图元virtual int findcontrol(cpoint pos) =0; /判断点到哪个控制点virtual bool contains(cpoint pos) =0; /是否点到某个图元virtual void draw(cdc* pdc) =0; /绘制图元;5.3.工具类文档5.3.1.抽象基类(ctool)文档class ctool /工具类public:cdiagram* m_d; /指向建立的图形对象cactivechartview* m_pact; /指向当前视图 public:ctool(cdiagram* d); /保存图形virtual void press(cpoint pos) =0; /鼠标左键按下时调用virtual void move(cpoint pos) =0; /鼠标移动时调用virtual void release(cpoint pos) =0; /鼠标弹起时调用;5.3.2.创建工具类(ccreatetool)文档class ccreatetool : public ctool public:cpoint* m_pstart; /临时记录起点cpoint* m_pend; /临时记录终点public:virtual celement* create(cpoint start,cpoint end) =0; /创建一个图元,并返回指向该图元的指针void release(cpoint pos); /鼠标释放时virtual void update(cpoint start,cpoint end)=0; /更新void move(cpoint pos); /移动void press(cpoint pos); /鼠标按下记录起点;5.3.3.编辑工具类(cedittool)文档class cedittool : public ctool public:int m_focus; /判断是否有图元获得焦点celement* m_pelem; /正在编辑的图元public:void release(cpoint pos); /鼠标释放void press(cpoint pos);/鼠标按下void move(cpoint pos);/鼠标移动cedittool(cdiagram* d);/记录编辑的图形;5.4.图元工具类5.4.1.起点工具类(cstarttool)文档class cstarttool : public ccreatetool /起点工具类public:celement* create(cpoint start,cpoint end); /创建起点void update(cpoint start,cpoint end); /更新起点cstarttool(cdiagram* d);5.4.2.活动状态工具类(cactivestatustool)文档class cactivestatustool : public ccreatetool public:cactivestatustool(cdiagram* m);void update(cpoint start,cpoint end); /更新活动状态celement* create(cpoint start,cpoint end);/创建活动状态;5.4.3.等待信号工具类(cwaitsingaltool)文档class cwaitsingaltool : public ccreatetool public:void update(cpoint start,cpoint end);/更新等待信号celement* create(cpoint start,cpoint end);/创建等待信号cwaitsingaltool(cdiagram* m);5.4.4.发送信号工具类(csendsingaltool)文档class csendsingaltool : public ccreatetool public:csendsingaltool(cdiagram* m);void update(cpoint start,cpoint end); /更新发送信号celement* create(cpoint start,cpoint end); /创建发送信号;5.4.5.同步条工具类(csynchronousbartool)文档class csynchronousbartool : public ccreatetool public:celement* create(cpoint start,cpoint end); /创建同步条void update(cpoint start,cpoint end); /更新同步条csynchronousbartool(cdiagram* m);5.4.6.判定工具类(cjudgepointtool)文档class cjudgepointtool : public ccreatetool public:celement* create(cpoint start,cpoint end); /创建判定void update(cpoint start,cpoint end); /更新判定cjudgepointtool(cdiagram* m);5.4.7.状态迁移工具类(carrowtool)文档#include creattool.hclass carrowtool : public ccreatetool /状态迁移类public:celement* create(cpoint start,cpoint end); /创建状态迁移carrowtool(cdiagram* m);void update(cpoint start,cpoint end);/更新状态迁移;5.4.8.终点工具类(cendtool)文档class cendtool : public ccreatetool public:void update(cpoint start,cpoint end); /更新终点cendtool(cdiagram* d);celement* create(cpoint p1,cpoint p2); /创建终点;5.5.图元类文档5.5.1.起点类(cstart)文档class cstart : public celement /起点类public:void move(int vx,int vy); /移动起点int findcontrol(cpoint pos);/判断点到哪个控制点bool contains(cpoint pos); /是否点到起点void draw(cdc* pdc); /画起点cstart(cpoint start,cpoint end);/生成起点;5.5.2.活动状态类(cactivestatus)文档class cactivestatus : public celement /活动状态类public:void move(int vx,int vy);/移动活动状态void draw(cdc* pdc); /画活动状态bool contains(cpoint pos);/是否点到活动状态int findcontrol(cpoint pos);/判断点到哪个控制点cactivestatus(cpoint start,cpoint end);/生成活动状态;5.5.3.等待信号类(cwaitsingal)文档class cwaitsingal : public celement public:bool m_wait_l,m_wait_r; /2种等待信号public:void move(int cx,int cy);/移动等待信号cwaitsingal(cpoint start,cpoint end);/生成等待信号void draw(cdc* pdc); /画等待信号int findcontrol(cpoint pos); /判断点到哪个控制点bool contains(cpoint pos); /是否点到等待信号;5.5.4.发送信号类(csendsingal)文档class csendsingal : public celement public:void draw(cdc* pdc);/画发送信号void move(int vx,int vy);/移动发送信号int findcontrol(cpoint pos); /判断点到哪个控制点bool contains(cpoint pos);/是否点到发送信号csendsingal(cpoint start, cpoint end);/生成发送信号;5.5.5.同步条类(csynchronousbar)文档class csynchronousbar : public celement public:int findcontrol(cpoint pos);/判断点到哪个控制点void draw(cdc* pdc); /画同步条csynchronousbar(cpoint start,cpoint end);/生成同步条void move(int cx,int cy); /移动同步条bool contains(cpoint pos);/是否点到同步条;5.5.6.判定类(cjudgepoint)文档class cjudgepoint : public celement public: void move(int vx,int vy);/移动判定void draw(cdc* pdc); /画判定int findcontrol(cpoint pos); /判断点到哪个控制点bool contains(cpoint pos);/是否点到判定cjudgepoint(cpoint start,cpoint end); /生成判定;5.5.7.状态迁移类(carrow)文档class carrow : public celement public:void move(int cx,int cy); /移动状态迁移int findcontrol(cpoint pos); /判断点到哪个控制点void draw(cdc* pdc); /画状态迁移bool contains(cpoint pos); /是否点到状态迁移carrow(cpoint start,cpoint end); /生成状态迁移;5.5.8.终点类(cend)文档class cend : public celement public:int findcontrol(cpoint pos);/判断点到哪个控制点void move(int vx,int vy); /移动终点bool contains(cpoint pos);/是否点到终点void draw(cdc* pdc); /画终点cend(cpoint p1,cpoint p2); /生成终点;5.6.视图类(cactivechartview)文档class cactivechartview : public cviewpublic:bool m_lbtn; /判断左键是否按下bool flag8; /标志着按下了哪个图元菜单bool m_edit; /判断是否在对图元上的文本进行编辑bool m_wait_l,m_wait_r; /2种等待信号cpoint m_start;/临时保存起点cpoint m_end; /临时保存终点ctool* m_pcreattool; /创建工具类指针ctool* m_pedittool; /编辑工具类指针cdiagram* m_d; /保存刚建立的图形 cedit* m_pedit; /celement* m_pselelem; /指向双击的图元,要在上面编辑文本int m_selindex; /双击选中图元在数组中的位置int m_checkctrl; /记录选中的控制点public:virtual void ondraw(cdc* pdc); / overridden to draw this viewvoid drawarrow(cdc* pdc); /画状态迁移void drawsynchronousbar(cdc* pdc);/画同步条void drawjudgepoint(cdc* pdc); /画判定void drawsendsingal(cdc* pdc); /画发送信号void drawwaitsingal(cdc* pdc); /画等待信号void drawactivestatus(cdc* pdc);/画活动状态void drawendpoint(cdc* pdc);/画终点void drawstartpoint(cdc* pdc); /画起点void focus(celement* m_elem,int m_focus);/使图元获得焦点void highlight(celement* e); /高亮显示图元void setedittool(cdiagram* m); /重置编辑工具指针void recordpoint(cpoint start,cpoint end);/记录图元两个点afx_msg void onlbuttondown(uint nflags, cpoint point);/鼠标左键afx_msg void onmousemove(uint nflags, cpoint point); /鼠标移动afx_msg void on
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吉林省长春市绿园区经开实验小学2024-2025学年小升初数学综合练习卷含解析
- 湖北省襄樊市2024-2025学年高三一模金卷物理试题分项解析版含解析
- 浙江商业职业技术学院《精算数学》2023-2024学年第二学期期末试卷
- 上海市闵行八校2025年高三下学期第一次周考英语试题含解析
- 山东化工职业学院《电机原理及其运行与维护》2023-2024学年第二学期期末试卷
- 郑州理工职业学院《数学模型与数学实验》2023-2024学年第二学期期末试卷
- 江西应用技术职业学院《建筑给排水工程课程设计》2023-2024学年第二学期期末试卷
- 山东省临沂市19中2024-2025学年高考二轮物理试题1-4月复习专号数理报含解析
- 专题24 四边形压轴综合(3大考点)2022-2024年中考数学真题分类
- 审计个人工作述职报告(7篇)
- LOTO上锁挂牌培训资料课件
- DB63-T 1800-2020盐湖卤水矿堤坝工程施工技术规范
- 公路工程施工现场安全检查手册
- 初三任务型阅读公开课一等奖省优质课大赛获奖课件
- 财务会计费用原始凭证分割单
- 清淤工程施工记录表
- 矩阵理论讲义第四章内积空间
- 货物采购服务方案
- 初中英语 沪教牛津版 8B U6-1 Reading Head to head 课件
- GB∕T 20808-2022 纸巾
- 祖国不会忘记合唱谱(1)
评论
0/150
提交评论