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

一,普通通用化

具有通用化关系的两个类之间是继承关系。

父类与子类的通用化关系图示为一个带空心三角形的直线,空心三角形紧挨着父类。

父类中公有的成员在被继承的子类中仍然是公有的,而且可以在子类中随意使用;父类中的私有成员在子类中也是私有的,但是子类的对象不能存取父类中的私有成员。

如果既需要保护父类的成员,又需要让其子类也能存取父类的成员,那么父类的成员的可见性应设为保护的。具有保护可见性的成员名字前面通常加一个“#”号,类图中可以不表示该符号。

受限通用化

给通用化关系附加一个约束条件,进一步说明该通用化关系的使用方法或扩充方法,这样的通用化关系称为受限通用化。

预定义的约束有四种:多重,不相交,完全和不完全,这些约束都是语义上的约束。


如果是多个子类公用一个箭头指向父类,约束用花括号括起来放在直线旁边,多个约束之间用逗号分隔,如果继承关系是单独图示的,这种情况下,要另外附加一条虚线(穿越所有的继承关系)


二,依赖和精化关系
依赖关系描述的是两个模型元素之间的语义上的连接关系,其中,一个模型元素是独立的,另一个模型元素是非独立的(依赖的),它依赖于独立的模型元素,如果独立的模型元素发生改变,将会影响依赖该模型元素的模型元素。比如,某个类中使用另一个类的对象作为操作中的参数,则这二个类之间就具有依赖关系,类似的依赖关系还有一个类存取另一个类的全局对象,以及一个类调用另一个类中的类作用域操作。图示具有依赖关系的二个模型元素时,用带箭头的虚线连接,箭头指向独立的类,箭头旁边还可以带一个版类标签,具体说明依赖的种类。
精化关系常用于模型化表示同一个事物的不同实现,比如,一个是简单实现,一个是比较复杂而高效的实现,精化关系的图示方法与继承关系相似,用带空心三角形的虚线表示
精化用于模型的协调,在对大型工程项目建模时,往往需要建立许多模型,然后用精化关系对这些模型进行协调,协调过程可以显示不同抽象层上的模型之间是怎样联系在一起的;显示来自不同建模阶段的模型之间具有什么样的关系;支持配置管理和模型之间的追溯。
三,约束和派生规则
uml中的规则称为约束和派生,约束用于限制一个模型,已经讨论过的约束有或关联,有序关联和四种继承约束(多重,不相交,完全和不完全)。派生用于描述某种事物的产生规则,一般说来,约束和派生能应用于任何模型元素,但最常用于书写,关联,继承,角色和时间。图示中的约束和派生都用花括号括起来放在模型元素的附近,或者用圆括号括起来,以笔记的方式与模型元素相连。
关联关系可以被约束,也可以派生,如果一个关联是另一个关联的子集,则他们之间就会存在约束关联。
属性也可以被约束或派生,对属性约束的方式表现为给某个属性定初值或确定取值范围。
 
派生属性由其他属性通过计算得来,派生属性前面加一个斜线表示,它并不真正出现在类的对象中,派生属性的计算公式用括号括起来放在类的下方。
通用化关系只有约束,没有派生。
通用化的四种约束(多重,不相交,完全和不完全),对角色的约束为了防止一个对象所扮演的多个角色连在一起。当然对时间也有约束。
对uml模型元素应用的约束和派生,也可以用uml语言语法机制表示。表示规则的语法称为导航表达式,它构成说明一个具体规则的基本语句,根据需要,有时可以扩展导航表达式。
四,接口
uml中的包,组件和类也可以定义接口,利用接口说明包,组件和类能够支持的行为,在建模时,接口起到非常重要的作用,因为模型元素之间的相互协作都是通过接口进行的,一个结构良好的系统,其接口必然也定义得非常规范。
接口在类图中表示为一个带接口名称的小圆圈,接口与应用它的模型元素之间用一条直线相连,他们之间是一对一得关联关系,调用该接口的类与接口之间用带箭头的虚线连接,他们之间是依赖关系。
五,包
包是一种组合机制,把各种各样的模型元素通过内在的语义连在一起成为一个整体就叫做包,构成包的模型元素称为包的内容,包通常用于对模型的组织管理,因此有时又将包称为子系统。包拥有自己的模型元素,包与包之间不能共用一个相同的模型元素,包的实例没有任何语义。仅在模型执行期间,包才有意义。包能够引用来自其它包的模型元素,当一个包从另一个包中引用模型元素时,这两个包之间就建立了关系,包与包之间允许建立的关系有依赖,精化和通用化。
包图示为类似书签卡片的形状,有二个长方形组成,小长方形位于大长方形的左上角。如果包的内容没被图示出来,则包的名字可以写在大长方形内,否则包的名字写在小长方形内。
包与聚合很相似,如果一个包是由模型元素构成的,那么该包是复合聚合,反之,如果一个包从其它的包中引用模型元素,该包是共享聚合。
和类一样,包也有可见性,利用可见性控制外部包对包中内容的存取方式,uml中对包定义了四种可见性:私有,保护,公有和实现。缺省的可见性为公有。
六,模板
模板是一个尚未完全具体说明的类,模板中提供参数表,利用参数表向模板传递信息可最终形成用户需要的具体类。参数可以是类,也可以是整形,布尔型等基本类型。
由于给定不同的参数便可确定不同的类,所以模板能够说明许多类,故又称模板是一个用参数表示的类。
模板用长方形表示
c++语言中提供模板机制,而java中没有与此等价的语法成分。

猜你喜欢

转载自blog.csdn.net/jinzhengquanqq/article/details/5870698