静态建模(类图和对象图)

构成面向对象模型的基本元素有类,对象,类与类之间的关系等。

 

类图是用类和他们之间的关系描述系统的一种图示,是从静态角度表示系统的,因此类图属于一种静态模型。类图是构建其它图的基础。

当类图中存在多个类时,类与类之间的关系可以用表示某种关系的连线,把他们连接起来。

 

二,定义类

定义类,也就是将系统要处理的数据抽象成类的属性,将处理数据的方法抽象为操作,对于建模者所定义的类通常要有这样二个特点:1,使用来自问题域的概念;2,类的名字用该类实际代表的含义命名

 

定义类的问题:

1,有没有一定要存储或分析的信息?如果存在需要存储,分析或处理的信息,那么该信息有可能就是一个类,这里讲的信息可以是概念或事件或事务。

 

2,有没有外部系统?如果有,外部系统可以看作类,该类可以是本系统所包含的类,也可以是本系统与之交互的类。

 

3,有没有模板,类库,组件等?如果手头上有这些东西,它们通常应作为类,模板,类库,组件可以来自原来的工程,或别人赠送或从厂家购买的。

 

4,系统中有被控制的设备吗?凡是与系统相连的任何设备都要有对应的类,通过这些类控制设备。

 

5,有无需要表示的组织机构?在计算机系统中表示组织机构通常用类,特别是构建商务模型时用的更多。

 

5,系统中有哪些角色?这些角色也可以看成类,比如,用户,系统操作员,客户。

 

在系统建模时,我们只抽取哪些系统中需要使用的特征作为类的属性。属性有类型,也有不同的可见性,在类图中,共有类型表示加号(+),私有类型表示为减号(-),它们标识在属性名称的左侧,如果属性名称旁没有标识任何符号,标识该属性的可见性尚未定义。注意这里不存在缺省的可见性,类属性的缺省值可以标识在类图中,类的属性中还可以有一种能被该类的所有对象共享的属性,称之为类的作用域属性,也称作类变量,类变量在类图中表示为带下划线,最后一个用花括号括起来的性质串,列出该属性所有可能的取值,枚举类型的属性经常使用性质串,性质串中的每个枚举值之间用逗号分隔。

操作的语法格式:
可见性  操作名(参数表):返回值类型{性质串}
其中可见性和操作名是不可缺少的。
操作名,参数表和返回值类型合在一起称为操作的标记,操作标记描述了使用该操作的方式,操作标记必须是唯一的,操作只能应用于该类的对象。操作的可见性分为共有(加号)和私有(减号)
参数表由多个参数(用逗号分开)构成,参数的语法为:
参数名:类型名=缺省值
操作的具体实现称作方法,它与实现该操作的算法有关,若算法设计得好,可以减少操作的时空开销,除了算法以外,一个操作能否执行还与前提条件和输入参数有关系,所谓前提条件是指操作可以执行的基础。在执行操作时,对象属性状态的改变情况也要记录下来。
类作用域操作只能存取本类总的类作用域属性。
有一种特别的类,叫做持久类,在类图中,如果某个类需要定义为持久的类,那么需要在类的名字旁边附加上{persistent}标志。
三,关系
类图由类和它们之间的关系组成,类与类之间通常有关联,通用化,依赖,和精化等四种关系。
(1)关联关系
关联用于描述类与类之间的连接,由于对象是类的实例,因此,类与类之间的关联也就是其对象之间的关联。
类与类之间有多种连接方式,每种连接的含义各不相同,但外部表示形式相似,故统称为关联。关联关系一般都是双向的。
关联分为:普通关联,递归关联,限定关联,或关联,有序关联,三元关联或聚合等七种
a,普通关联
只要类与类之间存在连接关系就可以用普通关联表示,普通关联的图示是连接二个类之间的直线。
由于关联是双向的,可以在关联的一个方向上为关联起一个名字,而在另一个方向上起另一个名字(也可不起名字),名字通常紧挨着直线书写。为了避免混淆,在名字的前面或后面带一个表示关联方向的黑三角,黑三角的尖角指明这个关联只能用在尖角所指的类上。给关联起的名字最好使用能够反映类之间关系的动词。
如果类与类之间的关联是单向的,则称为导航关联,导航关联采用实线箭头连接两个类,只有箭头所指向的方向上才有这种关联关系。
 
