第4章静态结构模型-类图_第1页
第4章静态结构模型-类图_第2页
第4章静态结构模型-类图_第3页
第4章静态结构模型-类图_第4页
第4章静态结构模型-类图_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象的分析建立静态结构模型(类图建立静态结构模型(类图)面向对象的分析分析业务领域,找出问题解决方案,发现对象,分析对象的内部构成和外部关系,建立软件系统的对象模型。着重分析业务领域和系统责任,建立独立于实现的OOA模型,暂时忽略与系统实现有关的问题。主要使用5种图描述完整的系统需求:用例图类图时序图协作图状态图面向对象的分析模型功能模型:功能模型:从用户的角度获取功能需求,由用例模型表示(已在上堂课学习过);静态结构模型静态结构模型(分析对象模型):描述系统的概念实体,由类图表示;动态行为模型动态行为模型:描述对象之间的交互行为,由状态图和顺序图表示。面向对象的分析模型面向对象的分析模型

2、面向对象分析的过程 第一阶段:业务领域分析 分析应用领域的业务范围、业务规则和业务处理过程,确定系统的责任、范围和边界,确定系统的需求。 在分析中需要着重对系统与外部的用户和其他系统的交互进行分析,确定交互的内容、步骤和顺序。用例模型第二阶段:发现和定义对象和类第二阶段:发现和定义对象和类识别对象和类,确定它们的内部特征:属性与服务操作。 这是一个从现实世界到概念模型的抽象过程,而抽象是面向对象分析的基本原则。第三阶段:识别对象的外部联系第三阶段:识别对象的外部联系在发现和定义对象和类的过程中,需要同时识别对象与对象、类与类之间的各种外部联系,如一般与特殊、整体与部分、实例连接(关联)、消息连

3、接等联系。对象和类是现实世界中的事物的抽象,它们之间的联系也要从分析现实世界事物的各种真实的联系中获得。第四阶段:建立系统的静态结构模型第四阶段:建立系统的静态结构模型分析系统的行为,建立系统的静态结构模型,并将其用图形和文字说明表示出来,如绘制类图、对象图、系统与子系统结构图等,编制相应的说明文档。第五阶段:建立系统的动态行为模型第五阶段:建立系统的动态行为模型分析系统的行为,建立系统的动态行为模型,并将其用图形和文字说明表示出来,如绘制用例图、交互图、活动图、状态图等,编制相应的说明文档。建立静态结构模型基本的分析过程:Step 1:从用例模型入手,识别概念类;Step 2:描述各个类的属

4、性;Step 3:定义各个类的操作;Step 4:建立类之间的关系;Step 5:绘制类图(class diagram)识别概念类如何从用户的需求陈述中找到“概念类概念类”? 名词驱动的识别方法名词驱动的识别方法对用户需求陈述进行“语法分析”,找出所有的名词或名词短语,对其标注下划线;合并同义词;将最终得到的每一个名词映射为一个类;动词映射为类的操作,形容词/名词映射为类的属性。借书用例借书用例描述借书用例描述用例描述如下:1图书管理员将读者借书卡提供给系统;2系统验证读者身份和借书条件;3图书管理员将读者所借图书输入系统;4系统记录借书信息,并且修改图书的状态和此种书的可借数量;5系统修改读

5、者的可用限额;6重复3-5,直到图书管理员确认全部图书登记完毕;7系统打印借书清单,交易成功完成。借书用例描述借书用例描述用例描述如下:1图书管理员将读者借书卡提供给系统;2系统验证读者身份和借书条件;3图书管理员将读者所借图书输入系统;4系统记录借书信息,并且修改图书的状态和此种书的可借数量;5系统修改读者的可用限额;6重复3-5,直到图书管理员确认全部图书登记完毕;7系统打印借书清单,交易成功完成。图书馆系统的对象名词类别名词类别概念类列表概念类列表显而易见的对象显而易见的对象读者读者 借书卡借书卡 图书图书 借书信息借书信息 借书清单借书清单明显无意义的对象明显无意义的对象读者身份读者身

6、份不确定类别的对象不确定类别的对象借书条件借书条件 图书状态图书状态 可借数量可借数量 可用限额可用限额图书状态总是和具体的图书联系在一起,不是一个独立的对象。同理,借书数量、可用限额是读者属性。可借数量是某个图书品种的特性,每本图书归属于一个图书品种,图书品种是一个隐含概念借书条件是一种规则,可以作为对象吗?练习阅读用例描述,找出概念类用例名:购买商品用例名:购买商品参与者:出纳员参与者:出纳员描述:顾客带着所要购买的商品来到收款处。出纳员记录下商品信息描述:顾客带着所要购买的商品来到收款处。出纳员记录下商品信息并收款。付款完成后,顾客带着所购买的商品和收据离开。并收款。付款完成后,顾客带着

7、所购买的商品和收据离开。练习阅读用例描述,找出概念类用例名:购买商品用例名:购买商品参与者:出纳员参与者:出纳员描述:描述:顾客顾客带着所要购买的带着所要购买的商品商品来到来到收款处收款处。出纳员出纳员记录下记录下商品信息商品信息并收款。付款完成后,顾客带着所购买的商品和并收款。付款完成后,顾客带着所购买的商品和收据收据离开离开。明显无意义的明显无意义的对象对象: :收款收款处处用例名称:预定房间涉及的参与者:酒店前台正常事件流:1) 前台人员向系统提供需要预定房间的类型、时间和预定天数。2) 系统确认有相应档次的空闲房间,并计算出总费用和定金。3) 前台人员向系统提供旅客信息(姓名、地址、联

8、系电话、证件号等)。4) 系统记录旅客信息。5) 前台人员确认已经交纳定金。6) 系统记录房间已经预定,工作完成。用例名称:预定房间涉及的参与者:酒店前台正常事件流:1) 前台人员向系统提供需要预定房间的类型、时间和预定天数。2) 系统确认有相应档次的空闲房间,并计算出总费用和定金。3) 前台人员向系统提供旅客信息(姓名、地址、联系电话、证件号等)。4) 系统记录旅客信息。5) 前台人员确认已经交纳定金。6) 系统记录房间已经预定,工作完成。不同类别的概念人员:系统需要保存或管理其信息的人员(如录像商店的会员、图书馆的读者),或在系统中中扮演一定角色的人员(如录像商店的职员、论文评阅教师)。组

