《建立基本模型-类图.ppt》由会员分享,可在线阅读,更多相关《建立基本模型-类图.ppt(79页珍藏版)》请在三一办公上搜索。
1、第4章 对系统的结构建模(类图),1,4.1.1 概念与表示法 对象是具有明确语义边界并封装了状态和行为的实体,由一组属性和作用在这组属性上的一组操作构成,是构成系统的一个基本单位,它用于描述客观事物。类是对一组具有相同属性和操作的一组对象的抽象描述。类为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和操作两个主要部分。,4.1 对象与类,2,4.1.1 概念与表示法一个类的所有对象具有相同的属性,是指所有对象的属性的个数、名称、数据类型都相同,各个对象的属性值则可以互不相同,并且随着程序的执行而变化。至于操作,对于一个类的所有对象都是一样的,即所有的对象共同使用它们的类定义中给出的操
2、作。由一个类生成的一个对象可以扮演不同的角色*。当一个对象扮演一个具体角色时,它展现给世界一个外观,与对象交互的客户根据对象在某时所扮演的角色而期望一定的行为*。一个类的一个角色是在特定的语境下该类的对象所呈现的行为。,4.1 对象与类,3,类 名,普通类,表示法:在模型中用类符号来表示一个类,它代表属于该类的全部对象实例。,最上面的那个名称栏包含类名;中间的分栏包含属性列表;最下面的分栏包含操作列表。每个属性和操作各占一行,,对象,4,在使用用况图完成捕获与描述需求后,已经对问题域和系统责任进行了分析,把用户的的需求落实到了各个用况之中。由于用况模型仅描述了系统内外的交互情况,从其中识别出来
3、的对象与类肯定是不够全面的。在识别对象与类时,问题域和系统责任仍是工作的基础。因为二者从不同的角度告诉分析员应该设立哪些对象。,412 识别对象与类,5,6,1、研究问题域 考虑问题域,侧重于客观存在的事物与系统中对象的映射。可以启发分析员发现对象的因素包括:人员、组织机构、物品、设备、事件(如索赔、上访、交易)、表格、日志、报告和结构等。其中的结构可能是多种多样的,例如,在概念类别上,汽车之上有车辆,之下可细分为客车和轿车,左右有摩托车和拖拉机,之内有发动机。它还可作成车队的一个成分。,2考虑系统边界 1)把一些人员和设备看作问题域范畴以内的事物,系统中的对象是对它们的抽象描述。侧重于以系统
4、中的对象模拟现实中的人和设备。2)对系统边界之外与系统进行交互的参与者,系统中需要设立相应的对象处理系统与这些实际的人和设备的交互,侧重于以系统中的对象处理现实中的人和设备与系统的交互。3)在系统中设立一个对象,处理与外系统的接口。,人员,设备,外系统,从不同的角度考虑人员和设备,7,3考虑系统责任 对照系统责任所要求的每一项功能,查看是否可以由现有的对象完成这些功能。如果发现某些功能在现有的任何对象中都不能提供,则可启发我们发现问题域中某些遗漏的对象。如果已经建立了用况模型,考虑执行下列的附加步骤:使用用况产生场景。使用场景寻找已错过的类。4.名词技术 从名词到对象或类通常有一对一的映射。运
5、用名词、代词和名词短语识别对象和类(寻找“现实世界”的对象和类)。用单个的专有名词或代词(Jim、他、她、雇员号5、我的工作站、我的家)以及直接引用的名词(第六个参赛者、第一百万次购买)识别对象。用复数名词(人们、顾客们、开发商们、用户们)以及普通名词(人、顾客、雇员、工作站)来识别类。,8,413 审查与筛选,(1)舍弃无用的对象通过属性判断:是否通过属性记录了某些有用的信息*?通过操作判断:是否通过操作提供了某些有用的功能*?二者都不是无用 通常,对象应该具有多个属性和操作。也存在对象没有属性仅提供操作,或有属性无操作的情况。,9,10,(2)对象的精简只有一个属性的对象,只有一个操作的对
6、象,班级,班主任姓名,1,1,班级班主任姓名,输出设备,格式转换器文件格式转换,输出设备文件格式转换,(3)与实现条件有关的对象,推迟到OOD考虑 系统责任所要求的某些功能例如系统安装、配置、信息备份、浏览可能无法从问题域中找到相应的对象来提供这些功能,可在设计阶段考虑专门为它们增加一些对象,既把它们推迟到设计阶段考虑。系统责任要求的某些功能可能与实现环境有关,也推迟到设计阶段考虑。例如:与图形用户界面(GUI)系统、数据管理系统、硬件和操作系统有关的对象。,11,414 抽象出类,1对象分类 先使用问题域知识从对象中识别出类,然后依据对象和类的定义,使用概括来寻找两个或多个共享相同特征的对象
7、,概括这些共同的方面来形成类。2、对类进行调整(1)类的属性或操作不适合该类的全部对象 例:“汽车”类的“乘客限量”属性,不适合于吊车、铲车。问题:分类不够详细进一步划分特殊类(2)属性及操作相同的类*经过抽象,差别很大的事物可能只保留相同的特征考虑能否合并为一个类,如计算机与吸尘器(3)属性及操作相似的类*考虑能否提升出一个一般类*,或形成整体部分结构。例:轿车、货车,抽象出汽车;机床与鼓风机用电机做成分.(4)同一事物的重复描述例:“职员”和“工作证”取消其中一个,12,415认识对象的主动行为并识别主动对象,主动对象是具有主动行为的对象,在设计阶段是拥有线程或进程并能够启动控制活动的对象
8、。主动类是其实例为主动对象的类。识别主动对象的策略:(1)考虑问题域 哪些对象需呈现主动行为*?-按定义(2)考虑系统责任 根据系统责任观察系统功能的构成层次,重点考虑完成最外层功能的对象是否应定义为主动对象。(3)考虑系统边界 哪些对象与参与者交互?如果一个交互是由参与者发起的,第一个处理该交互的对象是主动对象(4)进行操作执行路线的逆向追踪。,在分析阶段不能完全确定主动对象,13,active 类 名,类 名,主动类,主动对象,类 名,主动类的线框是粗黑的,或在主动类名之前要加一个主动性标记 active;在尚未确定是不是主动对象之前,暂时用普通对象的类符号表示。,14,416 类的命名适
9、合该类及其特殊类的全部对象实例*汽车加摩托车-机动车;还有马车-车辆反映个体而不是群体*书-书籍;船-船舶*使用名词,或带有定语的名词,避免无意义的符号 如线装书考虑使用适当种类的语言文字对类命名。在中国:可用中、英文双重命名*,417 建立类图的对象层 用类符号表示每个对象类填写类描述模板若发现新的属性与操作、关系,可以随时加到类符号中。,15,属性是用来描述对象静态特征的一个数据项 注意:属性是与问题高度相关的*。从技术观点上,属性是一些变量(数据项或状态信息),包含它的每一个对象(实例)都具有自己的值。按照面向对象方法的封装原则,一个对象的属性和操作是紧密结合的,对象的属性只能由这个对象
10、的操作存取。可见性 属性名:类型=初始值 可见性分为+(公有的)、#(受保护的)或-(私有的)、(包,只有在同一包中声明的类能够使用这一属性)。在对象/类中,必须给每一个属性一个唯一的名字。属性的类型可以是常见的基本数据类型,也可以是自己定义的类型。,4.2 定义属性与操作,421 定义属性,16,通过在类范围属性名和类型表达式画下划线的方式,表示类范围的属性,否则属性是实例范围的。,类 名,普通类,属性1属性n,操作1操作m,OO方法中有“实例属性”和“类属性”的概念之分。上面谈到的只是实例属性。类属性是描述类的所有对象共同特征的一个数据项,对于任何对象实例,它的属性值都是相同的。C+中冠以
11、static的成员变量是类属性,这样的属性对一个类的全部对象实例只是一份共同的数据空间,所以对任何对象而言,该属性的值总是相同的。实例属性和类属性各有不同的用途*。,17,识别属性*,按常识这个对象应该有哪些属性?在当前的问题域中,对象应该有哪些属性?根据系统责任,这个对象应具有哪些属性*?如信用卡的使用建立这个对象是为了保存和管理哪些信息?对象为了完成其功能,需要增设哪些属性?对象是否需要通过专设的属性区别其状态*?如设备可利用需求文档中的形容词或所有格短语*。若一个属性的结构较为复杂(即不仅仅是一些简单的数字或文本),可考虑把其作为对象。,18,筛选*是否体现了以系统责任为目标的抽象;例:
12、书的重量*?是否描述对象本身的特征;例:课程电话号码*?一个属性所对应的一个事物性质的粒度要适当。例如人的通信地址,包括国家、省、城市、街道、门牌号码等内容,但这些内容在通信地址这个概念上是不可分的。在定义“人员”对象的属性时,应该使用一个属性“通信地址”,而不应把有关通信地址的各项内容拆散开用多个属性来描述。若一个对象与另一个对象有关系,其属性必须捕获该对象的性质,而不是关系或关系中的其他对象的性质;如属性必须是整个实体的特征,而不是其成分的特征*可以从其它属性直接导出的属性*;与实现有关的因素,推迟到OOD考虑(规范化、对象标识、性能问题),19,属性的命名和定位 命名:原则与类的命名相同
13、定位:针对所描述的对象,适合全部对象实例。,属性的详细说明 把每个属性都填写到相应的类符号中去,并在相应的类描述模板中进行详细说明。,20,21,对象行为分类(1)系统行为例:创建、删除、复制、转存(2)对象自身的行为算法简单的操作例:读、写属性值(3)对象自身的行为算法复杂的操作计算或监控,4.2.2 操作,操作是类的对象被要求执行的服务。可见性 操作名(参数列表):返回类型 可见性的取值为+(公有的)、#(受保护的)、-(私有的)或(包)。内部操作和外部操作,特征标记 类范围操作(静态操作)是用来创造实例或者操纵静态属性的操作。例如C+中的前面冠以static的成员函数,就是类范围操作 表
14、示法 类范围的操作用带下划线的名字和类型表达式串表示。实例范围操作是默认的,对其不用标记。,概念与表示法,22,识别操作 诸如创建(创建并初始化一个新对象)、连接(将一个对象与另一个对象连接)、访问(得到或设置属性值)、断开连接(将一个对象与另一个对象的连接断开)和删除一个对象之类的操作都属于在算法上是简单的操作,在OOA不予以考虑。在OOA中,只对识别那些必须由对象提供的、在算法上复杂的业务操作(如要进行某些计算或监控操作)感兴趣。,23,(1)考虑系统责任有哪些功能要求在本对象提供*?(2)考虑问题域对象在问题域对应的事物有哪些行为*?(3)分析对象状态在每种状态下对象可能发生什么行为?对
15、象状态的转换,是由哪些操作引起的?-状态图讲述(4)追踪操作的执行路线模拟操作的执行,并在整个系统中跟踪*。(5)用动词识别操作(6)查看每一个属性,因为要用对象的操作来对其进行操纵,定义操作的策略与启发,24,25,审查对象的每个操作是否真正有用是否直接提供系统责任所要求的某项功能?或者响应其它操作的请求,间接地完成某种功能的某些局部操作?调整取消无用的操作是不是高内聚的一个操作应该只完成一项单一的、相对完整的功能*调整拆分 或 合并,审查与调整,命名:动词或动宾结构定位:与实际事物一致例:售货员售货*,商品售出*,操作的命名和定位,26,描述操作 把每个对象的操作都填写到相应的类符号中。在
16、类描述模板中,写出:说明操作的职责操作原型(消息的格式)消息发送(指出在这个操作执行时,需要请求哪些别的对象操作,即接收消息的对象类名以及执行这个消息的操作名)约束条件:如果该操作的执行有前置条件、后置条件,以及执行时间的要求等其它需要说明的事项,则在这里加以说明。实现操作的方法(文字、活动图或流程图)。,27,28,类(及其对象)之间的四种关系,分类关系、继承泛化(一般-特殊)generalization(generalization-specialization)构成关系聚合(整体-部分)aggregation(whole-part)静态联系关联(实例连接)association(inst
17、ance connection)使用关系(行为依赖)依赖Dependency这些关系形成了类图的关系层*,4.3 定义关系,29,1、概念 一般类、特殊类、继承、多继承、多态、泛化、“is a kind of”,泛化是较特殊的类和较一般的类之间的直接关系(继承关系),其中较一般的类具有较特殊的类的共同性质,较特殊的类继承较一般的类的性质,且还具有自己的性质,或额外的关联,较特殊的类的对象是较一般的类的对象的子集。,431 泛化,30,31,如果类A具有类B的全部属性和全部操作,而且具有自己特有的某些属性或操作,则A叫做B的特殊类,B叫做A的一般类。,另一定义:如果类A的全部对象都是类B的对象,
18、而且类B中存在不属于类A的对象,则A是B的特殊类,B是A的一般类。可以证明,以上两种定义是等价的,性质:后代将具有祖先的所有的关联。,32,33,把在一个类中没有实现的操作(即没有提供方法),称为抽象操作。抽象操作映射到C+,称作纯虚操作。含有抽象操作的类是不能直接实例化的,在UML中把这种类叫做抽象类。抽象类的作用是为了让其子类继承它的属性和操作等。,继承进一步地可分为单继承和多继承。,2、表示法,人员,股东,职员,顾客,股东职员,例:,抽象操作带有标记“abstract”,或者把操作的特征标记写成斜体来表示它是抽象的。,34,35,3、识别继承(泛化),(1)学习当前领域的分类学知识(2)
19、按常识考虑事物的分类(3)利用泛化的定义(右图)(4)考察类的属性与操作(左图)(5)看两个类的对象之间是否有“是一个”关系。,?,公司人员,姓名身份证号股份工资,?,公司人员,姓名身份证号,股东,股份,职员,工资,股东,姓名身份证号股份,职员,姓名身份证号工资,公司人员,姓名身份证号,股东,股份,职员,工资,?,36,(6)考虑领域范围内的复用,37,(1)问题域是否需要这样的分类?(例:书善本书*)(2)系统责任是否需要这样的分类?(例:职员本市职员)(3)是否符合分类学的常识?(用“is a kind of”去套),4、审查与调整,(4)是否构成了继承关系?(确实继承了一些属性或操作,如
20、航标船与一般的船)。,38,一般-特殊结构的简化(1)取消没有特殊性的特殊类,运输工具发动机载重量速度,飞机飞行高度 自动导航,汽车,运输,运输工具发动机载重量速度,飞机飞行高度 自动导航,运输,一、从一般类划分出太多的特殊类,使系统中类的设置太多,增加了系统的复杂性;二、建立过深的继承层次,增加了系统的理解难度和处理开销。,39,(2)增加属性简化一般特殊结构,人员,男 人,女 人,中国人,美国人,日本人,40,(3)取消用途单一的一般类,减少继承层次,设 备型号生产厂开启关闭,雷 达安装地点 监控,雷达型号生产厂安装地点 开启关闭监控,一般类存在的理由:有两个或两个以上的特殊类需要用它创建
21、对象实例有助于软件复用,电子设备,激光打印机,传真机,通讯设备,设备,电子设备,计算机设备,打印机,民用通讯设备,激光打印机,传真机,41,5、调整对象层和特征层 定义泛化的活动,将使分析员对系统中的对象类及其特征有更深入的认识。在很多情况下,随着泛化的建立,需要对类图的对象层和特征层作某些修改,包括增加、删除、合并或分开某些类,以及增、删某些属性与操作或把它们移到其它类。,对象之间的静态联系是指,最终可通过对象属性来表示的一个对象对另一个对象的联系。对象之间的动态联系是指,对象之间在行为(操作)上的依赖关系。用关联*(association)表示类之间的静态联系。用链*(link)表示类对象
22、之间的静态联系。,432 关联,42,1、概念与表示法 1)链链是对象间的语义连接,是对象引用的元组(列表)。在最常见的情况下,它是一对对象引用。它是关联的一个实例。这样的连接使得对象之间在某段时间内保持联系。把二元链表示为两个实例之间的路径。可以把一个实例与它自身之间的链表示为一个具有单一实例的环*。如果有关联名,就应该在它的下面画线表示链名。在链的各端可以表示角色名。多重性不能显示在链上,因为链是实例后面讲 在面向对象建模中,所有的链都被认为是双向的,当然也可以是单向的。一旦在两个对象之间建立了链,每一个对象都可以请求另一个对象的操作。对象之间有多个链是合法的*。,43,2)关联 如果类的
23、对象之间通过属性有连接关系,那么这些类之间的语义关系就是关联。两个类之间可以有多个关联 把二元关联表示成连接两个类符号的实线路径(两个端点可以连接到相同的类,但是端点是不同的)。关联名可以在路径附近表示出来。路径可以由一条或者多条连接线段组成。对精确地捕获自关联来讲,角色名是必要的。,44,教 师,学 生,0.*,1,指导论文,教师为学生指导论文,城市,0.*,0.*,有航线,城市之间有航线,例子,指导论文,45,3)多重性 多重性是非负整数开集的一个子集。另一端上的多重性是指,对于本端的一个对象,需要另一端对象的个数。把多重性规约表示成由用逗号分开的整数间隔序列组成的字符串,间隔代表整数的范
24、围(可能无限),其格式为:下限.上限其中的下限和上限都是文字整型值,说明从下限到上限的整数闭区间。此外星号(*)可以用于上限,表明不限制上限。如果多重性规约由单个的(*)构成,那么它就表明了无穷的非负正整数的范围,也即它等价于0.*。,46,例子0.1 10.*1.*1.61.3,7.10,15,19.*,47,48,表示法说明,类 1,类 2,多重性1 多重性2,连接名称,一对一的连接:,1,1,一对多的连接:,多对多的连接:,多重性的表示示例,A,B,有多少A的对象与B的一个对象相关,有多少B 的对象与A的一个对象相关,?,?,给定类A的一个对象a:a 可以恰好与类B的一个对象关联 a 可
25、以最多与类B的一个对象关联 a 可以与类B的一个或多个对象关联 a 可以与类B的零个或多个对象关联,49,成绩单,1,1,学生,有一个,系,1,1.*,教师,工作,系,0.1,1,教师,任系主任,课程,0.*,0.*,学生,选修,50,系,0.1,1,教师,系主任,nametitlessn,deptnamedeptNochairmanName,系,0.1,1,系主任,nametitlessn,deptnamedeptNo,商品序列号,商品规格描述价格通用产品编号,1 描述*,减少数据冗余,减少存储空间,51,教师,4)关联角色 在关联的每一个端点上有一个角色。每一个角色具有一个名字,用来描述其
26、类被其他的类看作是什么:把它称为角色名。当需要强调一个类在一个关联的确切含义时,使用关联角色名。替代的方法是,使用类的角色名,但要注意改变该类不要对其他类(如第3个类)产生影响。如果使用角色名,就可以省略关联名。,拥有者,52,张三,管理者 1,下属*,雇员,侯六,李四,王五,管理者,管理者,管理者,下属,下属,下属,53,类图,对象图,5)关联类(association class)具有关联和类的特征的建模元素。关联类既可以被看作是具有类的性质的关联,也可以被看作为具有关联性质的类。如果在具有关联关系的类中,存在着一个属性放在哪个类中都不合适的情况,就考虑使用关联类。例如,考虑一个人的薪水。
27、通常将属性建模在Person类中。然而,它实际上是类Person和Company之间的雇佣关系的一个属性。例如,一个人为两个不同雇主工作。把关联类表示成一个用虚线连接到关联路径的类符号。关联路径和关联类符号表示同一基础模型元素。名字可以放置在路径上或类符号中。,54,55,0.*,1,指导论文,教师,学生,有某些信息需要描述(题目、时间、成绩),把带有属性和操作的关联表示为关联类,电影明星安东尼霍普金斯在电影中扮演理查德M 尼克松。,56,57,6)N元关联N元关联是三个或三个以上类之间的一个关联。可以规约N元关联的多重性,但与二元关联的多重性相比,并不那样明显。在一个角色上的多重性,当该N元
28、关联中的其它N-1个值被确定时,表示该关联潜在的实例元组的数目。通过一个大的菱形(指的是比在路径上的终端符大)表示一个N元关联,这个菱形有很多与各参与的类相连接路径。关联的名字(如果有的话)显示在菱形附近。同二元关联一样,角色修饰可以显示在每一个路径上。可以用虚线把关联类符号与菱形连接起来,表示具有属性、操作或关联的N元关联。,58,59,60,7)限定符,在使用关联时,一种常见的用法是查找。给定关联一端类中的一个对象,按照另一端类的对象的特点,查找其中的对象或对象集时,就需要使用限定关联。例如,通常产品订单由若干定单行和一些其它描述信息组成,使用限定关联描述产品订单、订单行以及它们之间的关系
29、。,定单,产品名,定单行amount:Number,0.1,定单,定单行amount:Number,*,61,2 建立关联(1)认识对象之间的静态联系 考虑问题域和系统责任哪些类的对象之间的关系需要在系统中表达(P67)。(2)认识关联的属性与操作 对于考虑中的每一种关联,进一步分析它是否应该带有某些属性和操作。就是说,是否含有一些仅凭一个简单的关联不能充分表达的信息(P67)。(3)分析并表示关联的多重性 从连接线的每一端,看本端的一个对象可能与另一端的几个对象发生连接,把结果标注到连接线的另一端。(4)对多对多的关联的处理,关联角色,限定符的使用,62,3 对象层、特征层的增补及关联说明
30、在建立关联的过程中可能增加一些新的对象类,要把这些新增的类补充到类图的对象层中,并建立它们的类描述模板。,63,习题1、用关联类为公司和雇员之间的薪水关系建模。2、为人们之间的婚姻关系建模。,64,聚合又称整体-部分结构,用于描述系统中各类对象之间的组成关系,通过它可以看出某个类的对象,以另外一些类的对象作为其组成部分。1、概念与表示法聚合(aggregation)是关联的一种特殊形式,表示整体和部分之间的“整体部分”关系。聚集(aggregate)是聚合关系中作为“整体”的类,而把作为“部分”的类称为 成分或部分。类与类之间的聚合关系指的是,一个类的对象实例,以另一个类的对象实例作为其组成部
31、分,是种“a part of”或“has a”;也可理解为,一个类定义引用另一个类定义。组合是聚合的一种形式,其部分和整体之间具有很强的“属于”关系,整体类的对象管理部分类的对象,决定部分类的对象何时属于它,何时不属于它。部分可以先于整体消亡。这种聚集末端的多重性不能超过1。组合对象是组合类的实例。,433 聚合,65,聚合的性质1)结构性质 部分必须与它们所构建的整体有某些结构上或功能上的关系。2)数学性质a非对称性 如果对象A是对象B的一部分,那么对象B就不能是对象A的一部分。b传递性 如果对象A是对象B的一部分,对象B是对象C的一部分,那么对象A是对象C的一部分*。,66,67,整体对象
32、类,部分对象类,1.*,1.*,连接符:,表示法,汽 车,发动机,车 轮,1,4,6,0.1,0.1,例子:,多重性:一对一一对多多对多,多重性表示:固定的数目或范围例如:1 或 1.3不定的数目或范围例如:*或 0.*,构成,聚合上一般不标名称。异同?,1,1.*,1.*,1,组合,68,聚合,69,2 识别聚合,(1)物理上的整体事物和它的组成部分例:机器、设备和它的零部件(2)组织机构和它的下级组织及部门例:公司与子公司、部门(3)团体(组织)与成员例:公司与职员(4)一种事物在空间上包容其它事物例:生产车间与机器(5)抽象事物的整体与部分例:学科与分支学科、法律与法律条款(6)具体事物
33、和它的某个抽象方面例:人员与身份、履历(7)在材料上的组成关系 例如,面包由面粉、糖和酵母组成,汽车是由钢、塑料和玻璃组成。,70,3、审查与筛选,(1)是否属于问题域?例:公司职员与家庭*(2)是不是系统责任的需要?例:公司与工会*(3)部分对象是否有一个以上的属性?例:汽车与轮胎(规格)*(4)是否有明显的整体-部分关系?例:学生与课程,谁是整体?部分?,4、调整对象层和属性层 定义整体-部分结构的活动可能发现一些新的对象类,或者从整体对象的类定义中分割出一些部分对象的类定义,应把它们加入到对象层中,并给出它们的详细说明。,71,444 依赖 一个依赖规约了两个或多个模型元素(或两个模型元
34、素集合)之间的一种语义关系,对目标元素的改变可能需要改变该依赖中的源元素。下面种类的依赖是预定义的:access-访问;derive-派生;import-移入;refine-精化 trace-跟踪;use-使用 include 包含;extend扩展,等等,72,仅当被建模的关系不是结构关系时,才使用依赖。关联主要用于类间有结构关系的地方。把依赖表示为两个模型元素之间的虚线箭头。在箭头尾部的模型元素(客户)依赖箭头头部的模型元素(提供者)。箭头可以用放在双尖括号内的字符串标识。,73,74,44 接口平时在定义类时,可见性为公共的操作就构成了一组外部可访问的操作,为其它的类提供服务。把这组操作
35、组织起来,作为该类的一个或几个接口,说该类提供了对其接口的实现。还有一种接口是纯粹的,就象Java中的接口那样。这种接口仅具有操作说明,没有实现,它作为实现它和使用它的类的桥梁。在UML中,把一个接口定义为一个类、构件或子系统的对外可见的一组操作的描述符。它定义了类、构件或子系统对外提供的服务。接口定义了一个契约,在接口两端的遵循该接口的任何类、构件或子系统可以独立变更,但必须忠实地履行这个契约。,75,接口名,76,也可以把继承中的抽象类作为一个公共接口,由其特殊类对公共接口中的抽象操作进行实现,如下图所示。,抽象类可以作为接口,但严格地讲,二者是有区别的,是不相同的建模元素。抽象类可以含有
36、属性和一些具体操作,而接口没有属性,且不能在其中定义任何具体操作的方法。接口更像一个其所有的操作都是抽象的抽象类。,77,第4章 总结4.1 对象与类 对象、类、主动对象、主动类、主动操作、特征标记、类的角色4.2 属性 属性、实例属性、类范围属性4.3 操作 操作、抽象操作、类范围操作4.4 定义关系分类关系、继承泛化(一般-特殊)泛化、一般类、特殊类构成关系聚合(整体-部分)聚合、聚集、成分、组合静态联系关联(实例连接)关联、链、多重性、角色、多元关联、关联类使用关系(行为依赖)依赖 依赖,概念与表示法识别筛选与审查,78,79,习题1、论述类与对象之间的关系以及关联与链之间的关系。这些概念之间还有什么关系吗?2、针对下述问题,建立一个类图:有两种顾客,一种是常客,享受公司的一些优惠待遇;另一种是散户。3、面包是由面包片组成的。讨论面包及其切片之间的关系。,