第07讲_类与类图_第1页
第07讲_类与类图_第2页
第07讲_类与类图_第3页
第07讲_类与类图_第4页
第07讲_类与类图_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

1、软件工程薛建民类与类图类与类图薛建民薛建民 87818127软件工程薛建民回顾&用例规约:用例的文字描述,用例的核心&进行用例阐述成功场景(正常事件流的描述)扩展场景(备选事件流)约束等需要解决的问题软件工程薛建民类的设计与类图&类图类图&类的定义与表示类的定义与表示&类之间的关系类之间的关系&类图建模类图建模&对象与对象图对象与对象图软件工程薛建民类图示例软件工程薛建民类图&类图描述的是对象之间的结构静态关系,用于软件系统的静态建模。&类图是显示一组类、接口、协作以及它们之间关系的图。用于对系统静态设计视图建模。&类图通常包含下述内容:类接口协作关联关系依赖泛化NewClassNewInte

2、rfaceNewClass4NewClass5NewClass6NewPackageNewClass2NewClass3普通关联注释接口包泛化实现依赖软件工程薛建民类( Class )的定义1&类是面向对象系统组织结构的核心&对象表示被建模的应用领域中的离散概念物理实体&飞机、商业事物(如一份订单)、逻辑事物(如广播计划)、应用事物(如取消键)、计算机领域的事物(如哈希表)或行为事物(如一项任务)软件工程薛建民类的定义2&类是具有相似结构、行为和关系的一组对象的描述符。&类描述了一组对象的公共的结构和行为。类为对象规定了它们的结构和所能提供的服务.&类的组成属性操作类名属性操作属性可见性操作可

3、见性软件工程薛建民类的职责&类的职责:是类或者其他元素的契约或义务。&类的职责是自由形式的文本,他可以写成一个短语或是一段短文。职责软件工程薛建民类的职责&对类建模的一个好的开始点是详述词汇表中的事物的职责。&虽然实际上每个结构良好的类都最少有一个职责,最多也是可数的,但类可以有任何数目的职责。&当精化模型时,要把这些职责转换成能很好地完成这些职责的一组属性和操作。&职责是自由形式的文本。&可以把单一的职责写成一个短语、一个句子或 (最多)一段短文,写在 类的描述栏中 。 软件工程薛建民不同阶段的类&类的划分A、概念层(需求分析阶段)4描述了问题领域的概念。4很少考虑或不考虑实现问题.4应独立

4、于具体的程序设计语言。B、说明层(设计阶段)4描述软件的接口部分,而不是软件的实现部分。C、实现层(实现阶段)4只有在实现层才真正考虑类的实现问题,提供类的实现细节。Student软件工程薛建民v 抽象类是一种不能够被直接实例化的类,也就是说不能够创建一个属于抽象类的对象。v 接口则是一种类似于抽象类的机制,它是一个没有具体实现的类 。 类的种类类的种类抽象类和抽象方法用斜体表示软件工程薛建民类的种类类的种类2 2v 关联类v 关联类既是关联也是类,它不仅像关联那样连接两个类,而且还可以定义一组属于关系本身的特性 。软件工程薛建民类的种类类的种类3 3v 模板类v 可以根据占位符或参数来定义类

5、,而不用说明属性、方法返回值和方法参数的实际类型 。软件工程薛建民v 主动类的实例称为主动对象,一个主动对象拥有一个控制线程并且能够发起控制活动;它不在别的线程、堆栈或状态机内运行,具有独立的控制期。从某种意义上说,它就是一个线程。v 在诸如Java的语言中,允许你将一个类的定义放在另一个类定义的内部,这就是嵌套类,在Java中也称为内层类。嵌套类是声明在它的外层类中的,因此只能够通过外层类或外层类的对象对它进行访问软件工程薛建民类的版型(Stereotype)&UML的三种扩充机制(tagged value, constraint, stereotype)之一。Stereotype也有翻译为

6、构造型,衍型。&建模人员在已有的构造块上派生出新的构造块 ,这些新的构造块适合于特定问题。&版型与父类/子类不一样如:接口是类的版型,Actor是版型化的类。软件工程薛建民边界类、控制类和实体类的划分&UML中有三种主要的类版型:Boundary,Entity,Control。&边界类(Boundary class)位于系统与外界的交界处,处理系统环境和系统内部间的通信,包括所有窗体(form)、报表(report)、与外部设备的接口(interface),以及与其它系统的接口等。&UML中边界类的表示:Label形式Decoration形式Icon形式软件工程薛建民边界类、控制类和实体类的划

7、分&实体类(Entity class)保存要持久存储的信息。UML中实体类的表示:Label形式Decoration形式Icon形式类分析数据库设计实体类表属性字段v实体类可以通过事件流和交互图发现。实体类通常用领域术语命名。软件工程薛建民边界类、控制类和实体类的划分& 控制类(Control class)用于描述一个Use Case 所特有的事件流控制行为。多个用例可以共用一个控制类。&控制类将Use Case 所特有的行为进行封装,具有良好的隔离作用。概念上,拟建系统的其他部分(边界类和实体类)将与use Case 具体执行逻辑形成松散耦合。UML中实体类的表示:Label形式Decora

