一开始12关,最后一关我是按照要求画的,结果头歌系统一直不给过,最后时间到了,我画过了,和我一开始的是一样的,头歌系统说是效率分然后不给开,最后只有33.3分,对头歌很失望,这个系统有太多问题,无法接受这样的结果

面向对象分析的基本概念

类图关系

1.依赖(Dependence)
依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。类上面的图例中:People类依赖于Book类和Food类,Book类和Food类是作为类中方法的参数形式出现在People类中的。

2.关联(Association)
体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的。

3.聚合(Aggregation)
聚合关系是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

4.组合(Composition)
相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。在下图的例子中,People与Soul、Body之间是组合关系,当人的生命周期开始时,必须同时有灵魂和肉体;当人的生命周期结束时,灵魂肉体随之消亡;无论是灵魂还是肉体,都不能单独存在,他们必须作为人的组成部分存在。

5.继承(Generalization)
继承表示类与类(或者接口与接口)之间的父子关系。在java中,用关键字extends表示继承关系。UML图例中,继承关系用实线+空心箭头表示,箭头指向父类。

6.实现(Implementation)
表示一个类实现一个或多个接口的方法。接口定义好操作的集合,由实现类去完成接口的具体操作。在java中使用implements表示。UML图例中,实现关系用虚线+空心箭头表示,箭头指向接口。

本案例对象分析表

对象 属性 操作
客户 id(String) saveUserInfo,getHotelInfo,cancelOrder,getOrderInfo,submitOrder,assessHotelService
酒店客房 id(String)、hotelId(String)、status(int) addRoom,deleteRoom,updateRoom,getRoom
软件管理员 id(String) updateUserInfo(userId)
酒店工作人员 id(String) updateRoomInfo,carryUserOrder,maintainHotelInfo
软件营销人员 id(String) analysisOrderInfo,cancelOrder
订单 id(String) roomId(String) status(int) addr(String) amount(int) orderPrice(decimal) addOrder, deleteOrder, updateOrder, getOrder
软件营销人员 id(String) analysisOrderInfo,cancelOrder

系统显示酒店当前的基本信息,酒店工作人员选择需要修改的项目,酒店工作人员输入当前待修改项目的值,系统显示修改过的酒店基本信息,酒店工作人员重复2~4步,直到所有待修改的项目完成,酒店工作人员提交修改过的酒店基本信息,系统记录新的酒店基本信息。以下是酒店工作人员在维护酒店基本信息时的过程图

7.泳道:将活动中的具体活动按照负责进行该活动的对象进行分区,一条泳道中的所有活动都由一个对象执行。
8.并发:指的是同一时间间隔中,系统内有两个或多个事件一起发生。在并发情况下,不可以对多个事件的发生顺序做预测。
9.分叉节点:是从线性流程进入并发过程的过渡节点,他拥有一个进入控制流和多个离开控制流,分叉节点的所有离开流程是并发关系,分叉节点在活动图中表示为一根粗横线。
10.结合节点:功能上与合并节点相似,但有关键区别。合并节点没有等待和同步,但是结合节点的各个进入控制流有并发关系,他们再系统中同时运行。在各个支流收束时,为了保证数据的统一性,先到达结合节点的控制流必须等待直到所有的流程全部到达这个结合节点后才继续进行,转移到离开控制流所指向的动作。也是用一根粗横线表示。
11.对象流:很少使用!当活动图中描述的过程具有一些对关键对象的属性要求时,通过添加对象流的放发可以在活动图中呈现操作的对象。如果想表现出对象流,必须先绘制泳道,且对象应该作为泳道的负责对象出现,在某些关键动作前后,设计人员可以通过加入对象的状态描述来呈现对象状态,描述文字应该简明扼要。
12.扩展区域:用来表示循环。具体做法:在活动图中围绕一个区域画一个虚线框来表示扩展区域。区域要有输入输出的定义,输入输出的集合表示为数组。如果扩展区域运行时可以并发执行,也有可能多次迭代并发执行,直到迭代工作执行完毕,集合中的每个元素对应的处理成一个输出元素,全部输出元素的集合对应输入时的顺序同样表示为一个数组,然后向下执行。

详细说明

状态依次为进入酒店管理系统主页、酒店业务主页、订房服务、满房(有空房)、处理订单。
开始之后进入网络,画出进入酒店管理系统主页的状态,下一步画出酒店业务状态,之后选择服务,画出订房服务状态,之后出现分支,状态分别为满房和有空房,在分支汇合时,汇合条件为无法预订和提交订房订单,下一步画出处理订单状态,最后结束。

