流程图软件设计报告-面向对象设计_第1页
流程图软件设计报告-面向对象设计_第2页
流程图软件设计报告-面向对象设计_第3页
流程图软件设计报告-面向对象设计_第4页
流程图软件设计报告-面向对象设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

高级语言程序设计课程设计 流程图编辑器 指导老师 陈彩 2017 11 19 组长 刘甜 组员 林菁 董宁 1 目录 1 题目简述 3 1 1 菜单项的设置及其功能 3 1 2 编辑功能的实现要求 3 1 3 跟踪执行的实现要求 3 2 需求分析 4 2 1 用例 4 2 1 1 用例图 4 2 1 2 用例描述 5 2 1 3 用例标识 8 2 2 动态特征 12 2 2 1 时序图 12 2 3 静态特征 13 2 3 1 领域类图 13 3 静态建模 15 3 1 类图 15 3 2 类说明 16 4 动态建模 16 4 1 时序图 17 4 1 1 图元的创建 17 4 1 2 图元的编辑 18 4 1 3 图元的高亮 19 4 1 4 图元的处理 20 4 2 活动图 21 4 3 状态图 23 5 系统实现 25 5 1 图元基类 25 5 2 图元管理类 26 5 3 图元工厂 27 5 4 图元实体类 28 5 5 体现访问者模式 选择处理类 28 5 6 作为图元部分的调整节点单独作为一个类 29 6 面向对象技术分析 30 6 1 软件复用 两个地方体现 30 6 1 1 图元基类 30 6 1 2 节点类作为单独的一个类 成为图元的组成部分 30 6 2 多态性 两个地方体现 30 2 6 2 1 图元基类 30 6 2 2 访问者模式 30 6 3 良好的封装性 两个地方体现 31 6 3 1 分工明确 三个 31 6 3 2 成员变量全部采用 private 属性 31 6 4 良好的可扩展性 31 6 4 1 应用了 CObArray 31 6 4 2 应用了访问者模式 32 6 5 良好的可维护性 32 6 6 良好的健壮性 32 6 7 采用了工厂模式 32 6 8 采用了访问者模式 两个 32 6 9 能够采用组合绝不用继承 32 6 9 1 关节点对象是图元对象部分 33 6 9 2 菱形处理对象是菱形对象的部分 33 6 9 3 长方形处理对象是长方形图元对象的部分 33 6 9 3 图元对象是图元管理对象的部分 33 7 总结提高 33 7 1 刘甜总结 33 7 1 1 体会收获 33 7 1 2 遇到的问题以及解决方案 3 个重要的 33 7 2 林菁 34 7 3 董宁 34 7 4 小组得分 35 3 1 题目简述题目简述 本设计系统要求设计一个程序流程图编辑软件 实现人机交互的功能 用不同图元分别表示起止 点 输入输出框 处理框 判断框 连接点 用箭头表示控制流 画出流程图并在流程图中输入变量 实现其中的计算功能 1 1 菜单项的设置及其功能菜单项的设置及其功能 1 图元创建 分别支持起止点 输入输出框 处理框 判断框 连接点 控制流的创建 2 起点选择 用户通过鼠标指定某个输出框 处理框或判定框 作为选中的起点 3 终点选择 用户通过鼠标指定某个输出框 处理框或判定框 作为选中的终点 4 跟踪执行 高亮度依次显示从起点到终点的所有控制流 1 2 编辑功能的实现要求编辑功能的实现要求 1 图元的创建 菜单选择后 新图元出现在画面中 2 控制流的创建 用鼠标按下来指定起点 鼠标释放来指定终点 3 图元的移动 用鼠标拖动图元 控制流随起点和终点的图元移动 4 图元的删除 选中图元 按 del 键 而且没有起点或终点的控制流同时被删除 5 图元的文字编辑 双击图元调用包含编辑控件的对话框 1 3 跟踪执行的实现要求跟踪执行的实现要求 1 输入输出框 接收用户输入 包含变量名称 变量的值 输出消息对话框的内容 2 逻辑计算 表达式按照逻辑进行自动求值计算 分支选择由条件表达式结果决定 3 控制流显示 高亮度依次显示从起点到终点的所有控制流 4 正文部分 五号宋体 首行缩进两个汉字 两端对齐 行间单倍距 简明扼要引入题目 使能开始分析与设计过程 组织内容时根据需要细分小节 2 需求分析需求分析 2 1 用例用例 2 1 1 用例图用例图 5 2 1 2 用例描述用例描述 创建图形 用户创建系统 1 要求创建 2 选择矩形 3 选择椭圆 4 选择菱形 5 选择箭头 6 选择输入框 1 创建空白图元 2 创建矩形 3 创建椭圆 4 创建菱形 5 创建箭头 6 创建输入框 创建矩形 用户创建系统 1 选择左上角 2 选择右下角 1 记录 2 创建矩形并记录 创建椭圆 用户创建系统 1 选择左上角 2 选择右下角 1 记录 2 定义了椭圆的外切矩形 创建椭圆并记录 创建菱形 用户创建系统 1 选择左上角 2 选择右下角 1 记录 2 定义了客户区 选择客户区各边中点 创建菱 形并记录 创建箭头 用户创建系统 1 选择一个图元 2 用鼠标拖动到另一个图元 放开 1 记录 2 判断是否可以创建 可以则创建一条由初始图 元指向末端图元的带箭头直线 并且记录下带 箭头直线以及它相连的两个图元 6 创建输入框 用户创建系统 1 选择左上角 2 选择右下角 1 记录 2 创建客户区 客户区纵坐标不变 横坐标作相 应变化 创建输入框并记录 编辑图形 用户创建系统 1 选择图形 2 选择矩形 3 选择椭圆 4 选择菱形 5 选择箭头 6 选择输入框 1 显示图形 2 编辑矩形 3 编辑椭圆 4 编辑菱形 5 编辑箭头 6 编辑输入框 编辑矩形 用户编辑系统 1 双击矩形 2 编辑文字 1 进入矩形编辑界面 2 显示用户输入文字 编辑椭圆 用户编辑系统 1 双击椭圆 2 编辑文字 1 进入椭圆编辑界面 2 显示用户输入文字 编辑菱形 用户编辑系统 1 双击菱形 2 编辑文字 1 进入菱形编辑界面 2 显示用户输入文字 编辑箭头 用户编辑系统 1 选择点 2 拖动该点到另一个图元 1 获取该点坐标 2 如果合法 更改该点坐标 7 编辑输入框 用户编辑系统 1 双击输入框 2 编辑文字 1 进入输入框编辑界面 2 显示用户输入文字 删除图形 用户编辑系统 1 删除图形 2 选择矩形 3 选择椭圆 4 选择菱形 5 选择箭头 6 选择输入框 1 将图形删除 2 删除矩形 3 删除椭圆 4 删除菱形 5 删除箭头 6 删除输入框 删除矩形 用户编辑系统 1 选择矩形 2 按 delete 键 1 定位到矩形对象 记录 2 删除矩形对象 删除椭圆 用户编辑系统 1 选择椭圆 2 按 delete 键 1 定位到椭圆对象 记录 2 删除椭圆对象 删除菱形 用户编辑系统 1 选择菱形 2 按 delete 键 1 定位到菱形对象 记录 2 删除菱形对象 删除箭头 用户编辑系统 8 1 选择箭头 2 按 delete 键 1 定位到带箭头直线 记录 2 删除带箭头直线 删除输入框 用户编辑系统 1 选择输入框 2 按 delete 键 1 定位到输入框 记录 2 删除输入框 显示流程 用户总控制系统 1 选择开始流程 2 选择开始图元 3 选择结束图元 1 根据逻辑高亮控制流 2 判断合法起始图元高亮 3 高亮结束图元 开始高亮中间控制流 2 1 3 用例标识用例标识 用例名称创建图形用例 用例标识 参与者用户 简要说明启动创建图形 基本事件流用户界面要求创建图形 创建空图 提供选择要创建的图元 调用创建图元用例 前置条件用户启动程序主界面 用例名称创建矩形用例 用例标识 参与者用户 简要说明启动创建矩形 基本事件流用户鼠标选择左上角和右下角 界面显示矩形 创建矩形对象 前置条件已创建图形 用例名称创建椭圆用例 用例标识 9 参与者用户 简要说明启动创建椭圆 基本事件流用户鼠标选择左上角和右下角 界面显示椭圆的外接矩形 创建椭圆对象 前置条件已创建图形 用例名称创建菱形用例 用例标识 参与者用户 简要说明启动创建菱形 基本事件流用户鼠标选择客户区范围 确定客户区上 下 左和右的中点 作为菱形的顶点 创 建菱形对象 前置条件已创建图形 用例名称创建输入框用例 用例标识 参与者用户 简要说明启动创建输入框 基本事件流用户鼠标创建客户区 客户区纵坐标不变 横坐标作相应变化 创建输入框并记录 前置条件已创建图形 用例名称创建箭头用例 用例标识 参与者用户 简要说明创建带箭头直线 基本事件流用户鼠标选择一个图元 按住拖动到另一个图元 放开 创建带箭头的直线 前置条件已创建图形和相应图元 用例名称编辑图形用例 用例标识 参与者用户 简要说明编辑图形 基本事件流用户选择图形和图元 鼠标进行编辑 前置条件当前选择的图形 用例名称编辑矩形用例 10 用例标识 参与者用户 简要说明编辑矩形 基本事件流用户双击矩形框 编辑文字 前置条件当前选择的图形 用例名称编辑椭圆用例 用例标识 参与者用户 简要说明编辑椭圆 基本事件流用户双击椭圆 编辑文字 前置条件当前选择的图形 用例名称编辑菱形用例 用例标识 参与者用户 简要说明编辑菱形 基本事件流用户双击菱形 编辑文字 前置条件当前选择的图形 用例名称编辑箭头用例 用例标识 参与者用户 简要说明编辑带箭头直线 基本事件流用户选择直线 高亮该带箭头直线 鼠标拖动两端点或线移位 前置条件当前选择的图形 用例名称编辑输入框用例 用例标识 参与者用户 简要说明编辑输入框 基本事件流用户双击输入框 编辑文字 前置条件当前选择的图形 用例名称删除图形用例 11 用例标识 参与者用户 简要说明删除图形 基本事件流用户界面要求删除图形 提供选择要删除的图元 调用删除图元用例 前置条件用户启动程序主界面 用例名称删除矩形用例 用例标识 参与者用户 简要说明删除矩形 基本事件流用户鼠标点击到矩形 按 delete 键删除 前置条件当前选择的图形 用例名称删除椭圆用例 用例标识 参与者用户 简要说明删除椭圆 基本事件流用户鼠标点击到椭圆 按 delete 键删除 前置条件当前选择的图形 用例名称删除菱形用例 用例标识 参与者用户 简要说明删除菱形 基本事件流用户鼠标点击到菱形 按 delete 键删除 前置条件当前选择的图形 用例名称删除箭头用例 用例标识 参与者用户 简要说明删除矩形 基本事件流用户鼠标点击到带箭头的直线 按 delete 键删除 前置条件当前选择的图形 12 用例名称删除输入框用例 用例标识 参与者用户 简要说明删除输入框 基本事件流用户鼠标点击到输入框 按 delete 键删除 前置条件当前选择的图形 2 2 动态特征动态特征 2 2 1 时序图时序图 创建图形的过程 13 编辑图形的过程 2 3 静态特征静态特征 2 3 1 领域类图领域类图 详细的类图写在了后面 14 15 3 静态建模静态建模 3 1 类图类图 class System AddLozengeDeal AddLozengeDeal AddLozengeDeal highlightIndex int IsInputRight int bool IsOutputRight int bool CArrowhead m AdjustPoint int m FocusPoint int m Next CGraph m Previous CGraph AdjustFocusPoint void AdjustSize CPoint 是否标记 bool m hightlight 是否高亮 CPoint m Start 开始点 CPoint m End 结束点 CString m text 描述文字 CObArray m Points 该图元包含的所有连接点 CConnentPoint CString m type 表示类型 virtual void GetText CString virtual void SetText CString virtual void GetStartPoint CPoint virtual void GetEndPoint CPoint virtual void SetStartPoint CPoint virtual void SetEndPoint CPoint virtual bool IsIn CPoint virtual bool IsOn CPoint 26 virtual bool IsOn CConnectPoint pt virtual bool IsSelected CPoint virtual bool IsEditable virtual bool IsControlFlow virtual void SetPreviousGraph CGraph previousGraph virtual void SetNextgraph CGraph nextGraph virtual void SetIsMark bool isMark virtual void Draw CDC pdc 0 virtual void DrawFocus CDC pdc 0 virtual void Move int cx int cy 0 virtual void AdjustSize CPoint virtual void Serialize CArchive virtual void highlight CDC pdc public CGraph virtual CGraph 5 2 图元管理类图元管理类 管理类的主要作用就是维护一个存储了所有图元类包括箭头的数组 秉承着谁的数据谁管理的原则 管理类的出现 是把具体的内部数据与 View 视图类分开 作为 Doc 的存在 提高了封装性 安全性 而且应用这个数组 其实是扩展性的体现 public CGraphManager virtual CGraphManager public void DrawAll CDC pdc void DeleteAll void DeleteFocusGraph void DeleteGraphAt int ID void DrawHightlight CDC pdc bool SetFocusGraphID CPoint bool IsAdjustSize CPoint void AdjustSize CPoint void Move int cx int cy CGraph GetStart CGraph GetGraphAt int ID CGraph GetFocusGraph 27 void AddGraph CGraph graph void GetInput int GetGraphSum void Choose int SearchPath void DrawHightLight CDC pdc void highlight CGraph Arrow CGraph findNextArrow CGraph C int num void choose CGraph G int calculate void SetOutput private void CheckLinkGraph CGraph graph CObArray m Graphs int m FocusID CString Text Add Minus Right Wrong CPathManager m PathManager CString Right1 Left1 option 5 3 图元工厂图元工厂 这个就体现了老师说的的工厂模式 减少了用户的负担 只需要点击就有图元生成 提高了封装性安 全性 public CGraphFactory virtual CGraphFactory public CGraph CreateJudgeDiamond CGraph CreateProcessDiamond CGraph CreateRectangle CGraph CreateControlFlow CGraph CreateLine CGraph CreateArrowLine CGraph CreateEllipse CGraph CreateStart CGraph CreateEnd 28 5 4 图元实体类图元实体类 由于很多并且大同小异 所以此处只例举一种 这个类是自管理的 那么有两种数据被了出去 一种 是调整节点 也就是可以放缩的那些关键节点 另外还有一个功能类也被了出去 就是下面 5 5 介绍 的体现了访问者模式的处理类 public CRectangle virtual CRectangle public void Draw CDC pdc void DrawFocus CDC pdc void Move int cx int cy void AdjustSize CPoint void Serialize CArchive bool IsIn CPoint bool IsOn CPoint bool IsOn CConnectPoint pt int GetAdjustPoint private void AdjustStartAndEnd void AdjustFocusPoint private int m AdjustPoint 5 5 体现访问者模式 选择处理类体现访问者模式 选择处理类 考虑到本代码的可扩展性 增加了这个类 这样用户可以在我公司定制流程图 可以定制多种菱形 多种长方形处理类的代码 那么不论用户想处理公猪母猪多少斤可以出圈 或者是阿尔法贝塔剪枝问 题都是没问题的 怎么实现的呢 我们提供了一个重要的接口 这个借口是个 Index 可以指示我下一个选项是谁 也 就是我选择谁 比如我固定选择第一个 或者如果加法我选左边 减法我选右边 再或者我根据我接 收到的消息来进行选择 他可以很复杂 那么就需要多一些方法 也可以很简单 29 public LozengeDeal void LozengeDeal void virtual bool IsInputRight virtual bool IsOutputRight virtual int highlightIndex virtual void setM text CGraph Graph private int input output 5 6 作为图元部分的调整节点单独作为一个类作为图元部分的调整节点单独作为一个类 由于考虑到所有的节点都需要用到这么一个类 正如老师所说 可以组合不要继承 于是这个不应该 放到父类里面 因为从逻辑上来讲 他是我的组成部分 很正确 public CConnectPoint virtual CConnectPoint public void Draw CDC pdc void SetPoint CPoint CPoint GetPoint bool IsOn CPoint void SetType bool type void Serialize CArchive private CPoint m Point bool m type 30 6 面向对象技术分析面向对象技术分析 6 1 软件复用 两个地方体现 软件复用 两个地方体现 6 1 1 图元基类图元基类 设置了一个图元基类 能够使得图元继承自这个父类 由于图元的共有代码很多 比如类型属性 比如文本内容属性 以及很多其他的方法 比如 getset 方法 还有很多共有的接口 比如调整位置 比如画出来等等 所以这个继承很重要 增加了代码复用 也是多态的体现 因为图元类存储后取出 来会向上转化成父类 这时用接口中的方法 那么就会根据子类的代码来实现 是很好的多态体现 6 1 2 节点类作为单独的一个类 成为图元的组成部分节点类作为单独的一个类 成为图元的组成部分 调节图元的时候 在关键点会画出来小方块 不同的图元有不同的小方块 那么我们可以单独把这个 方块归为一类 图元都含有这个部分 但是又不能作为父类被继承 作为组合关系也比继承要符合逻 辑 所以把这个实体抽象成图元的部分 会大大增加代码复用 6 2 多态性 两个地方体现 多态性 两个地方体现 我认为多态就有使得软件复用比例提高的功能 但是由于其他的比如继承也有软件复用的功能 所 以就分开写了 6 2 1 图元基类图元基类 事实上图元基类就是凭借多态这个作用增加了他的代码复用程度 用一些方法不是虚函数 这是他 的一部分复用优点 同时又有虚函数在不同的图元当中的个性化 呢么这就是借助于多态实现了接口 的复用 从 COrray 当中取出来的指针会被强转成父类 其中的一些方法比如画出来的 Draw 方法 就是接口 如果调用父类对象指针的 Draw 方法 会直接调用子类的 Draw 方法 那么这就是不同的 对象会以不同的行为响应同一个消息 类似的还有移动 还有放大缩小 都是借由一个通用的父类实 现的 6 2 2 访问者模式访问者模式 这个如同上面的图元基类一样 也是借由接口体现了多态性 每个长方形 运行 以及菱形 判断 都有个单独的体现了访问者模式的部分类 这个类对于长方形图元来讲封装了如何处理数据 对于菱 31 形图元来讲封装了映射表 也就是哪一个控制流是我要选择的 那么当用户添加了一个图元 并且输 入了文字之后 他的处理类就可以根据该文字实例化 如果要在一个流程图中添加多种选择图元那么 就需要写多个菱形处理类 根据接收的文本对接口 长方形的处理接口 菱形的映射表接口 进行不 同的实例化 用户不需要关心我要把消息给谁 因为给的都是接口 那么这就是不同的对象会以不同 的行为响应同一个消息 也就是多态性的体现 6 3 良好的封装性 两个地方体现 良好的封装性 两个地方体现 6 3 1 分工明确 三个 分工明确 三个 图元的的编辑功能是通过 View 对象实例化了 Doc 对象 通过 Doc 对象调用管理类 管理类调用图元 类 图元类如果有必要 比如调整大小 调用关节点类来实现的 可见他们的耦合性已经最低 图元的增加是通过 View 对象实例化了 Doc 对象 通过 Doc 对象调用 Factory 里面的方法生成了一个 图元 获得其地址 再传递给管理类 让管理类把这个地址作为元素 增加到数组中 其实相当于通 过 Doc 对象进行了管理类与工厂类的消息传递 流程图处理 是通过 View 对象实例化了 Doc 对象 通过 Doc 对象调用了管理类 管理类调用图元类 图元类调用他的部分 也就是图元处理类 进行数据流的选择 以及数据的处理 高亮是通过菱形的 选择决定的 箭头有是否高亮的标志位 在进行数据处理的过程中会设置 之后直接画就可以了 实例化是各个图元会把自己的数据实例化 它的组成部分关节点会把自己的数据实例化 这也是通过 Doc 类调用管理类 管理类再去逐个调用图元类实现的 这样封装 自己的数据自己管理 大大降低了耦合性 通过对象的通信来交流信息 是封装好了之后 协同工作的必要步骤 所以本设计具有良好的封装性 6 3 2 成员变量全部采用成员变量全部采用 private 属性属性 采用 private 属性 需要在使用该对象的时候调用其提供的 getset 方法才能读写数据 强迫程序员思 考 我这个属性要不要被读取 是在实例化的时候一次性赋值 还是可以被后来修改 这样进一步降 低了耦合性 也降低了出错的几率 6 4 良好的可扩展性良好的可扩展性 6 4 1 应用了应用了 CObArray 现有图元组织在图元管理类中 并且利用了 CObArray 来存储其指针 可以安全地增删改指针数组 增加了扩展性 也就是说 我们的图元可以想加多少个就加多少个 32 6 4 2 应用了访问者模式应用了访问者模式 可以看出来 在菱形图元 以及长方形图元的实体里面 都包含了一个专门的处理对象 而且可以有 很多种处理对象 但是一个图元只能确定一种 这就表示 用户可以在我们这里定制流程图 可以处 理多种复杂的流程图数据流高亮显示 只要处理类写好 6 5 良好的可维护性良好的可维护性 可维护性包含了之前的可扩展性 由于可扩展性是我们一个突出的优点 于是单独开辟一个小节 这里的可维护性指的是本代码的方法分得很细 所以如果出了问题很容易 debug 而且用了 CObArray 模板 减少了数组问题 而且类名的可读性高 但是由于没有专门做测试 所以具体的数值不能给出 6 6 良好的健壮性良好的健壮性 由于建立在 MFC 框架下 以及用了 CObArray 模板 相当于用了大量成熟代码 健壮性高于自己写 6 7 采用了工厂模式采用了工厂模式 创建图元这个功能用到了工厂模式 因为点击生成图元 很容易想到工厂模式 事实上一开始没有 用 后来课上老师介绍了 我觉得这个创建可以单独分出去作为工厂模式 这样降低了耦合性 同时 提高了可扩展性 比如用户提出我还要加一种图元 你们没有的 那么如果有个单独的工厂类 会更 加清晰 6 8 采用了访问者模式 两个 采用了访问者模式 两个 老师上课讲到了这个访问者模式 我觉得是我需要的 因为我的处理以及选择部分的确是变化很多 一张流程图可能有多种选择菱形 比如母猪大于多少斤出圈 公猪大于多少斤出圈 小猪出生体重多 少健康 或者是加减乘除 以及小于多少 循环自加一 都可以放到一个流程图里面 面对这样复杂 的需求 就需要不断根据用户再图元上的输入更换图元实体中关于选择 关于处理的部分 所以我们 有两个访问者模式的类 6 9 能够采用组合绝不用继承能够采用组合绝不用继承 事实上这里用的是聚合 不过只是对象指针与真正对象的区别 关系到我不要了需要释放空间 33 这一维护管理 以及生存周期 但是逻辑上来讲 还是整体与部分 用了两个整体与部分的关系 一个是关节点作为图元的部分 一个是访问者模式的处理类是图元 的部分 不能把这些放到父类中给图元继承 因为能用组合就可实现部分的功能 只需要这个功能的 话 拿过来用就可以 继承会带来麻烦 使得代码冗余 呢么整体部分的关系主要体现在下面四点 6 9 1 关节点对象是图元对象部分关节点对象是图元对象部分 6 9 2 菱形处理对象是菱形对象的部分菱形处理对象是菱形对象的部分 6 9 3 长方形处理对象是长方形图元对象的部分长方形处理对象是长方形图元对象的部分 6 9 3 图元对象是图元管理对象的部分图元对象是图元管理对象的部分 7 总结提高总结提高 7 1 刘甜总结刘甜总结 7 1 1 体会收获体会收获 本项目虽然并不大 但是包含了很多的面向对象设计的内容 所以能够把课程中学习的部分应用 到实践当中 第六节内容是我写的 可以看到我引用了很多上课的内容 因为很明显的体验就是 应 用这些 继承 组成 工程模式 访问者模式等等 的确是解决了书中说的软件危机 你把它模块化 之后 抽象各种关系 就可以把一件不能够完成的软件变得可能 或者是大大增加了工程效率 以及 可维护性 可扩展性 感觉学有所用 以前觉得代码能力重要 现在觉得更重要的是设计能力 7 1 2 遇到的问题以及解决方案 遇到的问题以及解决方案 3 个重要的 个重要的 1 调试的时候在 draw 函数下的断点不好调试 因为基本上是弹出来 然后就进入 draw 后来我想了 几种方法 可以在前面的数据都输入完毕 比如画图完了 在增加断点 先保存图元 调试的时候打 开 再调试 2 本程序缺少全面的判断用户行为的功能 因为在我的设计中 虽然增加了访问者模式的菱形处理类 并且限制了输入图元以及输出图元 但是我觉得应该增加一个箭头的处理类 用来判断连接的两个图 元是否

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论