您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第6章类图和对象图-郭
第6章类图和对象图6.1类图的概念6.2类图建模技术6.3对象图6.4补充:分析类类图类图描述系统中类的静态结构,描述系统中的类及类之间的关系,还描述类的内部结构(类的属性和操作)。类图描述的是一种静态关系,在系统的整个生命期中都是有效的。对象图是类图的实例,由于对象存在生命周期,所以对象图只能在系统的某一时间存在。类图的地位类图是面象对象系统建模中最常用的图。类图是定义其它图的基础,在类图的基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其它方面的特征。类图中的类可以直接用某种面向对象编程语言实现。6.1类图的概念描述类、接口及它们之间关系的图。显示系统中各个类的静态结构。6.1.1概述类图的元素:①类(Class)②接口(Interface)③依赖关系(Dependency)④泛化关系(Generalization)⑤关联关系(Association)⑥实现关系(Realization)6.1.2类类是构成类图的基础,也是面向对象系统组织结构的核心。类是对一组具有相同属性、操作、关系和语义的对象的抽象。类包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation)。UML规范采用一个具有3个分栏的图标表示一个类。•名称分栏必须出现,而属性分栏和操作分栏可以出现或不出现。•当隐藏某个分栏时,并非表明某个分栏不存在。隐藏操作参数隐藏可见性6.1.2类1名称2属性3操作4职责5约束6注释(1)名称应该来自系统的问题域。应该是一个名词。分为简单名称和路径名称。(2)属性描述了类在软件系统中代表的事物(即对象)所具备的特性。类可以有任意数目的属性,也可以没有属性。在UML中,类属性的语法为:1.可见性可见性描述了该属性对其它类是否可见,以及是否可以被其它类引用。类型:①公有(Public)“+”②私有(Private)“-”③受保护(Protected)“#”注意:UML未规定默认的可见性,如果没有给出,表明该属性的可见性尚未定义。2.属性名每个属性都必须有一个名字以区别于类中的其他属性。属性名由描述所属类的特性的名词或名词短语组成。单字属性名小写,如果属性名包含了多个单词,这些单词要合并,且除了第一个单词外其余单词的首字母要大写。----建议3.类型简单类型:①整型②布尔型③实型④枚举类型系统中的其他类4.初始值目的:①保护系统的完整性,防止漏掉取值或被非法的值破坏系统的完整性。②为用户提供易用性。5.属性字符串属性字符串是用户对该属性性质的一个约束说明。例如{只读}这样的特性说明该属性的值不能被修改。任何希望添加在属性定义字符串值但又没有合适地方可以加入的规则,都可以放在属性字符串里。+status:Status=unpaid{unpaid,paid}+color:Color=red{red,green,yellow}确定取值范围补充:作用域作用域(scope)是与属性和操作相关的一个重要概念。存在两种作用域:1.实例(instance)作用域下,类的每个实例对象都有自己的属性值和操作。2.分类符(classifier)作用域下,一个类的所有实例只存在一个属性值和操作。分类作用域的属性和操作名字要带下划线。类的作用域属性:分类作用域的属性,它能被所属类的所有对象共享。例如:C++中的静态成员静态属性属性声明的例子Points属性的多重性为2..*,表示该属性值有2个或者多个,同时这些值之间是有序的。Name属性的多重性为0..2,表示该属性值有可能是1个或者2个,也可能值为null。(3)操作对类的对象所能做的事务的抽象。一个类可以有任意数量的操作或者根本没有操作。返回类型、名称和参数一起被称为操作签名。在UML中,类操作的语法为:操作1.可见性2.操作名3.参数表4.返回类型5.特性字符串1.可见性类型:①公有(Public)“+”②私有(Private)“-”③受保护(Protected)“#”④包内公有(Package)“~”包内公有(Package)“~”包内公有用来描述操作的可访问性的可见性为包内公有的操作可以被其所在包的对象访问。2.操作名用来描述所属类的行为的动词或动词短语。单字操作名小写,如果操作名包含了多个单词,这些单词要合并,并且除了第一个单词外其余单词的首字母要大写。3.参数表一些按顺序排列的属性定义了操作的输入。是可选的,即操作不一定必须有参数才行。定义方式:“名称:类型”。若存在多个参数,将各个参数用逗号隔开。参数可以具有默认值。4.返回类型是可选的,即操作不一定必须有返回类型。绝大部分编程语言只支持一个返回值。具体的编程语言一般要加一个关键字void来表示无返回值。5.特性字符串在操作的定义中加入一些除了预定义元素之外的信息。例如:{query}这样的特性说明该操作不会修改系统的状态。{update}这样的特性说明该操作会修改系统的状态。(4)职责(responsibility)类图标中还可以制定另一种类的信息。在操作列表框下面的区域,可以用来说明类的职责。职责描述了类做什么--类的属性和操作能完成什么任务。例如,一个洗衣机的职责是将脏衣服作为输入,输出洗干净的衣服。职责(5)约束指定了类所要满足的一个或多个规则。形式化的方法。(6)注释注释可以包含图形也可以包含文本。6.1.3接口和抽象类---抽象类抽象操作:是指在指定该操作的类中并没有该操作的实现方法,而只是显示了操作签名的那种操作。(例如,C++中的纯虚函数)抽象类:至少拥有一个抽象操作的类。在UML图中,抽象操作的显示是在操作签名后面用特性字符串{abstract},或者将操作签名用斜体字体方式显示。在UML图中,抽象类的显示是在类名后面用特性字符串{abstract},或者将类名用斜体字体方式显示。1.如果一个类继承了抽象类,该类要么必须实现所有的抽象操作称为具体类,要么该类也称为另一个抽象类。2.抽象类是不能产生实例的。抽象类名用斜体接口是一组没有相应方法实现的描述。接口通常被描述抽象操作,即之用操作名、参数表和返回类型说明接口行为,而操作的实现部分将出现在实现该接口的元素中。使用接口可以很好地将类所需要的行为与该行为如何被实现完全分开。在进行系统建模时,接口起来十分重要的作用,因为模型元素之间的协作是通过接口进行的。6.1.3接口和抽象类---接口(interface)6.1.3接口和抽象类---接口(interface)uml中接口通常只包含操作不包含属性。接口不能实例化为对象。一个类可以实现一个或多个接口。如果类实现了接口,但未实现该接口中的所有操作,那么此类必须声明为抽象的。与java中接口的概念稍有不同。接口与抽象类的区别一般接口不含有属性,抽象类可以含有属性。接口中声明的方法都没有实现部分,而抽象类中的某些方法可以有具体实现。使用接口比使用抽象类安全,可以避免许多因为多继承产生的问题。6.1.4类之间的关系1.关联(association)2.聚合(aggregation)和组合(composition)3.泛化(generalization)4.实现(realization)5.依赖(dependenc)1.关联关系当类之间在概念上有连接关系时,这种关系叫做关联(association)。名称(Name)角色(Role)多重性(Multiplicity)限定关联自反关联关联上的约束派生关联关联类导航性(Navigation)聚合关系(Aggregation)组合关系(Composition(1)名称关联名来描述关联的作用,清晰而简洁地说明对象间关系。使用一个动词或动词短语来命名关联。关联的名称并不是必需的。可以前缀或后缀一个指引阅读方向的方向指示符,以消除歧义。一个关联——队员和球队之间的关联。可以用一个短语“队员为篮球队效力(playson)”来刻划这个关联。关联的导航型单向关联:关联是单向的,从一个类的对象可以找到另一个,反过来却不可。双向关联:关联是双向的,如果一个对象和另一个对象关联,那么这两个对象都互相知道对方。(2)角色•当一个类和另一个类发生关联时,每个类通常在关联中部扮演着某种角色。一个类对另一个类所表现出来的职责。在队员和球队的关联中,如果球队是职业篮球队,那么它就是队员的雇主(Employer),队员就是球队的雇员(Employee)。角色名不是类的组成部分,一个类可以在不同的关联中扮演不同的角色。由于角色名称和关联名称都被用来描述关系的目的,所以角色名称可以代替关联名称,或者两者同时使用。与关联名称不同,角色名可以生成代码。(使用Rose工具可以直接生成代码)角色本身也具有可见性。(UML2.0不在提倡使用角色本身的可见性)privateclassPerson{privateStringpersonName;protectedCompanyemployer;/****/publicPerson(){}}publicclassCompany{privateStringcompanyName;publicPersonemployee;/****/publicCompany(){}}privateclassPassword{/****/publicPassword(){}}publicclassId{publicPasswordthePassword;/****/publicId(){}}单向关联(3)多重性关联的多重性指某个类有多少个对象可以和另一个类的单个对象关联。表示多重性的方法是在参与关联的类附近的关联线上注名多重性数值。可以表达一个取值范围、特定值、无限定的范围或一组离散值。格式:“minimum..maximum”(均为Int型)。(3)多重性UML使用星号(*)来代表许多(more)和多个(many)。在一种语境中,两点代表or(或)关系,例如“1..*”代表一个或者多个在另一种语境中,or关系用逗号来表示,例如“5,10”代表5或者10。如果没有明确标识多重性,就意味着1。思考:多重性3,6..9表示什么?(4)限定关联(qualifiedassociation)带有限定符的关联称为限定关联(受限关联)。限定关联用于一对多或多对多关联这种情况。限定符的作用就是给定关联一端的一个对象和限定符以后,可确定另一端的一个对象和对象集。一个customer可以在bank中有多个account,但给定了一个account值后,就可以对应一个customer,或者没有。因为多重性为0..1。这里的多重性表示的是customer和(bank,account)之间的关系。(bank,account)-0,1customerCustomer-多个(bank,account)限定符指定了如何标识一对多关联或多对多关联中的多端对象集中的一个特定对象,并且可以将其看做是区分这种关联中所有对象的一种关键字。限定关联把模型从一对多关联简化为一对一关联。限定符是关联线的一个附加信息,而不是类的。限定符针对于学生端的针对于关联限定符这个概念在设计软件时非常有用,如果一个应用系统需要根据关键字对一个数据集做查询操作,则经常会用到限定关联。引入限定符的一个目的就是把多重性从n降到1或0..1,这样如果做查询操作,则返回的对象至多是一个,而不会是一个对象集。如果查询操作的结果是单个对象,则这个查询操作的效率会较高。所以在使用限定符时,如果限定符另一端的多重性仍为n,则引入这个限定符的作用就不是很大。因为查询结果任然还是结果集,所以也可以根据多重性来判断一个限定符的设计是否合理。(5)自反关联一个类可能与它自己发生关联,这样的关联被称为自身关联。当一个类的对象可以充当多种角色时,自身关联就可能发生。CarOccupant
本文标题:第6章类图和对象图-郭
链接地址:https://www.777doc.com/doc-4493306 .html