8、tion形式Icon形式软件工程薛建民确定类之间的关系确定类之间的关系&识别类之间的关系建立关联创建角色确定重数&聚合、组合、自反、限定&识别接口和抽象类软件工程薛建民类的关系&依赖&泛化&关联&实现软件工程薛建民依赖&“使用”关系。意味着一个元素使用另一个元素来完成任务软件工程薛建民依赖分类依赖分类软件工程薛建民依赖关系示例依赖关系示例软件工程薛建民泛化关系泛化泛化- -定义&超类和子类的关系组成,一般与具体的概念&是“is a kind of” 关系:玫瑰是一种花软件工程薛建民泛化关系软件工程薛建民泛化示例泛化示例-1-1软件工程薛建民泛化示例泛化示例-2-2软件工程薛建民泛化示例泛化示例

9、- -多重继承多重继承1 1软件工程薛建民泛化示例泛化示例- -多重继承多重继承2 2软件工程薛建民关联关系软件工程薛建民一般的关联关系&关联关系连接两个类并指示它关联关系连接两个类并指示它们之间的结构关系。们之间的结构关系。&关联关系可能有一个表示两个关联关系可能有一个表示两个类之间关联的名称。类之间关联的名称。ManagerCompanyWorks For软件工程薛建民一般的关联关系&当一个类参与到一个关联当一个类参与到一个关联关系中时,它在该关系中扮关系中时,它在该关系中扮演一个特定的角色。演一个特定的角色。ManagerCompanyEmployeeEmployer软件工程薛建民关联角

10、色的多重性&0.1&0.*&1.*&3.5&7,8,12FourWheeledVehicleDoor14软件工程薛建民聚合关系1&关联关系的扩展,也称整体部分关系,“has a”&两种关系简单聚合组合软件工程薛建民简单聚合1软件工程薛建民简单聚合2&整体和部分的生命周期互不相关FourWheeledVehicleDoor14SeatWheel42.5软件工程薛建民组合关系1&整体部分关系,强关系软件工程薛建民组合关系2&事例一个房间有两个门大楼有房间公司有部门书有章节软件工程薛建民关联示例关联示例- -自身关联自身关联软件工程薛建民限制性关联限制性关联软件工程薛建民关联类关联类关联本身可以有自

11、己的属性和操作关联本身可以有自己的属性和操作关联类关联类软件工程薛建民关联类使用软件工程薛建民关联类与普通类关联类与普通类软件工程薛建民实现实现- -定义定义&将一种模型元素(如类)与另一种模型元素(如接口)连接起来&接口只是行为的说明而不是结构或者实现软件工程薛建民实现示例实现示例-1-1软件工程薛建民实现示例实现示例-2-2软件工程薛建民建立类图的步骤&研究分析问题领域,确定系统的需求。&发现对象与类,明确它们的含义和责任,确定属性和操作。&发现类之间的关系。把类之间的关系用关联、泛化、聚集、组合、依赖等关系表达出来。&设计类与关系。调整和细化已得到的类和类之间的关系,解决诸如命名冲突、功

12、能重复等问题。&绘制类图并编制相应的说明。软件工程薛建民类的识别类的识别&识别原型中的类名词法:搜索用例并找出所有名词,组成候选类CRC技术应用筛选规则软件工程薛建民应用筛选规则1&删除具有如下特征的候选类冗余:商品-货物,税-税金,款额-销售款不相关:错误、利益操作:税额计算、金额合计事件:描述特定时间频率的名词,每日产生一个报表软件工程薛建民应用筛选规则2&删除具有如下特征的候选类属性:4描述了另一个类的结构的名词,如商品标识码、信用卡号4注意:在不同的应用中可能会不同2邮政编码:通常是属性,但对邮政服务,可能包含(地理位置、统计、费率结构、运送信息)属性和(投送线路、日期)行为软件工程薛

13、建民应用筛选规则3&删除具有如下特征的候选类角色:描述一个特定实体的状态或其分类的名次多半不是类,他是一个角色,顾客最佳顾客实现结构:描述硬件元件(打印机)或算法(复利计算)软件工程薛建民POS销售用例规约1.1. 顾客带着商品到顾客带着商品到POSPOS终端出准备购买。终端出准备购买。2.2. 出纳员开始一次新的销售。出纳员开始一次新的销售。3.3. 出纳员输入商品标识码。出纳员输入商品标识码。4.4. 系统记录销售的商品并给出商品的描述、单价和折扣,并根据某些价格规则系统记录销售的商品并给出商品的描述、单价和折扣,并根据某些价格规则计算所应付的款额。出纳员重复步骤计算所应付的款额。出纳员重