0...1表示0到1个对象
0...*表示0到多个对象
5...17表示5到17个对象
2表示2个对象
如果图中没有明确表示关联的重数,那就意味着是1,类图中,重数标识在表示关联关系的某一方向上直线的末端。
对象图
类图表示类与类之间的关系,对象图则表示在某一时刻这些类的具体实例和这些实例之间的具体连接关系。
对象图与类图几乎是一样的,主要差别在于对象的名字下面要加下划线。
(b)递归关联
如果一个类与它本身有关联关系,那么这种关联关系称为递归关联。递归关联指的是同类对象之间语义上的连接。
任何关联关系中都涉及到与此关联有关的角色,也就是与此关联相连的类中的对象所扮演的角色。
关联中的角色通常用字符串命名,在类图中,把角色的名字放置在与此角色有关的关联关系的末端,并且紧挨着使用该角色的类,角色名是关联的一个组成部分,建模者可根据需要选用。引入角色的好处是:指明了类和类的对象之间的联系。角色名不是类的组成部分,一个类可以在不同的关联中扮演不同的角色
(c)限定关联
限定关联用于一对多或多对多的关联关系中,在限定关联中,使用限定词将关联中多的那一端的具体对象分成对象集,限定词可以理解为一种关键词,用关键词把所有的对象分开。利用限定关联可以把模型中的重数从一对多变成一对一。类图中,限定词放置在关联关系末端的一个小方框内,紧挨着开始导航的类。
(d)或关联
或关联的图示方法是,具有“或关系”的关联之间用虚线连接起来,虚线上方标注规格说明{或}
(e)有序关联
对象与对象之间的连接可以具有一定的次序,一般情况下,对象之间的关联都是无序的,如果要明确表示关联中的次序关系,一定要将规格说明{排序}放在表示关联的直线旁,且紧挨着对象被排序的类。将对象排序的具体方法可以写在关联的性质中,也可以标识在有序关联的花括号内,比如:{按时间递增顺序排序}
关联类
与一个关联关系相连的类,称作关联类,关联类并不位于表示关联关系的直线两端,而是对应一个实际的关联,用关联类表示该实际关联的一些附加信息。关联中的每个连接与关联类中的对象相联系。
(f)三元关联
类与类之间的关联关系,不仅限于两个类之间,多个类之间也可以有关联关系,如果三个类之间有关联关系,则称之为三元关联,三元关联图示Wie一个大的菱形,菱形的角与关联的类之间用直线相连,三元关联中可以出现角色和重数,但不能出现限定词和聚合
聚合
聚合是关联的特例,如果类与类之间的关系具有“整体与部分”的特点,则把这一的关联称为聚合。
聚合的图示方式为,在表示关联关系的直线末端加一个空心的小菱形,空心菱形紧挨着具有整体性质的类。聚合关系中可以出现重数,角色和限定词,也可以给聚合关系命名。
如果聚合关系中的处于部分方的对象同时参与了多个处于整体方对象的构成,则该聚合称为共享聚合。
如果构成整体类的部分类,完全隶属于整体类,则这样的聚合称为符合聚合。
带角色的复合聚合示例,
a,是带角色名的复合聚合图示;b,是带角色的复合聚合标准语法形式;c,采用将属性名变成角色名,将属性的类型变成类的方法的形式图示复合聚合。
复合聚合的实现方式一般是将部分类中的对象作为整体类的成员对象,将部分类封装在整体类中。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值