9、织:在系统中发挥一定作用的组织机构(如录像商店的连锁店,医疗保险系统中的医院,学校中的系)。物品:需要由系统管理的各种物品(如录像商店的商品、图书),包括无形事物(如学校的一门课程、毕设题目)。设备:在系统中被使用或由系统进行监控的设备、仪器等,系统运行中的硬件设备(如打印机)除外。事件:需要由系统长期记忆的事件(如在自动柜员机上的每次取款事件、每次借书事件)。不同类别的概念(续)规格说明:系统中关于对象的规格信息的描述。 如图书品种,每种图书有一个唯一的馆藏号,同时该图书还包含一些描述信息,如书号、价格、作者、出版社等,多本图书对象共用这些规格说明。这是一种经过了抽象的概念,应该识别为概念类

10、。业务规则或政策:系统中经常使用的业务规则或政策的文字描述。 业务规则通常会在用例文档之外以其他条款说明。如图书馆系统中,对不同违规行为指定不同的罚款金额,商店对不同顾客或产品有不同的折扣策略等。如果这些规则无法并入到其他对象中,则可以作为概念类建立。 通常规则可能仅有属性,或者仅有操作,比如折扣策略可能是一个纯粹的计算类。图书馆系统的概念类所属类目所属类目概念类举例概念类举例人员人员读者 图书管理员组织组织暂无物品物品图书 借书卡 书目 借书清单设备设备暂无事件事件借书 还书 逾期规格说明规格说明图书品种 政策或规则政策或规则罚款细则图书馆系统的第1张类图罚款细则读者借书记录图书图书目录图书