类图简单介绍

1.类图分为三部分,依次是类名、属性、方法
2.以<<开头和以>>结尾的为注释信息
3.修饰符+代表public,-代表private,#代表protected,什么都没有代表包可见。
4.带下划线的属性或方法代表是静态的。

类图关系

1.依赖(Dependence)
依赖关系的定义为:对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。定义比较晦涩难懂,但在java中的表现还是比较直观的:类A当中使用了类B,其中类B是作为类A的方法参数、方法中的局部变量、或者静态方法调用。类上面的图例中:People类依赖于Book类和Food类,Book类和Food类是作为类中方法的参数形式出现在People类中的。

2.关联(Association)
体现的是两个类、或者类与接口之间语义级别的一种强依赖关系,比如我和我的朋友;这种关系比依赖更强、不存在依赖关系的偶然性、关系也不是临时性的,一般是长期性的,而且双方的关系一般是平等的、关联可以是单向、双向的。

3.聚合(Aggregation)
聚合关系是关联关系的一种,耦合度强于关联,他们的代码表现是相同的,仅仅是在语义上有所区别:关联关系的对象间是相互独立的,而聚合关系的对象之间存在着包容关系,他们之间是“整体-个体”的相互关系。

4.组合(Composition)
相比于聚合,组合是一种耦合度更强的关联关系。存在组合关系的类表示“整体-部分”的关联关系,“整体”负责“部分”的生命周期,他们之间是共生共死的;并且“部分”单独存在时没有任何意义。在下图的例子中,People与Soul、Body之间是组合关系,当人的生命周期开始时,必须同时有灵魂和肉体;当人的生命周期结束时,灵魂肉体随之消亡;无论是灵魂还是肉体,都不能单独存在,他们必须作为人的组成部分存在。

5.继承(Generalization)
继承表示类与类(或者接口与接口)之间的父子关系。在java中,用关键字extends表示继承关系。UML图例中,继承关系用实线+空心箭头表示,箭头指向父类。

6.实现(Implementation)
表示一个类实现一个或多个接口的方法。接口定义好操作的集合,由实现类去完成接口的具体操作。在java中使用implements表示。UML图例中,实现关系用虚线+空心箭头表示,箭头指向接口。

闯关要求

使用starUML工具,请画出客户类及其属性、操作,属性标出id即可(private),操作有维护个人基本信息、获取酒店信息、撤销订单、查看订单信息、提交订单、评价酒店服务(见下表)。

请注意:
若您的文件中有与本次测评无关的类,请在Model Explorer中将本次测评的类置顶(选中此类,右键,点击Move Up)

本案例对象分析表

对象 属性 操作
客户 id(String) saveUserInfo,getHotelInfo,cancelOrder,getOrderInfo,submitOrder,assessHotelService
酒店客房 id(String)、hotelId(String)、status(int) addRoom,deleteRoom,updateRoom,getRoom
软件管理员 id(String) updateUserInfo(userId)
酒店工作人员 id(String) updateRoomInfo,carryUserOrder,maintainHotelInfo
软件营销人员 id(String) analysisOrderInfo,cancelOrder
订单 id(String) roomId(String) status(int) addr(String) amount(int) orderPrice(decimal) addOrder, deleteOrder, updateOrder, getOrder

闯关详细说明

属性为id,private,操作为saveUserInfo,getHotelInfo,cancelOrder,getOrderInfo,submitOrder,assessHotelService.操作均为public。
将画好的模型保存到workspace/myshixun/submit/submit_step1/下,并命名为step1,格式为mdj。

