静态结构模型类图详解演示文稿_第1页
静态结构模型类图详解演示文稿_第2页
静态结构模型类图详解演示文稿_第3页
静态结构模型类图详解演示文稿_第4页
静态结构模型类图详解演示文稿_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

静态结构模型类图详解演示文稿现在是1页\一共有66页\编辑于星期四优选静态结构模型类图现在是2页\一共有66页\编辑于星期四面向对象的分析模型功能模型:从用户的角度获取功能需求,由用例模型表示(已在上堂课学习过);静态结构模型(分析对象模型):描述系统的概念实体,由类图表示;动态行为模型:描述对象之间的交互行为,由状态图和顺序图表示。现在是3页\一共有66页\编辑于星期四面向对象的分析模型现在是4页\一共有66页\编辑于星期四面向对象的分析模型现在是5页\一共有66页\编辑于星期四面向对象分析的过程第一阶段:业务领域分析

分析应用领域的业务范围、业务规则和业务处理过程,确定系统的责任、范围和边界,确定系统的需求。

在分析中需要着重对系统与外部的用户和其他系统的交互进行分析,确定交互的内容、步骤和顺序。——用例模型现在是6页\一共有66页\编辑于星期四第二阶段:发现和定义对象和类识别对象和类,确定它们的内部特征:属性与服务操作。