11、品种逾期记录图书管理员Step 2:识别属性属性是描述对象静态特征的一个数据项。发现属性的策略: 如何为对象做一般性的描述?比如人,一般的描述信息有姓名、性别、出生日期、身高、体重等。 在当前问题域,对象还具备那些特定描述项?比如人作为门诊系统的患者,还需要考虑血型、药物过敏、家族病史等。 对象的责任是什么?在系统中对象还需要了解或提供哪些信息?比如图书馆要实现催还功能,与该责任相关的就需要为书籍或借书事项定义借书日期和期限。 对象可能处于什么状态?对象的状态不同,则可能执行的操作也不同。比如出租物品就有在库、出租、维修三个状态。 属性的表示借书记录borrowDate:DatereturnD

12、ate:Date属性的有关说明:属性的名称和解释:有些属性只适用于该问题域,是专业术语,晦涩难懂;有些常用词语在特定环境下字面的含义有所修改,为了提高清晰度,需要对这些属性进行定义。属性的数据类型:分析时使用简单类型,如整数、实数、字符串、日期、数组、布尔等,分析阶段因为不考虑技术实现,所以不需要考虑具体语言能支持的数据类型。其他要求:如取值范围、缺省值等。 定义领域类属性的原则1. 仅定义与系统责任和系统目标有关的属性。2. 使用简单数据类型来定义属性。如数字、字符串、日期、布尔、文本等。还包含多种特征或规则的数据,可考虑作为独立的对象类。3. 一般不使用可导出的属性。( 出生年月年龄)4.

13、 不为对象关联定义属性。属性只用于体现对象本身的内在性质,关联属性来实现,但那是设计阶段的问题,应推迟考虑。如毕业设计题目与教师和学生存在关联,但题目中不应定义“教师姓名”、“学号”之类的属性。图书馆系统的第2张类图 读者 姓名 身份证号 借书卡号 借书限额 可用限额 图书 馆藏流水号 状态 图书目录 借书记录 借书日期 归还日期 逾期记录 逾期天数 罚款细则 图书管理员 职工号 姓名 图书品种 书名 国际书号 作者 出版社 出版日期 简介 价格 馆藏数量 可借数量 Step 4:建立类之间的关系 五种关系:泛化(generalization)关联(association)组合(composi

14、tion)聚合(aggregation)依赖(dependency)销售项Sale销售项条目SalesLineItem包含11.*关联名称多重性描述关联的要素1.关联名称关联名称2.对象在关联中的角色对象在关联中的角色3.多重性多重性4.导向性导向性1、关联名称多数关联是二元的(即只存在于两个类的实例之间),在图中表示为连接两个类符号的实线路径。使用关联名称,应该反映该关系的目的,并且应该是一个动词词组。 比如教师对象和课程对象的关联名称就是“讲授”,医生和处方单的关系是“书写处方”。关联名称应放置在关联路径上或其附近。图书读者借阅2、关联角色(Role)关联所联系的每一端叫做一个角色角色名称

15、应该是一个名词,能够表达被关联对象在关联中所充当的角色,角色名称紧邻关联线的末端。 贷款客户客户0.1 担保人贷款人 11*3、关联的多重性(Multiplicity)定义了一个类A的实例在一段特定的时间内能够和多少个类B的实例发生关联。借书记录*一个读者可以有0个或多个借书记录图书1.*一个图书品种馆藏1本或多本图书处方条目1.6一个处方可以开出1个到6个处方条目足球队员11一个足球队正好由11个队员组成借书记录0.1一本图书可以有0个或1个借书记录4、关联的导向性(Navigability)角色的导向性特征表示可以通过关联从源类导向到目标类上。也就是说给定关联一端的对象就能够容易并直接地得

16、到另一端的对象。识别关联的导向可以推迟,与设计实现有关。通常是源对象存储了对目标对象的一些引用读者Reader借书记录Loan1 登记 1.*导航箭头说明Reader对象可单向访问到Loan对象Reader很可能有一个指向Loan对象的属性实例连接:关联关系class Course class Student private Course selectedCourses;class Teacher private Student students;class Student private Teacher teacher;StudentCourse- selectedCourses5.*Tea