14、复步骤3 3和步骤和步骤4 4,一直到处理完所有商品为止。,一直到处理完所有商品为止。5.5. 系统给出所应支付的总款额并计算税金。系统给出所应支付的总款额并计算税金。6.6. 出纳员告诉顾客总价并请求付款。出纳员告诉顾客总价并请求付款。7.7. 顾客付款,系统处理支付。顾客付款,系统处理支付。8.8. 系统记录下已完成的销售,并将销售和支付信息发送给外部的账目系统以及系统记录下已完成的销售,并将销售和支付信息发送给外部的账目系统以及存货清单系统。存货清单系统。9.9. 系统打印收据。系统打印收据。10.10.顾客带着收据和商品离开。顾客带着收据和商品离开。软件工程薛建民POS销售类分析&边界

15、类用户界面类( POS 机界面)条型码扫描器打印机接口与信用卡付款系统连接软件工程薛建民POS销售类分析&控制类pos销售软件工程薛建民POS销售类分析&实体类&类的识别方法识别原型中的类4名词法:搜索需求或者用例并找出所有名词,组成候选类4CRC技术4应用筛选规则(去除不相关的、去除冗余、去除模糊的、去除不适宜的对象)软件工程薛建民筛选候选类:名词法1.1. 顾客顾客带着带着商品商品到到POSPOS终端终端出准备购买出准备购买2.2. 出纳员出纳员开始一次新的开始一次新的销售销售3.3. 出纳员出纳员输入输入商品标识码商品标识码4.4. 系统系统记录销售的记录销售的商品商品并给出商品的并给出

16、商品的描述描述、单价单价和和折扣折扣,并根据某些,并根据某些价格规则价格规则计算所应付的计算所应付的款额款额。出纳员出纳员重复步骤重复步骤3 3和步骤和步骤4 4,一直到处理完所有,一直到处理完所有商品商品为止。为止。5.5. 系统系统给出所应支付的给出所应支付的总款额总款额并计算税金并计算税金6.6. 出纳员出纳员告诉告诉顾客总价顾客总价并请求付款并请求付款7.7. 顾客顾客付款,付款,系统系统处理处理支付支付8.8. 系统系统记录下已完成的记录下已完成的销售销售,并将,并将销售销售和和支付信息支付信息发送给外部的发送给外部的账目系统账目系统以及以及存货清单系统存货清单系统9.9. 系统系统

17、打印打印收据收据10.10.顾客顾客带着带着收据收据和和商品商品离开离开软件工程薛建民筛选候选类&“系统”是指将要开发的系统,即系统本身,无须对其进行建模;&“POS终端”是一个界面类,已经在界面类中建模;&“顾客”、“出纳员”是否建模要看系统边界;此处只将“顾客”、“出纳员”都作为候选类建模;&很明显“商品”是一个很重要的类,而“商品标识码”、“描述”、“单价”、“折扣”则都是用来描述商品的基本信息的,因此应该作为“商品”类的属性处理,而“规则”是指价格的生成规则,而价格则是商品的一个属性,因此“价格规则”可以作为编写“商品”类构造函数的指南;&“总款额”、“款额”、“总价”都是相同的意思,

18、代表一次销售应该支付的总款额,所以建模一个“销售单”候选类。“总款额”作为“销售单”的一个属性。软件工程薛建民筛选候选类&“账目”是记录每次销售明细及总额的,应该成为一个候选类;&“存货清单”是指库存情况,每次销售后都要更新库存,所以也该成为一个候选类;&“收据”是顾客购买凭证,可以退货,所以也该成为一个候选类;&隐含的候选类:“销售单列表”软件工程薛建民获得的候选类&实体类商品、账目、存货清单、收据、销售单、销售单列表等&其他外部4顾客、出纳员软件工程薛建民商品销售单出纳员存货清单收据账目1.*11.*1.*11处理1.*1销售单列表11.*11顾客购买0.*1多对多软件工程薛建民细 化商品

19、销售单出纳员存货清单收据账目1.*111处理1.*1销售单列表11.*11顾客购买0.*1销售单项11.*11软件工程薛建民细化后的类图商品+商品标识码-商品名称-商品类别-单价销售单+销售单编号+出纳员编号+商品标识码-日期-时间-总价-支付方式+计算总价()+计算折扣()+计算找零()出纳员+出纳员编号-出纳员姓名存货清单+商品标识码-商品数量收据账目+汇总()1.*111处理1.*1销售单列表+查询()+更新()+插入()+删除()11.*11顾客购买0.*1销售单项+商品标识码-商品数量-价格11.*11软件工程薛建民识别类之间的关系类类关联关联类类Cashier 输入输入MerchandiseSaleForm包含包含SaleFomrLineSaleFormLine显示显示MerchandiseSaleForm由由支付支付InvoiceInvoice计入计入AccountBookInvoice计算计算TaxInfoemationMerchandise更新更新StockListPayment被特化为被特化为cashPayment被特化为被特化为Creditcard软件工程薛建民类图软件工程薛建民对象( ObjectObject)定义&对象是类的实例&是完全描述它的类的直接实例和那个类的祖先的间接实例(如果允许多重分类,则对象可能是多个类的

温馨提示

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

评论

0/150

提交评论