《UML面向对象建模与设计》第3章——类建模

虽然写这个博客主要目的是为了给我自己做一个思路记忆录,但是如果你恰好点了进来,那么先对你说一声欢迎。我并不是什么大触,只是一个菜菜的学生,如果您发现了什么错误或者您对于某些地方有更好的意见,非常欢迎您的斧正!

目录

3.1对象和类的概念

3.2链接和关联的概念

3.3泛化和继承

3.5类模型导航


类建模,描述系统内部对象的特征对象之间的相互关系以及对象所属的每个类的属性和操作,捕获系统的静态特征。

3.1对象和类的概念

 

如图,每个参数都会有一个方向、名称、类型默认值

方向:表示参数是输入(in)、输出(out)、还是可修改的输入参数(inout)。

3.2链接和关联的概念

 链接和关联用来建立对象和类之间的联系。

3.2.1链接和关联

一个关联的连接连接同一个类的多个对象

关联本质上是双向的。

 引用:在一个对象中引用另一个对象的属性。

3.2.2 多重性

 

多重性:指定了一个类与关联类的单个实例可能相关的实例数目。约束了相关对象的数目。

 

多重性是对集合大小的约束,基数是集合中实际的元素数目。

3.2.3 关联终端名

就是在关联那条线两端写的东西,比如employee与employer

通过关联终端名可以统一对同一个类的多重引用。

附在一个类上的关联远端的所有名称都必须是唯一的。

3.2.4   排序

可以通过适当在关联终端边旁标上“{ordered}”来表示一个有序的对象集合。

图:包含大量重叠窗口的工作站屏幕,屏幕上的每个窗口至多出现一次。这些窗口有明显的顺序,因此在屏幕上的任何地方只有顶层窗口是可见的

3.2.5 包和序列

(bag):允许重复值的元素集合

序列(sequence):允许重复值的有序元素集合

在关连端标注{bag}{sequence},就允许在一对对象上有多重链接。

图:一条航线是一系列有序的飞机场,同一飞机场可以被访问多次。

{order}和{sequence}是相同的,前者不允许重复,后者允许重复。

序列关联是一个有序包,有序关联是一个有序集合。

3.2.6     关联类

关联类:是一种关联,也是一个类。

 这边补充一道关于关联类与普通类的例题,也就是书中的例题3.34.

图左边的关联类中,对于每个Person与Magazine,只能有一个Subscription。

图右边的关联类中,对于每个Person与Magazine,可以有多个Subscription,每个Subscription都有自己的跟踪日期、每次支付金额以及当前有效期。

3.2.7   限定关联

限定符的表示法:在关联线靠近源类一端绘制一个小方框,限定符方框可以依附于源类的任何一边(顶部、底部、左侧、右侧)。源类加上限定符就产生出目标类。

3.3泛化和继承

 

3.3.1定义

泛化是指类(父类)与其一个或多个变体(子类)之间的关系。

父类拥有公共属性、操作和关联,子类增加了特定的属性、操作和关联。每个子类继承了其父类的特征。

如类Person拥有公共属性name,sex等,然后它可以泛化为teacher、doctor等。

泛化是可传递的,可以跨越任意层次。

3.3.2   泛化的用途

①支持多态

②架构化描述对象

③支持代码复用

3.5类模型导航

遍历类模型的OCL制品:属性、操作、简单关联、限定关联、关联类、过滤器。

OCL表达式可以将多个关联遍历连在一起使用。使用OCL,遍历对象到单个关联,这样的遍历会生成单件或集合。

OCL表达式的示例:

·在某个时间间隔内,某个信用卡账户发生了那些交易?

aCreditCardAccount.Statement.Transaction->   遍历从对象aCre...到State...再到Tran...,生成一组交易

Select(aStartDate <= transactionDate and        OCL操作符select(集合操作符)

transactionDate <= anEndDate)                         找出在时间aStar...到anEnd..之间的交易

猜你喜欢

转载自blog.csdn.net/weixin_40851250/article/details/84254084