系统分析-类与类.ppt
《系统分析-类与类.ppt》由会员分享,可在线阅读,更多相关《系统分析-类与类.ppt(98页珍藏版)》请在三一办公上搜索。
1、2023/11/16,1,第4讲 类与类图,2023/11/16,2,内容提要,类的定义类的表示:三部分类的关系:依赖、泛化、关联特殊类:接口,抽象类,参数化类建模指南对象图:“快照”,1.类的概念,2023/11/16,4,1.1 类的定义/1,用例图定义了系统应该具备的功能,它描述了系统应该为用户解决的问题。交互图描述了此问题的解决方案,它定义了为解决此问题软件系统中必须设置的软件对象及其职责,这些对象及其职责或语义,是解决方案的概念或系统词汇(vocabulary)。类描述了一组对象的公共的结构和行为,类为对象规定了它们的结构和所能提供的服务(操作),相当于为对象图中规定的系统词汇提供了
2、严格的定义,包括系统词汇的:静态结构动态行为类构成了系统建造的基础,2023/11/16,5,1.1 类的定义/2,类的静态结构,在UML里用属性(attribute)描述类的动态行为,由操作(operation)描述交互是用例图提出的问题的解决方案,交互由对象和它们之间的消息的传递构成在交互中,对象为与它相连接的其它对象提供服务,对象本身会有状态的保持和转换在一个系统中,具有相同的结构和提供相同的服务的对象可能不止一个,它们可以参与在不同的交互中,提供类似的服务类是解决用例视图定义的问题的解决方案中必须具备的对象的抽象,2023/11/16,6,1.1 类的定义/3,一个类描述了一组对象的公
3、共的结构和行为类是真实世界的事物的抽象当这些事物存在于真实世界中时,它们是类的实例,并被称为对象同一个类的各对象具有相同的属性,提供相同的操作,具有相同的语义,2023/11/16,7,1.2 类的表示,类的图形表示:它是分为三个分隔区(compartment)的长方形。其中:顶端的分隔区为类的名字,下面两个分隔区为可省略的,分别可以列出类的属性和操作,2023/11/16,8,2023/11/16,9,1.3 类的命名,类的名字是每个类所必有的构成,用于和其它类相区分类的名字可分为简单名字:简单名字是一个不包含冒号的字串复杂名字(路径名字):路径名是简单名字前面加上一个包含此类的所在的模型包
4、的名字,这两个名字之间用两冒号隔开,Temperature Sensor,Wall,Business Rules:FraudAgent,java:awt:Rectsngle,简单名字,路径名字,2.属性,2023/11/16,11,2.1 属性的概念/1,类不是孤立存在的,它的对象将参与一个或多个交互类捕获了系统实现方案中的概念或词汇,使得类代表某一类特定事物,具备特定的语义类的语义是对此对象代表的事物的性质的描绘,通过对事物性质的描绘,可以记录对象在交互过程中状态的变换,并可进一步决定对象在此状态下的行为例如:在基于窗口操作的操作系统中,处理窗口的对象描述窗口的尺寸、位置,类型等性质,窗口的
5、性质的不同取值又可以决定系统对鼠标操作的不同响应方式。,2023/11/16,12,2.1 属性的概念/2,类的属性,它是类的一个组成部分,描述了类在软件系统中代表的事物所具备的特征属性的定义在UML里,属性是类的一个具名的构成(named property),它描述了此构成在类的实例中能具备的取值范围根据定义:类的属性首先是类的一个组成部分;其次,类每个属性都必须有一个名字,以区别于类的其它属性。为了定义属性的取值范围,必须为属性指定类型。例如:布尔类型的属性可以取两个值:TRUE和FALSE;字节型的属性只能取256个值当一个类的属性被完备地定义后,它的任何一个对象的状态都被这些属性的特定
6、取值所决定,2023/11/16,13,2.2 属性的表示/1,属性的图形表示:类的属性被列在其中的第二个分隔区中属性分隔区是可省略的当属性分隔区未被省略时:属性的名字必须出现属性的名字后面是它的类型类型和名字之间用冒号(:)分隔,2023/11/16,14,2.3 属性的初始值,属性的初始值:当类的一个对象被创建,它的各个属性就开始有特定的状态。有时,对象的初始状态对此对象参与的交互是有意义的。这时,有必要在对象的类中定义其对象的属性的初始值初始值的图形表示类的属性的初始值在属性的类型的后面指定初始值和类型之间用等号(=)分隔属性的初始值是可选的当未为属性指定初始值时,属性的初值是不确定的,
7、2023/11/16,15,2.4 可省略的描述,除了属性的名字之外,属性的其它描述都是可省略的,包括:类型、初值、可见性,3.操作,2023/11/16,17,3.1 操作的概念/1,对象在交互中,存在着消息的交换消息是一个对象向另一个对象发送请求其提供服务的指令一个对象接收的各个不同的消息,构成了此对象的类能提供的服务的集合。类的操作就是对这些服务的具体规定,包括接收服务请求的格式以及类对合法请求所能提供的有效的服务的承诺如果把操作映射到C+语言,则操作就是C+的类的成员函数,2023/11/16,18,3.1 操作的概念/2,操作的定义:操作是一个类所能提供的服务的实现,此服务能被请求,
8、以改变提供服务的类的对象的状态或为服务的请求者返回一个值一个类的操作被定义后,它的任何一个对象都能提供此操作所定义的服务操作必须有一个名字可以有参数表可以有返回值,2023/11/16,19,3.2 操作的表示,按照操作的定义,类的操作所提供的服务可以分为两类一类是操作的结果引起了对象状态的改变,状态的改变也包括相应的动态行为的发生另一类是为服务的请求者提供返回值例如:执行特定的计算,并把结果返回给请求者操作的图形表示:操作被列在属性最下部的分隔区里操作分隔区是可隐藏的如果操作分隔区未被隐藏,则操作的名字必须列出,名字后面必须有一对括弧以表示此名字是操作的名字,2023/11/16,20,20
9、23/11/16,21,3.3 操作署名/1,操作署名(operation signature)在交互中,操作是通过消息启动的,为了使操作对应的服务被有效地提供,操作的请求者必须提供合法的启动消息,包括:合法的操作参数对操作的返回值(如果有的话)的正确解释消息的合法性在UML中,通过操作署名(operation signature)规定定义:操作署名是操作的参数的名字、参数类型、参数缺省值以及操作的返回值的类型的集合,2023/11/16,22,3.3 操作署名/2,操作署名的图形表示:在类的图符上,操作署名是可隐藏的如果不隐藏,则参数表出现在操作名后面的括弧内参数表内的各参数之间用逗号分隔,
10、参数包括名字、类型和缺省值在每个参数名字后面跟着的是参数的类型,它们之间用冒号分隔,类型后面是可选的参数缺省值,它和类型之间用等号(=)分隔如果一个参数被指定了缺省值,就意味着此操作被调用时,可以不指定此参数的值,这时操作认为调用者使用缺省值作为此参数的值。操作的返回值类型出现在此括弧之后,返回类型和括弧之间之间用冒号分隔。,4.类的表示方法,2023/11/16,24,4.1 类的说明,S,t,e,r,e,o,T,y,p,e,W,I,N,D,O,W,作,者,=,王,刚,状,态,=,测,试,可,访,问,性,名,称,:,类,型,=,缺,省,值,(,+,#,-,),可,访,问,性,函,数,名,(,
11、变,量,表,),:,返,回,类,型,(,+,#,-,),变,量,表,变,量,名,:,类,型,=,缺,省,值,2023/11/16,25,2023/11/16,26,4.2 属性和操作的表达/1,类的构成有可能很复杂,将产生很长的属性列表和操作列表,没有必要在模型图上把所有的属性和操作都绘制在模型图上。这是因为:一方面,这样会使UML图过于繁杂另一方面,出于表达特定问题的需要,不需要将与问题无关属性和操作与重要的属性和操作同时绘制在模型图上这时,可以应用UML的隐藏原则,在UML模型图上把对表达问题不重要的属性或操作隐藏因此,如果发现模型图上某个类的属性分隔区或操作缺失或分隔区内没有内容,不表示
12、此类没有属性或操作,有可能它们是被省略了。,2023/11/16,27,4.2 属性和操作的表达/2,类的隐藏表示,可以采取4种方式:隐藏分隔区有选择地隐藏属性/操作隐藏操作署名隐藏属性/操作的变体如果一个类的所有操作和属性可以根据它们的语义分为若干组,可以在操作或属性前面为它们指定变体标记,使得同一分组的操作或属性带有同样的变体标记,2023/11/16,28,5.类的建模指南,2023/11/16,30,5.1 类的设计的特点,类的设计是软件系统建造的第一步,它决定着软件系统结构合理性软件部件的可维护性可重用性可移植性软件系统的类的设置、职责的明确、类的属性和操作的确定,其过程是:用例驱动
13、的面向对象的,2023/11/16,31,5.2 类的职责/1,为了给软件系统设置有效的实现类,应当从系统的用例图出发,得出系统为实现用例规定的功能,内部应实现的交互通过合理地设置参与交互的对象的职责,确定这些对象的实现类的职责根据类的职责,以及其对象在交互中起的作用,为类指定属性和操作。,2023/11/16,32,5.2 类的职责/2,类由交互图导出在交互图中,不同的类互相合作,以完成用例图规定的功能或任务在交互中,不同的对象担负着不同的职责,为其它对象提供所需的服务对象的职责对应到其实现类,就成为了类的职责(responsibility)在UML里,职责是一个类所承担的义务或协议一个良好
14、定义的类应该有清晰的职责一个类只应承担一种职责类的职责划分的好坏,取决于对象参与交互时,此对象在交互中担任的职责的划分的合理性,2023/11/16,33,5.2 类的职责/3,类的职责是通过用例驱动,以面向对象的方式产生的 通过对用例的分析,产生了系统的交互。在交互中,通过以面向对象的方式分析交互中完成某任务所需的步骤及完成步骤的主体,以产生合理的对象职责的划分 例如:在位图浏览的交互中,专门设置“外壳”对象负责和操作系统打交道,又有专门的对象负责系统内部功能的实现(“内核”对象)在“内核”对象中,有职责明确的对象分别负责鼠标工具状态机的实现,位图显示状态的维护的实现等等有了合理的对象职责的
15、划分,就自然地导出了合理的类的职责的划分,2023/11/16,34,5.2 类的职责/4,指定类的职责,是对类进行建模的第一步类所应具备的属性和操作,将根据类的职责给出例如:“位图浏览”鼠标工具的对象的交互,“位图浏览”对象的职责是翻译鼠标消息,使其转换为对位图的浏览操作。该职责决定了实现位图浏览鼠标工具的类必须有的相应的操作接口,它接收传进来的三个鼠标消息,决定了这个类必须具备一个属性,作为状态变量以记录鼠标按键的状态处理鼠标移动消息时,如果鼠标按键处于按下状态,才能把鼠标移动消息“翻译”为位图的拖动操作,2023/11/16,35,5.2 类的职责/5,类的职责的描述:可以用非形式的普通
16、文本描述可以出现在操作分隔区下面的第四个分隔区内在某些工具里,类的职责不占一个单独的分隔区而是在一个专门的文档窗口(documentation)中出现考虑类的职责划分时,应注意类的职责的平衡分布,应注意既不要使一个类的职责过重、过多又不要使类的职责过于简单、平淡分析和考察类的职责的平衡分布,可以在交互图上进行,2023/11/16,36,5.3 指南/1,一个实用的软件系统,其结构是复杂的,类是其中基本的构成元素可以用模型包(package)将语义上紧密联系的类组织到一起在类的表达方面,应充分应用UML模型的隐藏机制,有重点地用类来表达系统的各个侧面,2023/11/16,37,5.3 指南/
17、2,软件系统只有和外部直接交互,才能够为其用户提供使用价值,因此在设计和建造一个软件系统时,免不了要对软件系统之外的非软件事物,如用户、外部设备等,进行分析和建模例如:建造一个信息管理系统,需要分析用户群的结构、分工、职责和业务流程,类和对象也是描述这类非软件事物的手段,可以用特定的类来代表一类特定的非软件事物,用交互图描述它们的业务流程,用属性和操作定义它们的职责,可以用UML的变体机制将非软件事物与软件事物相区分。,2023/11/16,38,5.3 指南/3,类描述了和软件系统在建造和实现过程中产生的相关概念或词汇对于大多数的软件系统而言,它们不可能直接在一个不含任何软件的纯硬件平台上建
18、造,总会存在一个软件的开发环境支持这个软件系统的建造,这包括:操作系统高级语言开发环境等这些系统本身已经存在了大量的预定义好的概念或词汇,亦即已经存在了大量预定义好的类或类型在这样的开发环境上设计软件系统的过程中,预定义类会被大量地引用例如:在应用MFC进行软件开发时,会有许多其类库中的类或类型被引用。在建模时,可以简单地把这些预定义类(类型),作为应用系统设计模型中的类来加以引用。在引用时,可以根据需要,利用UML的隐藏机制 不暴露或只暴露所需的属性或操作。,6.关系,2023/11/16,40,6.1 关系的定义/1,对象不是孤立存在的,它必定参与某一交互,参与一个交互的各对象之间必然要发
19、生语义的连接对象的特性,包括结构方面和行为方面的特性,在UML中,被类所捕获。对象的类之间,必然也存在语义上的连接。这种连接,在UML中,被抽象为类之间的关系在UML中,类之间的语义连接被定义为关系类之间的关系的建模,为其对象之间的交互提供了实现支持对象之间的交互,可以对应到类之间的关系,而这些关系,又可以被映射到大多数的程序设计语言,从而使得对象之间交互得到最终的实现,2023/11/16,41,6.1 关系的定义/2,在类之间的关系中,最常用的是依赖关系泛化关系关联关系它们在面向对象的建模中,起着十分重要的作用。,2023/11/16,42,6.2 关系的表示,关系的图形表示:UML中类之
20、间的关系被图形化地表示为连接类之间的路径。这些路径以不同的线型,区分不同的关系,关联,WIndow,open(),close(),move(),diaplay(),handleEvent(),consoleWindow,Event,DialogBox,control,依赖,泛化,2023/11/16,43,6.3 依赖关系/1,在一个交互中,存在着对象之间消息的传递消息的传递大多数情况下是以函数调用的形式实现的,有时也会通过直接访问目标对象的成员变量的形式实现消息的传递,意味着源对象的某些功能或动态特性将依赖于目标对象的功能或动态特性在类图上强调类的对象之间的这种关系,可以在对象的对应类之间建
21、立依赖关系,2023/11/16,44,6.3 依赖关系/2,依赖关系的定义:两个类之间的依赖关系,表明其中的一个类(客户类)依赖于另一个类(供应类)所提供的某些服务图形表示:依赖关系被图形化地表示为一个带虚线的箭头箭头所指的类是供应类(被依赖的类)箭头的出发点是客户类,2023/11/16,45,FilmClip,Channel,依赖关系,客户类,服务类,2023/11/16,46,6.3 依赖关系/3,两个类之间存在着依赖关系,意味着客户类的语义依赖于服务类的语义。服务类的语义的变化,将会导致客户类的语义的变化如果两个类的对象之间存在着下面的情形,且两个类之间不存在结构方面的联系(例如:供
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 系统分析
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6597643.html