第07讲类的提取与设计

  • 格式:pps
  • 大小:1.79 MB
  • 文档页数:51

类的提取与设计薛建民xjm@87818127回顾活动图主要用于描述某一方法、机制或用例的内部行为适合描述多个对象跨越多个用例时的总面貌2/49结构模型视图用户视图用例图实现视图结构视图行为视图环境视图类图对象图顺序图协作图状态图活动图组件图部署图主要内容设计过程类图类的定义与表示 静态建模类的分析与获取设计过程-设计过程的活动总体设计详细设计数据设计体系结构设计过程设计接口设计管理方面技术方面设计过程-设计活动数据设计将实体-关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构定义。

体系结构设计定义软件系统各主要成分之间的关系。

接口设计根据数据流图定义软件内部各成分之间、软件与其他协同系统之间及软件与用户之间的交互机制。

过程设计则是把结构成分转换软件的过程性描述。

在编码阶段,根据这种过程性描述,生成源程序代码,然后通过测试得到完整有效的软件。

为最终系统设计的组件用户界面设计,格式报告、输入输出控制网络设计、将系统连在一起的硬件与中间层数据库设计、详细的底层数据库结构完整的系统系统接口设计、描述了与其他系统的通信应用设计、计算机程序集和模型类图示例类图描述的是对象之间的结构静态关系,用于软件系统的静态建模。

类图是显示一组类、接口、协作以及它们之间关系的图。

用于对系统静态设计视图建模。

类图通常包含下述内容:类接口协作关联关系依赖泛化类很少单独存在。

当建造模型时,通常要注重于相互作用的那些类群(类簇)。

在UML中,这些类的群体形成了协作,并且通常在类图中被可视化。

类的群体协作主要通过类之间的各种关系来表达。

类是面向对象系统组织结构的核心 对象表示被建模的应用领域中的离散概念—物理实体飞机、商业事物(如一份订单)、逻辑事物(如广播计划)、应用事物(如取消键)、计算机领域的事物(如哈希表)或行为事物(如一项任务)类是有着相同结构、行为和关系的一组对象的描述符号类定义了一组有着状态和行为的对象。

属性和关联用来描述状态。

个体行为由操作来描述,方法是操作的实现所有的属性与操作都被附在类或其他类元上对象的生命期由附加给类的状态机来描述类的表示法是一个矩形,带有类名、属性和操作的分格框组成一个类从它的双亲和祖先那里继承状态和行为描述,并且定义它的后代所继承的状态和行为描述含义分层--类可以存在于模型的几种含义层中,包括分析层、设计层和实现层每个类都必须有一个有别于其他类的名称,类名称是一个文本串。

单独的名称叫做简单名(simple name);用类所在的包的名称作为前缀的类名叫做路径名。

一个包中的各个类的名称都必须是唯一的。

属性(attribute)是已被命名的类的特性,它描述了该特性的实例可以取值的范围。

类可以有任意数目的属性,也可以没有属性。

属性描述了正被建模的事物的特性,这些特性为类的所有对象所共有。

属性集合属性集合(Attributes):属性集合描述了该对象的属性的当前值。

根据图的详细程度,每条属性值可以包括属性名称、属性类型和属性当前值。

UML规定类的属性的语法为:属性名:属性类型= 属性值类的操作操作(operation)是一个服务的实现,该服务可以由类的任何对象请求以影响其行为。

操作是你能对一个对象所做的事情的抽象,并且它由这个类的所有对象共享。

一个类可以有任意数目的操作,也可以没有操作。

类的操作可以用操作查询、修改对象属性的特性。

调用对象的操作经常(不总是)会改变对象的数据或状态。

操作名可以是像类名那样的正文。

实际上,操作名是描述它所在类的一些特性的动词或动词短语。

操作集合操作用于修改、检索类的属性或执行某些动作。

操作通常也被称为功能,在软件开发的某些阶段操作有时也被称为行为,但是它们被约束在类的内部,只能作用到该类的对象上。

操作名、返回类型和参数表组成操作的接口。

UML规定操作的语法为:可见性操作名(参数表):返回类型职责(responsibility)是类的契约或责任。

当创建一个类时,就声明了这个类的所有对象具有相同种类的状态和相同种类的行为。

在较高的抽象层次上,这些相应的属性和操作正是要完成类的职责的特征。

对类建模的一个好的开始点是详述词汇表中的事物的职责。

虽然实际上每个结构良好的类都最少有一个职责,最多也是可数的,但类可以有任何数目的职责。

当精化模型时,要把这些职责转换成能很好地完成这些职责的一组属性和操作。

职责是自由形式的文本。

可以把单一的职责写成一个短语、一个句子或(最多)一段短文,写在类的描述栏中。

类的其他特征属性、操作和职责是创建抽象所需要的最常见的特征。

事实上,对于大多数要建造的模型,这3种特征的基本形式足以传达类的最重要的语义。

类还有一些高级特征:UML可以对多重性、可见性、特征标记、多态性和其他特性建模。