面向对象分析(实验三)相关推荐

  1. 计算机网络工程实验分析与体会_《软件工程》面向对象分析实验

    面向对象分析实验报告要求 1目的与要求: 1)系统学习和理解面向对象软件工程分析与设计阶段的基本任务.过程以及基本概念.原理.技术和方法: 2)掌握OOA阶段的建模方法和建模工具,如对象模型.动态模型 ...

  2. linux内核启动分析 三,Linux内核分析 实验三:跟踪分析Linux内核的启动过程

    贺邦 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 http://mooc.study.163.com/course/USTC-1000029000 一. 实验过程 ...

  3. 面向对象分析的三个模型?

    面向对象分析的三个模型分别是对象模型.动态模型和功能模型.对象模型是最基本.最重要.最核心的.

  4. 20155229实验三 《Java面向对象程序设计实验三 敏捷开发与XP实践 》实验报告

    实验题目 1.在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能. 2.下载搭档实验二的Complex代 ...

  5. 面向对象分析的三个模型与5个层次

    在面向对象分析中,主要由对象模型.动态模型和功能模型组成.对象模型是最基本.最重要.最核心的. 面向对象建模得到的模型包含系统的3个要素,即静态结构(对象模型).交互次序(动态模型)和数据变换(功能模 ...

  6. 面向对象分析的三个模型

    在面向对象分析中,主要由对象模型.动态模型和功能模型组成.对象模型是最基本.最重要.最核心的. 对象模型表示静态的.结构化的系统的"数据"性质. 对象模型是对模拟客观世界实体的对象 ...

  7. 算法设计与分析 实验三 回溯法求解地图填色问题

    回溯法求解地图填色问题 一.实验目的与要求 1.实验基本要求: 2.实验亮点: 二.实验内容与方法 三.实验步骤与过程 1.未优化的回溯: (1)算法描述: (2)编程实现 (3)运行并测试: 2.对 ...

  8. 算法设计与分析 实验三 动态规划算法

    实验3.<动态规划算法实验> 一.实验目的 掌握动态规划方法贪心算法思想 掌握最优子结构原理 了解动态规划一般问题 二.实验内容 编写一个简单的程序,解决0-1背包问题.设N=5,C=10 ...

  9. 算法设计与分析 实验三 贪心算法

    一. 实验目的和要求 1.掌握贪心算法的基本思想. 2.学习利用贪心算法设计和实现算法的方法. 3.了解利用替换法证明贪心策略是否能获得全局最优解的过程. 4.熟练掌握贪心算法在两个典型图搜索中的应用 ...

  10. linux内核分析实验三,linux内核分析第三次实验

    WIN10 CMD 启动虚拟WIFI 1.以管理员身份运行命令提示符: 快捷键win+R→输入cmd→回车 2.启用并设定虚拟WiFi网卡: 运行命令:netsh wlan set hostednet ...

最新文章

  1. android:关于主工程和library project
  2. python中的装饰器有哪些-Python中的@函数装饰器到底是什么?
  3. 目标检测——Faster R_CNN使用smooth L1作为bbox的回归损失函数原因
  4. 使用RxJava和SseEmitter进行服务器发送的事件
  5. flask ajax 文件上传,python flask使用ajax请求上载文件。文件为空
  6. html中如何把两行合并单元格,怎么把表格上下两行合并单元格合并
  7. C语言-基础入门-学习笔记(13):结构体
  8. LQ0264 鲁卡斯队列【精度计算】
  9. python selenium中析构方法报错sys.meta_path is None, Python is likely shutting down如何解决?
  10. word插入和删除水印
  11. Android 一款十分简洁、优雅的日记APP
  12. 基于SSM + MySQL的服饰服装购物平台系统的设计与实现源码+论文+包安装配置+讲解视频
  13. 开头的单词_c开头的英语单词三年级到六年级的英语单词记忆
  14. 枯燥的寒假生活(一) python爬虫模拟登录whu老教务系统获取期末考试成绩(已失效 , 老教务系统增加了新的反爬, 老教务系统已停用)
  15. 【顺序表】13 顺序表ADT模板设计及简单应用:将顺序表中前 m 个元素和后 n 个元素进行互换
  16. python 微信机器人 关键词_python-微信机器人之词云
  17. 如何引用阿里巴巴矢量图标库的图标
  18. 微信小程序-获取用户头像信息以及修改用户头像
  19. 项目:“表情包”制作---利用ffmpeg制作Gif动态图
  20. 单片机跑马灯程序c语言,MCS-51单片机控制跑马灯的三种方法

热门文章

  1. 软件测试面试题-测试基础篇
  2. (AI)联通logo练习
  3. 经纬度值绘制GPS轨迹图
  4. Science评论:深度学习助力高通量结构生物信息学
  5. 基于3D视觉和光幕测量技术的体积测量DWS设备,选择时要注意哪些要点?
  6. 逆春新包装,元气森林营收保卫战难胜
  7. Android Realm数据库多条件查询
  8. 1077.Kuchiguse (20)
  9. 使用Jprofiler分析OOM原因
  10. 特斯拉的小秘密:其净利润并非来自汽车销售?