17、cher1- studentsStudent- teacher0.*关联类 关联类:class Company class Person class Job public Person employee; public Company employer;String description; Date dateHired; double salary;(4) 消息连接:依赖关系 消息连接 消息连接是对象之间的通信联系,它表现了对象行为的动态联系。 一个对象需要另一个对象的服务,便向它发出请求服务的消息,接收消息的 对象响应消息,触发所要求的服务操作。 消息连接也称为“依赖关系”(Depende

18、ncy)。依赖(4) 消息连接:依赖关系Air 依赖(Dependency): use a. 依赖是一种使用关系,一个类A使用到了另一个类B,而这种使用关系是偶 然性的、临时性的、非常弱的,但是B类的变化会影响到A。 类的依赖可能由各种原因引起,例如: 一个类是另一个类的某个操作的参数 一个类在另一个类的某个操作中被使用 class Air Humanclass Human public void breath(Air air) ;5、整体-部分关联(Whole-Part)如果对象a是对象b的一个组成部分,则称b为a的整体对象,a为b的部分对象,二者对应的关联形式称为整体-部分关联。这种结构可

19、以用b “has a” a进行验证。整体-部分关联是关联中使用较频繁的一种模式,用于对模型元素之间的组装关系进行建模。组成关系在现实生活中可以表现为以下几种形式: 客观上或逻辑上的整体事物和它的组成部分(机器和零件、人体和器官、书和章节、图和元素) 组织机构和它的下级组织及部分(公司和子公司、医院和科室) 团体(组织)和成员(科室和医生、班级和学生) 空间上的容器事物和其包容物(车间和机器/工人、教室和设备)整体-部分关联举例(一个窗口)EditButtonCheckBoxForm1FormControl*ButtonEditCheckBox整体/部分关联聚集聚集(aggregation)是用

20、于为整体-部分关系建模的一种关联,使用连接线和菱形表达,菱形一端的对象是整体对象。整体-部分关联有两种类型 组合聚集(composition aggregation ) 共享聚集 (shared aggregation) 共享聚集(shared aggregation)描述整体-部分的关系,部分可能同时属于多个整体对象。关联路径的末端有一个空心菱形,用来表示聚集关系。班级与学生之间的生命周期是独立的。班级学生15.*定义两个类:class Student class CourseClass private Student students; /学生数组学生数组public addStudent

21、 ( ) s=new Student();/创建学生对象创建学生对象studtents.append(s);测试类:Public class TestClass Public static oid main (String args) CourseClass ooad=new CourseClass(); /创建班级对象,创建时没有创建学生对象 组合聚集(composition aggregation )组合聚集具有很强的归属关系,部分只能是一个组合对象的成员,而且部分对象的存在是依赖于整体对象,与整体同生共死。整体端的重数不会超过 1(即它无法被多个整体对象共享),关系建立后是不可变更。关联

22、路径的末端有一个实心菱形,用来表示组合关系。Person1-heartHeart整体-部分关联的实现(一)Person 对象tom创建后立即创建內含的Heart对象class Heart class Person private Heart heart = new Heart();Person tom=new Person();Person1-heartHeart整体-部分关联的实现(二) 汽车汽车 发动机发动机 遥控器遥控器 汽车类和遥控器类及发动机类的关系如图,写出代码小结:对象之间的联系 继承/泛化:一般与特殊的关系is akind of 组合:部分与整体的关系,彼此不可分is part

23、 of 聚合:部分与整体的关系,但彼此可分owns a 关联:对象之间的长期静态联系has a 依赖:对象之间的动态的、临时的通信联系use a 类间联系的强度:继承 组合 聚合 关联 依赖通用关联分类表分 类举 例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有关联图书

24、借书记录A是一个事务,B也是一个事务,二者有关联借书记录逾期记录6、关联原则找出问题域中的对象远远比找出关联更为重要注意力集中在那些需要将对象之间的关系信息记忆一段持续时间的关联关联太多不仅不能有效展示概念模型,反而会使概念模型变得混乱要避免关联之间的信息冗余以及减少派生关联关联使用关联名称、角色、多重性和导向性来说明 图书馆系统的第3张类图图书目录图书品种1.*11.*1记载图书*1*1馆藏读者图书管理员借书记录0.110.11*1*1*1*1登记罚款细则逾期记录0.110.110.1*0.1*使用类的泛化泛化(Generalization)是在多个概念之间识别共性,定义超类(一般概念)和子