一个类的简单表示法雇员学生汽车注册表类属性EmployeeemployeeIDEmployeenamedateofBirthSalarydepartment类的属性和缺省值EmployeeemployeeID:IntegerEmployeename:StringdateofBirth:DOBSalary:Float=0.0Department:String类的操作Employee employeeID:IntegerEmployeename:String….setEmployeeDetails()getEmployeeDetails()setSalary(salary:Float)getSalary():Float….可见性构造型的使用 为每一个属性和操作集分类,并且为该组提供一个名称称为一个构造型 用《》括起来Employee << basic details >> employeeId : Integer employeeName : String dateOfBirth : DOB<< employment details >> salary : Float = 0 department : String...<< setter operations >> setEmployeeDetails() setSalary(salary : Float) ...<< getter operations >> getEmployeeDetails() getSalary() : Float类的职责EmployeeResponsibilities--maintain the employee details--determine the age of the employee --capable of setting employee details类的分析与提取名词法:搜索用例并找出所有名词,组成候选类CRC 技术:类-职责-协作31/53类名:职责:协作者:代表了对系统设计中一个或几个类或若干子系统的抽象特征侧重处理功能性需求很少定义或提供任何接口,其行为由职责表示定义的属性是较高层次关系也是较高层次的、概念性的三种版型边界类实体类控制类用例中获取类边界类负责系统与系统的外部环境的通信,提供系统和用户、系统和其他系统的界面常常代表窗口、表单、窗格、通信接口、打印机接口、传感器、终端及API等的抽象每个边界类至少与一个执行者有关实体类类的信息和行为存在较长时间,是现实问题的抽象,通常叫域类,是现实世界的实体,或需要执行系统的内部事务。

通常独立于外部环境,多数时独立于应用。

多数情况下,直接由业务实体类导出通常是系统需要用来完成某个责任的类,需要从事件流中的名词中发现控制类用来规范一个或多个类的行为。

规范用例中实现系统行为的类的事件在初期,可以认为每一个执行者/用例对都有一个控制类。

控制类响应用例中的事件流控制类代表与其他对象之间的协作、排序、事务处理以及对其他对象的控制,常常用于封装与特定用例有关的控制。

边界类用户界面类(POS 机界面) 与数据库连接与外部信用卡连接税务系统控制类一个用例一个,pos 销售实体类从用例描述中的名词中发现 商品、账目、存货清单、收据、销售单、销售事件等其他外部◆顾客、出纳员等类的识别识别原型中的类名词法:搜索用例并找出所有名词,组成候选类CRC技术应用筛选规则识别类的属性和操作删除具有如下特征的候选类冗余:商品-货物,税-税金,款额-销售款不相关:错误、利益操作:税额计算、金额合计事件:描述特定时间频率的名词,每日产生一个报表删除具有如下特征的候选类属性:◆描述了另一个类的结构的名词,如商品标识码、信用卡号◆注意:在不同的应用中可能会不同⏹邮政编码:通常是属性,但对邮政服务,可能包含(地理位置、统计、费率结构、运送信息)属性和(投送线路、日期)行为删除具有如下特征的候选类角色:描述一个特定实体的状态或其分类的名次多半不是类,他是一个角色,顾客—最佳顾客实现结构:描述硬件元件(打印机)或算法(复利计算)确定类的属性与操作类的属性名称、类型、初始值类的操作名称、参数、参数类型、返回值等注意可见性44/53类属性操作Cashier namecashierIDaccess CashierInfo()SaleForm datecashierIDgetSaleSum()SaleFormLine merchandiseIDpricegetPrice() getNumberMerchandise merchandiseIDmamePricespecificationlgetName() getAmount() getPrice() setPrice()Voucher dateMerchandiseIdset Merchandise()类属性操作StockList merchandiseIDmerchandiseAmount GetAmount() setAmount()AccountBook datecashierIdaccount get CashierId() get Account() setAccount()TaxInfomation datecustormIdgetTaxSum()TaxOffcie nametelephonegetTaxCal() InvoicePayment小结类的定义与图示 类的获取与分析类图元语类第一栏是类名,第二栏是类的属性,第三栏是类的操作包包表示一个类图的集合对象对象是类的一个实例关联关联用于表示类的对象之间的关系,其特殊形式有组成关联和聚集关联聚集关联聚集关联用于表示类的对象之间的关系是整体与部分的关系组成关联组成关联用于表示类的对象之间的关系是整体拥有各部分且部分与整体共存亡Package类图元语-2链接链接用于表示对象之间的关联关系的一个实例泛化关系泛化关系(继承关系)定义类和包之间的一般元素和特殊元素之间的分类关系依赖关系有两个类或包X、Y,修改X的定义引起对Y的定义的修改,则称Y依赖于X注释体注释体用于对UML实体进行文字描述注释连接注释连接将注释体与要描述的实体相连实验07提取任务中的各种类 描述其属性与方法。