这是一个从现实世界到概念模型的抽象过程,而抽象是面向对象分析的基本原则。第三阶段:识别对象的外部联系在发现和定义对象和类的过程中,需要同时识别对象与对象、类与类之间的各种外部联系,如一般与特殊、整体与部分、实例连接(关联)、消息连接等联系。对象和类是现实世界中的事物的抽象,它们之间的联系也要从分析现实世界事物的各种真实的联系中获得。现在是7页\一共有66页\编辑于星期四第四阶段:建立系统的静态结构模型分析系统的行为,建立系统的静态结构模型,并将其用图形和文字说明表示出来,如绘制类图、对象图、系统与子系统结构图等,编制相应的说明文档。第五阶段:建立系统的动态行为模型分析系统的行为,建立系统的动态行为模型,并将其用图形和文字说明表示出来,如绘制用例图、交互图、活动图、状态图等,编制相应的说明文档。现在是8页\一共有66页\编辑于星期四建立静态结构模型基本的分析过程:Step1:从用例模型入手,识别概念类;Step2:描述各个类的属性;Step3:定义各个类的操作;Step4:建立类之间的关系;Step5:绘制类图(classdiagram)现在是9页\一共有66页\编辑于星期四识别概念类如何从用户的需求陈述中找到“概念类”?——名词驱动的识别方法对用户需求陈述进行“语法分析”,找出所有的名词或名词短语,对其标注下划线;合并同义词;将最终得到的每一个名词映射为一个类;动词映射为类的操作,形容词/名词映射为类的属性。现在是10页\一共有66页\编辑于星期四借书用例现在是11页\一共有66页\编辑于星期四借书用例描述用例描述如下:1.图书管理员将读者借书卡提供给系统;2.系统验证读者身份和借书条件;3.图书管理员将读者所借图书输入系统;4.系统记录借书信息,并且修改图书的状态和此种书的可借数量;5.系统修改读者的可用限额;6.重复3-5,直到图书管理员确认全部图书登记完毕;7.系统打印借书清单,交易成功完成。现在是12页\一共有66页\编辑于星期四借书用例描述用例描述如下:1.图书管理员将读者借书卡提供给系统;2.系统验证读者身份和借书条件;3.图书管理员将读者所借图书输入系统;4.系统记录借书信息,并且修改图书的状态和此种书的可借数量;5.系统修改读者的可用限额;6.重复3-5,直到图书管理员确认全部图书登记完毕;7.系统打印借书清单,交易成功完成。现在是13页\一共有66页\编辑于星期四图书馆系统的对象名词类别概念类列表显而易见的对象读者借书卡图书借书信息借书清单明显无意义的对象读者身份不确定类别的对象借书条件图书状态可借数量可用限额图书状态总是和具体的图书联系在一起,不是一个独立的对象。同理,借书数量、可用限额是读者属性。可借数量是某个图书品种的特性,每本图书归属于一个图书品种,图书品种是一个隐含概念借书条件是一种规则,可以作为对象吗?现在是14页\一共有66页\编辑于星期四练习阅读用例描述,找出概念类用例名:购买商品参与者:出纳员描述:顾客带着所要购买的商品来到收款处。出纳员记录下商品信息并收款。付款完成后,顾客带着所购买的商品和收据离开。现在是15页\一共有66页\编辑于星期四练习阅读用例描述,找出概念类用例名:购买商品参与者:出纳员描述:顾客带着所要购买的商品来到收款处。出纳员记录下商品信息并收款。付款完成后,顾客带着所购买的商品和收据离开。明显无意义的对象:收款处现在是16页\一共有66页\编辑于星期四用例名称:预定房间涉及的参与者:酒店前台正常事件流:1)前台人员向系统提供需要预定房间的类型、时间和预定天数。2)系统确认有相应档次的空闲房间,并计算出总费用和定金。3)前台人员向系统提供旅客信息(姓名、地址、联系电话、证件号等)。4)系统记录旅客信息。5)前台人员确认已经交纳定金。6)系统记录房间已经预定,工作完成。现在是17页\一共有66页\编辑于星期四用例名称:预定房间涉及的参与者:酒店前台正常事件流:1)前台人员向系统提供需要预定房间的类型、时间和预定天数。2)系统确认有相应档次的空闲房间,并计算出总费用和定金。3)前台人员向系统提供旅客信息(姓名、地址、联系电话、证件号等)。4)系统记录旅客信息。5)前台人员确认已经交纳定金。6)系统记录房间已经预定,工作完成。现在是18页\一共有66页\编辑于星期四不同类别的概念人员:系统需要保存或管理其信息的人员(如录像商店的会员、图书馆的读者),或在系统中中扮演一定角色的人员(如录像商店的职员、论文评阅教师)。组织:在系统中发挥一定作用的组织机构(如录像商店的连锁店,医疗保险系统中的医院,学校中的系)。物品:需要由系统管理的各种物品(如录像商店的商品、图书),包括无形事物(如学校的一门课程、毕设题目)。设备:在系统中被使用或由系统进行监控的设备、仪器等,系统运行中的硬件设备(如打印机)除外。事件:需要由系统长期记忆的事件(如在自动柜员机上的每次取款事件、每次借书事件)。现在是19页\一共有66页\编辑于星期四不同类别的概念(续)规格说明:系统中关于对象的规格信息的描述。如图书品种,每种图书有一个唯一的馆藏号,同时该图书还包含一些描述信息,如书号、价格、作者、出版社等,多本图书对象共用这些规格说明。这是一种经过了抽象的概念,应该识别为概念类。业务规则或政策:系统中经常使用的业务规则或政策的文字描述。业务规则通常会在用例文档之外以其他条款说明。如图书馆系统中,对不同违规行为指定不同的罚款金额,商店对不同顾客或产品有不同的折扣策略等。如果这些规则无法并入到其他对象中,则可以作为概念类建立。通常规则可能仅有属性,或者仅有操作,比如折扣策略可能是一个纯粹的计算类。现在是20页\一共有66页\编辑于星期四图书馆系统的概念类所属类目概念类举例人员读者图书管理员组织暂无物品图书借书卡书目借书清单设备暂无事件借书还书逾期规格说明图书品种政策或规则罚款细则现在是21页\一共有66页\编辑于星期四图书馆系统的第1张类图现在是22页\一共有66页\编辑于星期四Step2:识别属性属性是描述对象静态特征的一个数据项。发现属性的策略:如何为对象做一般性的描述?比如人,一般的描述信息有姓名、性别、出生日期、身高、体重等。在当前问题域,对象还具备那些特定描述项?比如人作为门诊系统的患者,还需要考虑血型、药物过敏、家族病史等。对象的责任是什么?在系统中对象还需要了解或提供哪些信息?比如图书馆要实现催还功能,与该责任相关的就需要为书籍或借书事项定义借书日期和期限。对象可能处于什么状态?对象的状态不同,则可能执行的操作也不同。比如出租物品就有在库、出租、维修三个状态。现在是23页\一共有66页\编辑于星期四属性的表示借书记录borrowDate:DatereturnDate:Date属性的有关说明:属性的名称和解释:有些属性只适用于该问题域,是专业术语,晦涩难懂;有些常用词语在特定环境下字面的含义有所修改,为了提高清晰度,需要对这些属性进行定义。属性的数据类型:分析时使用简单类型,如整数、实数、字符串、日期、数组、布尔等,分析阶段因为不考虑技术实现,所以不需要考虑具体语言能支持的数据类型。其他要求:如取值范围、缺省值等。现在是24页\一共有66页\编辑于星期四定义领域类属性的原则仅定义与系统责任和系统目标有关的属性。使用简单数据类型来定义属性。如数字、字符串、日期、布尔、文本等。还包含多种特征或规则的数据,可考虑作为独立的对象类。一般不使用可导出的属性。(出生年月年龄)不为对象关联定义属性。属性只用于体现对象本身的内在性质,关联属性来实现,但那是设计阶段的问题,应推迟考虑。如毕业设计题目与教师和学生存在关联,但题目中不应定义“教师姓名”、“学号”之类的属性。现在是25页\一共有66页\编辑于星期四图书馆系统的第2张类图现在是26页\一共有66页\编辑于星期四Step4:建立类之间的关系五种关系:泛化(generalization)关联(association)组合(composition)聚合(aggregation)依赖(dependency)现在是27页\一共有66页\编辑于星期四销售项Sale销售项条目SalesLineItem包含11..*关联名称多重性现在是28页\一共有66页\编辑于星期四描述关联的要素关联名称对象在关联中的角色多重性导向性现在是29页\一共有66页\编辑于星期四1、关联名称多数关联是二元的(即只存在于两个类的实例之间),在图中表示为连接两个类符号的实线路径。使用关联名称,应该反映该关系的目的,并且应该是一个动词词组。比如教师对象和课程对象的关联名称就是“讲授”,医生和处方单的关系是“书写处方”。关联名称应放置在关联路径上或其附近。现在是30页\一共有66页\编辑于星期四2、关联角色(Role)关联所联系的每一端叫做一个角色角色名称应该是一个名词,能够表达被关联对象在关联中所充当的角色,角色名称紧邻关联线的末端。贷款客户客户0..1担保人贷款人11*现在是31页\一共有66页\编辑于星期四3、关联的多重性(Multiplicity)定义了一个类A的实例在一段特定的时间内能够和多少个类B的实例发生关联。借书记录*一个读者可以有0个或多个借书记录图书1..*一个图书品种馆藏1本或多本图书处方条目1..6一个处方可以开出1个到6个处方条目足球队员11一个足球队正好由11个队员组成借书记录0..1一本图书可以有0个或1个借书记录现在是32页\一共有66页\编辑于星期四4、关联的导向性(Navigability)角色的导向性特征表示可以通过关联从源类导向到目标类上。也就是说给定关联一端的对象就能够容易并直接地得到另一端的对象。识别关联的导向可以推迟,与设计实现有关。通常是源对象存储了对目标对象的一些引用读者Reader借书记录Loan1登记1..*导航箭头说明Reader对象可单向访问到Loan对象Reader很可能有一个指向Loan对象的属性现在是33页\一共有66页\编辑于星期四实例连接:关联关系classCourse{}classStudent{privateCourse[]selectedCourses;}classTeacher{privateStudent[]students;}classStudent{privateTeacherteacher;}StudentCourse-selectedCourses5..*Teacher1 -studentsStudent-teacher 0..*现在是34页\一共有66页\编辑于星期四关联类