25、类(特定概念)关系的活动。 如在图书馆系统中,发现图书馆目前还收藏了其他资源,比如影碟(VCD/DVD)、音乐CD、电子书等品种。它们和图书一样可以被任何读者借出,每个对象都有条码和状态。但它们也有自己的特性,比如属性项、借阅期限、逾期惩罚不同,必须区别对待。 1、一般-特殊结构(Generalization-Specialization)如果类A具有类B的全部属性和行为,而且具有自己特有的某些属性或服务,则A叫做B的特殊类,B叫做A的一般类。这种关系也称为一般-特殊关系、泛化-特化关系、继承关系。特点: 可以简化模型,有效地反映问题空间的分类层次。 必须确认子类一定是父类的一个特殊类型,即可

26、以用“is-a-kind-of”进行验证 注意控制泛化的粒度,额外的泛化增加复杂性图书馆系统的泛化关系图书品种作者出版社出版日期碟片品种碟片类型碟片数制作公司资源项馆藏流水号状态馆藏资源品种资源名称国际出版号价格简介馆藏数量可借数量2、什么时候需要划分一般-特殊结构1.类的属性或行为不适合该类的全部对象如果定义“学生”类有“导师”属性,有“教学实践”行为的话,则该类的对象对于本科生不适合,只适合于研究生对象,采用一般-特殊结构重新分类,建立“学生”和“研究生”之间的一般-特殊结构,研究生可以继承所有学生的特性。2.属性和行为相似的类将这些类的共性抽象出来作为超类,各自特性仍旧保留而作为超类的子

27、类。3.不要将一个对象的状态变化设计为多个子类,除非对象的多数多数行为行为是由状态来决定病态的继承泛化是提高软件重用性的一种机制,但不能为了重用而滥用泛化。不符合“is a kind of”采用组装结构,将复用对象作为组成元素翅膀鸟飞机3、抽象类如果一般类A的每个实例还必须是它的一个特殊类的成员,那么类A就被称为一个抽象类比如“学生”、“研究生”中,“学生”不是一个抽象类比如“支付”、“现金支付”、“信用卡支付”中,“支付”就是一个抽象类但面向对象的设计原则强调设计抽象类,比如学生,设计一个抽象学生类,然后派生出本科生和研究生抽象类意味着不能创建该类的实例4、多继承继承有单继承和多继承。多继承

28、是指一个子类继承了两个父类的属性和行为。橡皮铅笔铅笔橡皮分析模型静态模型:类图对象图动态模型:状态图粗略的对象交互图1、类图类会员会员代号姓名地址电话租借记录增加租借取全部租借类名属性服务/操作类的一般-特殊关系(三角形一端是一般类,另一端是特殊类)对象关联(连接线中间为关联名称,两端为角色和多重性,箭头为导向性)聚集(菱形一端为整体对象,另一端为部分对象,两端可表示多重性)组成(聚集的特例,表示整体对象与部分对象紧密依赖的合成关系)图书馆系统的类图碟片品种碟片类型碟片数制作公司图书管理员2职工号姓名图书品种作者出版社出版日期读者姓名身份证号借书卡号图书限额已借图书数碟片限额已借碟片数馆藏目录资源项馆藏流水号状态借书记录借书日期归还日期1*1*登记0.11馆藏资源品种资源名称国际出版号价格简介馆藏数量可借数量1*1.*1预定记录预定日期1*1罚款细则逾期记录逾期天数10.110.1*0.1*0.1使用拥有*1*1被预定*10.111.*1类图的实例首先看“动物”矩形框,它代表一个类。该类图分为三层,第一层显示类的名称,如果是抽象类就要用斜体显示。第二层是类的特性,通常就是字段和属性。第三层是类的操作,通常是方法和行为。注意前面的符号,+表示public, 表示priv

温馨提示

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

评论

0/150

提交评论