1、计算机网络课件 制作人:谢希仁张 磊 博士,副教授第6章 面向对象分析课件制作人:谢希仁 面向对象的分析着重分析问题域和系统责任,确定问题的解决方案,暂时忽略与系统实现有关的问题,建立独立于实现的系统分析模型。面向对象分析的基本过程如下:(1)问题域分析,建立用例模型(2)发现和定义对象与类(3)识别对象的外部联系(4)建立系统的静态结构模型(5)建立系统的动态结构模型课件制作人:谢希仁6.1 建立用例模型的过程建立用例模型的过程找出拟建系统以外的Actorl与系统交互的人员;l与系统相连并交换信息的设备和其他系统;使用Use Case来描述Actor怎样使用系统以及系统向Actor提供什么功
2、能Use Case表示从外部用户角度观察的系统功能绘制Use Case图,并编写详细的Use Case描述。lUse Case图只能宏观地描述系统的功能;l每个功能的含义和具体实现步骤则以文本方式描述。课件制作人:谢希仁(1)某大学准备开发一个学生课程注册系统,学生可以使用该系统查询新学期将开设的课程和讲课教师情况,选择自己要学习的课程进行登记注册,并可以查询成绩单;(2)教师可以使用该系统查询新学期将开设的课程和选课学生情况,并可以登记成绩单;(3)注册管理员使用该系统进行注册管理,包括维护教师信息、学生信息和课程信息等。(4)在每个学期的开始,学生可以获得该学期的课程目录表,课程目录表列出
3、每门课程的所有信息,诸如基本信息、教师、开课系和选课条件等。课件制作人:谢希仁(5)新学期开始前两周为选课注册时间,在此期间学生可以选课注册,并且允许改变或取消注册申请。每个学生可以选择不超过4门课程,同时指定2门侯选课程以备主选课程未选上。每门课程最多不能超过10人,最少不能低于3人。(6)开学两周后注册管理员负责关闭课程注册,低于3人选课的课程将被取消,一旦学生的注册过程完毕,注册系统将有关信息提交收费系统以便学生付费。如果在实际注册过程中名额已满,系统将通知学生在提交课程表之前予以更改。(7)在学期结束时,学生可以存取系统查看电子成绩单。由于学生成绩属于敏感信息,系统必须提供必要的安全措
4、施以防非法存取。课件制作人:谢希仁l简单地说,角色是与系统交互的人或事。l所谓与系统交互意味着向系统发送消息,从系统中接收消息,或是与系统交换信息。有些角色可以初始化用例,有些角色则不然,仅仅参与用例,在某个时刻与用例进行通信。课件制作人:谢希仁 可以通过回答下列问题,进行系统角色的识别:l谁使用系统的功能?l谁需要借助系统完成日常工作?l谁来维护和管理系统,以保证系统正常工作?l系统控制的硬件设备有哪些?l系统需要与其他哪些系统交互?l谁对系统产生的结果感兴趣?课件制作人:谢希仁 在上述例子中,学生和教师使用系统完成课程注册和成绩登记等,注册管理员维护和管理教师、学生和课程的信息。另外,收费
5、系统存取已有的课程目录数据库,获得课程列表。课件制作人:谢希仁 用例代表一个完整的功能,如与角色通信、进行计算或在系统内工作等。用例描述了它所代表的功能的各个方面,即包含了用例执行期间可能发生的种种情况;用例和角色之间具有“关联”的连接关系,表示什么角色与该用例进行通信。用例具有以下的特征:l用例总是由角色初始化;l用例为角色提供值;l用例具有完全性,即不管其内部是如何实现的,只有最终产生了返回角色的结果,用例的执行才能完毕。课件制作人:谢希仁 实际上,从识别角色开始,发现用例的过程就已经开始了。对于已识别的角色,通过询问下列问题,可以发现用例:l角色需要从系统中获得什么功能?角色需要做什么?
6、l角色需要读取、产生、删除、修改或存储系统的某些信息吗?l系统中发生事件需要通知角色吗?角色需要通知系统某件事情吗?l系统需要的输入/输出信息是什么?这些信息从哪儿来到哪儿去?l采用什么实现方法满足某些特殊要求?课件制作人:谢希仁l选择课程-选择所教的课程,并获得学生名册;l登记成绩-在学期结束时,提交学生的课程成绩。课件制作人:谢希仁l注册课程-在学期开始进行选课注册,允许在一段时间内更改或删除,课程目录系统提供当前学期的所有可选课程列表;l查看成绩单-学生可以查看以前学期的电子成绩单。课件制作人:谢希仁l维护课程信息-在系统中增加、修改和删除课程信息;l维护学生信息-在系统中增加、修改和删
7、除学生信息;l维护教师信息-在系统中增加、修改和删除教师信息。l关闭注册-删除少于3人的课程,并由付费系统通知学生缴费。课件制作人:谢希仁l登录-使用此系统的人员需要进行登录,以验证其身份和权限。课件制作人:谢希仁课件制作人:谢希仁【实例】某公司的总部设在北京,在上海、广州、成都和西安有分支机构,全公司接近700名员工。鉴于业务和员工团队的快速发展,为了提升整体工作效率。该公司准备开发一套员工报帐系统,取代原来的人工处理方式。课件制作人:谢希仁l 报帐系统将支持员工记录(或预见)日常业务活动的开销,并自动结算每个月应该返还员工的补偿金额,补偿金额会直接存入员工的工资帐户中。l 报帐系统应具有基
8、于先进技术的图形化界面,员工可以输入业务活动的种类和简短描述,活动开销的类别,选择不同的支付方式,并可以生成灵活的报表。l 报帐系统应该有能力根据员工提供的信息和要求返还补偿额,同时保存全部员工的报帐信息。员工可以通过他们自己的电脑来使用报帐系统。由于牵涉到财务信息,报帐系统必须提供可信的安全机制。员工银行系统课件制作人:谢希仁l 该公司现有一套基于微软SQL SERVER的人事管理数据库系统,记录员工的基本信息和团队的组织结构。报帐系统将和现有人事管理数据库系统协同工作,需要引入人事管理数据库系统中的部分信息,但不会更新其内容。l 通过报帐系统,员工能够在出差前(提前两天)按照规定的额度向公
9、司申请借款,相关的经理人员能够通过报帐系统批复或拒绝。报帐系统应在相关负责人批复之后通知该员工提取现金或确认相应款项已经划入指定信用卡(根据员工的要求);员工可以通过报帐系统报销合理的业务活动费用。人事管理数据库经理课件制作人:谢希仁l 财务部门将指定一位报帐系统管理员监管拟建系统中的信息,负责初始设置和维护特定的分类报账额度策略,并能够定期或随机地向各部门负责人提交报帐情况的统计报告。l 报帐系统在每月的25日对通过审批的报帐申请自动作一次结算,并以电子邮件的方式通知应该得到补偿的员工,同时生成一份统计报告传送给财务部门的系统监管人员。报账系统管理员内部邮件系统财务系统监督员系统时钟课件制作
10、人:谢希仁【员工报帐系统】建立Use Case图n步骤1:找出拟建系统以外的Actor员工经理报账系统管理员人事管理数据库内部邮件系统银行系统系统时钟财务系统监督员课件制作人:谢希仁n步骤2:发现Use Casen报帐系统将支持员工记录(或预见)日常业务活动的开销可以输入业务活动的种类和简短描述,活动开销的类别,选择不同的支付方式,并可以生成灵活的报表。n员工可以通过报帐系统报销合理的业务活动费用。n员工能够在出差前(提前两天)按照规定的额度向公司申请借款员工提交报销申请提交借款申请课件制作人:谢希仁n步骤2:发现Use Casen相关的经理人员能够通过报帐系统批复或拒绝。经理批复报账申请课件
11、制作人:谢希仁n步骤2:发现Use Casen财务部门将指定一位报帐系统管理员n监管拟建系统中的信息n负责初始设置和维护特定的分类报账额度策略n定期或随机地向各部门负责人提交报帐情况的统计报告。报账系统管理员完成日常维护调整报账额度制作统计报表课件制作人:谢希仁n步骤2:发现Use Casen报帐系统在每月的25日对通过审批的报帐申请自动作一次结算,并以电子邮件的方式通知应该得到补偿的员工,同时生成一份统计报告传送给财务部门的系统监管人员。财务系统监督员审核报账申请结算当月报销费用系统时钟课件制作人:谢希仁n步骤3:建立Use Case图n确定系统的责任、范围和边界,确定系统的需求员工提交报销
12、申请提交报销申请提交借款申请提交借款申请人事管理数据库批复报账申请批复报账申请经理内部邮件系统课件制作人:谢希仁n步骤3:建立Use Case图n确定系统的责任、范围和边界,确定系统的需求结算当月报销费用结算当月报销费用审核报账申请审核报账申请系统时钟财务系统监督员内部邮件系统银行系统课件制作人:谢希仁n步骤3:建立Use Case图n确定系统的责任、范围和边界,确定系统的需求完成日常维护完成日常维护调整报账额度调整报账额度制作统计报表制作统计报表报账系统管理员课件制作人:谢希仁6.2 建立问题域的对象与类模型建立问题域的对象与类模型l发现和定义对象类应以问题域和系统责任为出发点,正确地运用抽
13、象原则,尽可能全面地发现对象的因素,并对其进行检查和整理,最终得到系统的对象类。l可以在用例模型的基础上,通过识别实体类、边界类和控制类,从而发现和定义系统中的对象类。课件制作人:谢希仁l实体类代表系统中需要存储和管理的信息,通常是永久存在的。启发分析员发现实体类的因素包括:l人员:通常系统会涉及到各种各样的人员,我们需要考虑的是由系统保存和管理其信息的人员,如教师、学生等。l组织:在系统中发挥一定作用的组织机构,如系、班级等。l物品:需要由系统管理的物品,可以是有形或无形的,如课程等。课件制作人:谢希仁l设备:在系统中动态地运行、由系统进行监控或供系统使用的各种设备、仪表、机器、运输工具等。
14、l事件:需要由系统长期记忆的事件,如学生注册课程的记录等。l表格:这里的表格是广义的,可以是各种业务报表、统计表、申请表、身份证、商品订单、帐目、学生成绩单等,注意不要将原始的表格进行简单对应,应该是分析和整理后形成的映射一些现实事物的表格。课件制作人:谢希仁Professor 学校中讲课的教师Student 学校中注册课程的学生CourseCatalog 学校所有课程的目录CourseOffering 新学期课程的开设信息,如讲课教师、时间、地点等信息Course 课程的基本信息Schedule 学生在新学期选择登记的课程列表课件制作人:谢希仁l 边界类代表系统与角色的接口,在每一个用例中,
15、一个角色对应一个边界类。边界类收集来自角色的信息,并将其转换成实体类和控制类可以使用的中间接口。l 根据角色的不同类型,边界类可以是用户接口、系统接口和设备接口。课件制作人:谢希仁LoginForm 为教师、学生和注册管理员提供登录的操作RegisterCoursesForm 为学生提供选课注册的操作SelectTeachCoursesForm 为教师提供查看学生选课情况的操作MaintainProfessorsForm 为注册管理员提供维护教师信息的操作ViewReportForm 为学生提供成绩查询的操作SubmitGradesForm 为教师提供登记成绩的操作课件制作人:谢希仁Maint
16、ainStudentsForm 为注册管理员提供维护学生信息的操作CloseRegistrationForm 为注册管理员提供关闭注册的操作MaintainCoursesForm为注册管理员提供维护课程信息的操作BillingSystemNotice 提供与收费系统的信息交换接口课件制作人:谢希仁l控制类负责协调边界类和实体类,通常在现实世界中没有对应的事物,它负责接收边界类的信息,并将其分发给实体类。l控制类与用例存在着密切的关系,它在用例开始执行时创建,在用例结束时取消。一般来说,一个用例对应一个控制类。当用例比较复杂时,特别是产生分支事件流的情况下,也可以有多个控制类。课件制作人:谢希仁
17、RegisterCoursesControl 负责新学期学生的选 课登记ViewReportControl 负责学生成绩的查询SubmitGradesControl 负责学生成绩的登记SelectTeachCoursesControl 负责新学期课程的学生选择情况CloseRegistrationControl负责关闭课程注册课件制作人:谢希仁课件制作人:谢希仁(1)按照一般常识,找出对象的某些属性,如人员的姓名、性别、年龄、地址等;(2)认真研究问题域,找出对象的某些属性,如商品的条形码、学生的学号等;(3)根据系统责任的要求,找出对象的某些属性;(4)考虑对象需要系统保存和管理的信息,找出
18、对象的相应属性,如课程需要保存和管理的信息;课件制作人:谢希仁(5)对象为了在服务中实现其功能,需要增设一些属性;(6)识别对象需要区别的状态,考虑是否需要增加一个属性来区别这些状态;(7)确定属性表示整体与部分结构和实例连接。对于初步发现的属性,检查这些属性是否系统使用的特征、是否描述了对象本身的特征、是否可以通过继承得到、是否可以从其他属性直接导出等,对这些属性进行整理和筛选。课件制作人:谢希仁课件制作人:谢希仁6.3 识别对象的外部联系识别对象的外部联系 在找到系统的对象类之后,需要分析和认识各类对象之间的关系。对象与外部的关系有以下几种:(1)对象之间的分类关系,即泛化关系;(2)对象
19、之间的组成关系,即聚合关系;(3)对象之间的静态关系,即关联关系;(4)对象之间的动态关系,即依赖关系。课件制作人:谢希仁l泛化与特化的结构,也叫做分类结构。l继承性:特化类是泛化类的子类,泛化类是特化类的父类。基类表示了一个较为一般、普遍的概念,而每个子类则是它的某个特殊形态。l在分类结构中恰如其分地分配属性和服务:u共同的属性放在上层,而将特有的属性放在下层;u将共同的服务放在上层,而将特有的服务放在下层 l泛化关系有助于代码共享和复用。课件制作人:谢希仁 轮船、汽车和飞机都是交通工具,它们从交通工具类派生出来。因此,它们具有作为交通工具的共性(旅客容量、最大速度和公里耗油量等属性和启动、
20、驾驶等操作)。当然,它们可以有自己的属性和操作。比如飞机还拥有飞行高度属性和降落操作等。课件制作人:谢希仁l“发表的文章”和“接受的文章”是“文章”的特殊形态,而“文章”则是它们的一般化l“文章”对象所具有的属性和服务可自动地为“发表的文章”和“接受的文章”所继承。课件制作人:谢希仁课件制作人:谢希仁l是整体与部分结构,由属于不同类的成员聚合而形成新的类l一个整体可有多个部分,也有不同种类的部分 课件制作人:谢希仁l报社是由采访组、编辑室和印刷厂等几个部门组成l一个报社只有一个编辑室,一个印刷厂,但可以有一至多个采访组 课件制作人:谢希仁课件制作人:谢希仁l两个对象往往由于受制于相同的应用规则
21、而发生联系,这称为实例连接。l实例连接也表示一个对象实例不存在的情况下,另一个对象是否仍有意义。课件制作人:谢希仁课件制作人:谢希仁l两个对象之间存在的由于通信所需要而形成的联系,这称为消息连接l消息连接表示从一个对象发送消息到另一个对象,由那个对象完成某些处理。l对象之间的动态关系l对象收到消息后所能执行的操作称为它可提供的服务 课件制作人:谢希仁课件制作人:谢希仁6.4 建立系统的静态结构模型建立系统的静态结构模型1.类图 主要是描述类和类之间的关系。2.对象图 主要是描述对象和对象之间的关系。3.结构类型l一般特殊l整体部分4.主题或子系统 可相互协作共同完成一组内聚功能的模型中的子集5
22、.步骤l 复审需求描述和用例图,找出存在的类之间的关系,用线连接,并命名l 对每一个关系,指出关系基数/重数课件制作人:谢希仁l面向对象的模型相当大,是一个包含大量类和对象的平面图l主题可以看成是高层的模块或子系统,通过对主题的识别,将这些类和对象做进一步的组合。课件制作人:谢希仁课件制作人:谢希仁【例2、员工报账系统提交报账申请】类图n员工通过报帐系统填写报销申请,输入相关活动产生的费用,在一次或者多次填写后提交,经过验证之后,以电子邮件的方式通知经理批复。课件制作人:谢希仁类图员工employee。公司的正式雇员。经理manager。公司的正式雇员。报销单Claim_reportn员工在一
23、个(自然)月内的所有报销记录的集合。报销记录Claim_recordn与业务有关的某一项具体的花费,包括业务活动发生的时间、地点、客户名称(可选)、原因以及费用金额和种类(交通、餐饮、会议、通讯和杂项)。验证规则valid_rulen验证为合理的报销记录必须满足几种条件:n第一,不同种类的费用不超过相应的限额;n第二,报销费用的类型要和员工的职能匹配。课件制作人:谢希仁类图课件制作人:谢希仁6.5建立系统的动态模型建立系统的动态模型l 要想对一个系统了解得比较清楚,首先应当考察它的静态结构,即在某一时刻它的对象和这些对象之间相互联系的结构;然后应当考察在任何时刻对象及其联系的改变。系统的这些涉
24、及时序和改变的状况,用动态模型来描述。l 动态模型着重于系统的控制逻辑。l 建立对象交互图,将用例的行为分布到对象中u事件追踪图u状态图u时序图u协作图课件制作人:谢希仁l事件追踪图侧重于说明发生于系统执行过程中的一个特定“场景”。l场景也叫做脚本,是完成系统某个功能的一个事件序列。l场景通常起始于一个系统外部的输入事件,结束于一个系统外部的输出事件,它可以包括发生在这个期间的系统所有的内部事件,也可以只包括那些撞到的或由系统中某些对象生成的事件。课件制作人:谢希仁课件制作人:谢希仁课件制作人:谢希仁课件制作人:谢希仁【例4 学校登记新生】课件制作人:谢希仁become从一个对象值变化到另一个
25、对象值从一个对象值变化到另一个对象值课件制作人:谢希仁课件制作人:谢希仁关联关系关联关系关联关系关联关系关联关系关联关系关联关系关联关系关联关系关联关系课件制作人:谢希仁已登记属性已登记属性Boolean课件制作人:谢希仁例5 提交报销申请的交互图与协作图不符课件制作人:谢希仁转述USE CASE场景的序列图中,主导Actor的实例位于序列图的左侧;其他被动Actor位于序列图的右侧;主导主导Actor实例实例被动被动Actor实例实例课件制作人:谢希仁转述USE CASE场景的协作图中,边界类对象,Actor实例位于协作图的上方;实体类对象位于协作图的下方;控制类对象放在协作图的中央。课件制
26、作人:谢希仁“返回消息”错误的习惯:对象间放置一去一回两个(Call)消息课件制作人:谢希仁n(Call)消息n包含“一去一回”的含义。n接收(Call)消息的对象要承担责任(完成消息指定的功能)n“返回消息(Return)”n接收返回消息的对象不用承担责任。n作用:n强调消息从“发出”到“回应”的跨度;n完成(Call)消息指定的功能中出现异常;课件制作人:谢希仁作用:作用:强调消息强调消息从从“发出发出”到到“回应回应”的跨度的跨度;完成完成(Call)消息消息指定的功能中指定的功能中出现异常出现异常;课件制作人:谢希仁在序列图中作文字注释课件制作人:谢希仁【功能描述】员工通过报帐系统填写
27、报销申请,输入相关活动产生的费用,在一次或者多次填写后提交,经过验证之后,以电子邮件的方式通知经理批复。【基本事件序列】1、打开报销申请2、添加空白报销记录3、填写空白报销记录4、验证报销单5、提交报销单【备选事件序列】A1、删除报销记录A2、更新报销记录A3、保存当月报销单A4、报销记录不合理A5、人事数据库不可用A6、邮件未及时发出课件制作人:谢希仁【基本事件序列】1、打开报销申请员工:员工选择进入“报销申请”功能。系统:n如果该员工当月报销单存在,系统将取出相应信息并展示给员工;n如果该员工的当月报销单不存在,则为该员工创建一张当月报销单课件制作人:谢希仁1、打开报销申请课件制作人:谢希
28、仁2、添加空白报销记录员工:员工要求添加一条空白报销记录。系统:系统显示一条空白的报销记录。课件制作人:谢希仁3、填写空白报销记录 A2、更新报销记录员工:员工开始填写报销记录,每条报销记录包括的信息有:业务活动发生的时间、地点、客户名称(可选)、原因以及费用金额和种类(交通、餐饮、会议、通信和杂项)。系统:系统显示并记录员工输入的信息。为了让员工方便而准确地准确输入相关信息,除了客户名称、业务活动原因和金额之外,其他信息域提供相应的下拉式选择列表。课件制作人:谢希仁3、填写空白报销记录 A2、更新报销记录课件制作人:谢希仁4、验证报销单员工:员工填写完毕所有报销记录之后,要求系统验证这些记录
29、的合理性。系统:报销记录的初始状态为“未验证”,每当一条报销记录被验证为合理,系统将该报销记录的状态设置为“已验证”,系统在验证所有报销记录(为“已验证”)之后提示用户可以提交本月的报销单。验证为合理的记录必须满足几种条件:n第一,不同种类的费用不超过相应的限额;n第二,报销费用的类型要和员工的职能匹配。课件制作人:谢希仁4、验证报销单课件制作人:谢希仁5、提交报销单员工:所有报销记录经过验证之后,员工提交当月的报销单。系统:n系统保存这张报销单,将报销单的状态设置为“已提交”并记录提交日期,同时这张报销单被设为“只读”。n系统从人事管理数据库中获知该员工及其经理的电子邮件地址。n系统将自动生
30、成一份以当前报销单为内容的电子邮件发送到该员工及其经理的信箱中。当邮件成功发送后,员工得到一个确认信息。课件制作人:谢希仁5、提交报销单课件制作人:谢希仁【备选事件序列】A1、删除报销记录课件制作人:谢希仁A3、保存当月报销单课件制作人:谢希仁A4、报销记录不合理返回返回(Return)消息消息完成完成(Call)消息消息指定的功能中指定的功能中出现异出现异常常课件制作人:谢希仁A5、人事数据库不可用返回返回(Return)消息消息完成完成(Call)消息消息指定的功能中指定的功能中出现异常出现异常课件制作人:谢希仁A6、邮件未及时发出返回返回(Return)消息消息完成完成(Call)消息消息指定的功能中指定的功能中出现异出现异常常课件制作人:谢希仁例5 提交报销申请的协作图课件制作人:谢希仁新建新建退回退回同意同意