关联类:classCompany{}classPerson{}classJob{publicPerson

employee;publicCompany

employer;Stringdescription;DatedateHired;doublesalary;}现在是35页\一共有66页\编辑于星期四(4)消息连接:依赖关系

消息连接–消息连接是对象之间的通信联系,它表现了对象行为的动态联系。–一个对象需要另一个对象的服务,便向它发出请求服务的消息,接收消息的对象响应消息,触发所要求的服务操作。

消息连接也称为“依赖关系”(Dependency)。依赖现在是36页\一共有66页\编辑于星期四(4)消息连接:依赖关系Air依赖(Dependency):…usea...–依赖是一种使用关系,一个类A使用到了另一个类B,而这种使用关系是偶然性的、临时性的、非常弱的,但是B类的变化会影响到A。

类的依赖可能由各种原因引起,例如:–一个类是另一个类的某个操作的参数–一个类在另一个类的某个操作中被使用

classAir{}HumanclassHuman{publicvoidbreath(Airair){};}现在是37页\一共有66页\编辑于星期四5、整体-部分关联(Whole-Part)如果对象a是对象b的一个组成部分,则称b为a的整体对象,a为b的部分对象,二者对应的关联形式称为整体-部分关联。这种结构可以用b“hasa”a进行验证。整体-部分关联是关联中使用较频繁的一种模式,用于对模型元素之间的组装关系进行建模。组成关系在现实生活中可以表现为以下几种形式:客观上或逻辑上的整体事物和它的组成部分(机器和零件、人体和器官、书和章节、图和元素)组织机构和它的下级组织及部分(公司和子公司、医院和科室)团体(组织)和成员(科室和医生、班级和学生)空间上的容器事物和其包容物(车间和机器/工人、教室和设备)现在是38页\一共有66页\编辑于星期四整体-部分关联举例(一个窗口)FormControl*ButtonEditCheckBox现在是39页\一共有66页\编辑于星期四整体/部分关联——聚集聚集(aggregation)是用于为整体-部分关系建模的一种关联,使用连接线和菱形表达,菱形一端的对象是整体对象。整体-部分关联有两种类型组合聚集(compositionaggregation)共享聚集(sharedaggregation)现在是40页\一共有66页\编辑于星期四共享聚集(sharedaggregation)描述整体-部分的关系,部分可能同时属于多个整体对象。关联路径的末端有一个空心菱形,用来表示聚集关系。班级与学生之间的生命周期是独立的。班级学生15..*现在是41页\一共有66页\编辑于星期四定义两个类:classStudent{}classCourseClass{…privateStudent[]students;//学生数组publicaddStudent(){s=newStudent();//创建学生对象studtents.append(s);}…测试类:PublicclassTestClass{Publicstaticoidmain(Stringargs[]){

CourseClassooad=newCourseClass();//创建班级对象,创建时没有创建学生对象}}…现在是42页\一共有66页\编辑于星期四组合聚集(compositionaggregation)组合聚集具有很强的归属关系,部分只能是一个组合对象的成员,而且部分对象的存在是依赖于整体对象,与整体同生共死。整体端的重数不会超过1(即它无法被多个整体对象共享),关系建立后是不可变更。关联路径的末端有一个实心菱形,用来表示组合关系。Person1-heartHeart现在是43页\一共有66页\编辑于星期四整体-部分关联的实现(一)Person对象tom创建后﹐立即创建內含的Heart对象classHeart{}classPerson{…privateHeartheart=newHeart();…}Persontom=newPerson();Person1-heartHeart现在是44页\一共有66页\编辑于星期四整体-部分关联的实现(二)汽车类和遥控器类及发动机类的关系如图,写出代码现在是45页\一共有66页\编辑于星期四小结:对象之间的联系

继承/泛化:一般与特殊的关系——isakindof

组合:部分与整体的关系,彼此不可分——ispartof

聚合:部分与整体的关系,但彼此可分——ownsa

关联:对象之间的长期静态联系——hasa

依赖:对象之间的动态的、临时的通信联系——usea

类间联系的强度:继承>>> 组合>> 聚合>>关联>>> 依赖现在是46页\一共有66页\编辑于星期四通用关联分类表分类举例A在物理上是B的一部分零件——产品A在逻辑上是B的一部分订单项——订单A在物理上包含在B中/依赖于B产品——仓库A在逻辑上包含于B中图书品种——图书A是对B的描述产品规格——产品A是事务B或报告B的一个记录项购物——购物项A为B所知/为B所记录/录入到B中借书记录——读者A是B的一个成员职工——部门A是B的一个组织单元分公司——集团A使用或管理B医生——病案;医生——挂号单A与B相互通信图书管理员——读者A与一个事务B有关联图书——借书记录A是一个事务,B也是一个事务,二者有关联借书记录——逾期记录现在是47页\一共有66页\编辑于星期四6、关联原则找出问题域中的对象远远比找出关联更为重要注意力集中在那些需要将对象之间的关系信息记忆一段持续时间的关联关联太多不仅不能有效展示概念模型,反而会使概念模型变得混乱要避免关联之间的信息冗余以及减少派生关联关联使用关联名称、角色、多重性和导向性来说明现在是48页\一共有66页\编辑于星期四图书馆系统的第3张类图现在是49页\一共有66页\编辑于星期四类的泛化泛化(Generalization)是在多个概念之间识别共性,定义超类(一般概念)和子类(特定概念)关系的活动。如在图书馆系统中,发现图书馆目前还收藏了其他资源,比如影碟(VCD/DVD)、音乐CD、电子书等品种。它们和图书一样可以被任何读者借出,每个对象都有条码和状态。但它们也有自己的特性,比如属性项、借阅期限、逾期惩罚不同,必须区别对待。现在是50页\一共有66页\编辑于星期四1、一般-特殊结构

(Generalization-Specialization)如果类A具有类B的全部属性和行为,而且具有自己特有的某些属性或服务,则A叫做B的特殊类,B叫做A的一般类。这种关系也称为一般-特殊关系、泛化-特化关系、继承关系。特点:可以简化模型,有效地反映问题空间的分类层次。必须确认子类一定是父类的一个特殊类型,即可以用“is-a-kind-of”进行验证

注意控制泛化的粒度,额外的泛化增加复杂性现在是51页\一共有66页\编辑于星期四图书馆系统的泛化关系现在是52页\一共有66页\编辑于星期四2、什么时候需要划分一般-特殊结构类的属性或行为不适合该类的全部对象如果定义“学生”类有“导师”属性,有“教学实践”行为的话,则该类的对象对于本科生不适合,只适合于研究生对象,采用一般-特殊结构重新分类,建立“学生”和“研究生”之间的一般-特殊结构,研究生可以继承所有学生的特性。属性和行为相似的类将这些类的共性抽象出来作为超类,各自特性仍旧保留而作为超类的子类。不要将一个对象的状态变化设计为多个子类,除非对象的多数行为是由状态来决定现在是53页\一共有66页\编辑于星期四病态的继承泛化是提高软件重用性的一种机制,但不能为了重用而滥用泛化。不符合“isakindof”采用组装结构,将复用对象作为组成元素现在是54页\一共有66页\编辑于星期四3、抽象类如果一般类A

温馨提示

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

评论

0/150

提交评论