第三章类图基础

最近在看文视点的UML精粹:标准对象建模语言简明指南,想了解下UML和面向对象的相关知识,感觉自己在OO方面就是弱爆了,恩,这是看书的一些笔记。

1、class diagram:描述系统中的对象类型,以及他们之间的各种静态关系。类图也展示类的性质和操作,以及应用于对象连接方式的约束。

     在UML中,feature=property+operation。property代表类的结构特性。两种表示法为:attribute+association.

      1)attribute表示法把性质描述成类方框中的一行文本。属性的完整形式为:visibility(公开的(+)还是私有的(-)) name(类如何引用属性,类似字段名):type(哪一种对象可以放进属性的限制,类似字段类型) multiplicity(多重性)=default(在创建期间没有指定值时新创建对象的值) {property-string}(允许你指出属性附加的性质)

      2)association是一个两个类之间的实现实线,方向从源类到目标类性质的名称以及多重性放在关联的目标端。关联的目标端连接到性质所属类型的类。

     multiplicity:指出多少对象可以填充该性质。{1;0..1;*;(*表示0或者更多无上限)}

     多重性术语:OPtional(可选的意味着下限0);Mandatory(强制的意味着下限为1,也可能更多);Single-valued(单值得,意味着上限为1);Maltivalued(多值的意味着上限大于1)(这些多重性术语可以不用通常直接用1;0...1;*表示即可)关联端也可以添加一些其他的允许重复{nonunique}等。

     性质的编程解释:在多数情况下,不给多值性质复制,通过add和remove更新。多值属性意味着集合。(看的似懂非懂的。。好像在说少做属性,多做操作?用集合实现数据结构。)

     双向关联:看两者的关系 然后使用箭头和多重性。

     operation:类知道如何执行的操作。对应于类中的方法。(一般不展示那些简单曹总性质的操作)语法:visibility name (parameter-list)(是指操作的参数类表):return-type {property-string} 参数列表中的参数 :direction(in,out,inout默认为in) name: type=default value。

      操作和方法的不同:从外部看,客户应该不能够识别查询是不是获取方法,修改器是不是设置方法。获取和设置方法的知识完全在类的内部。另操作是对象上可以调用的某些东西--例程声明——而方法是例程体。(eg:若一个超类有3个子类,每个子类都覆盖超类的某操作。则你有一个操作和四个实现它的方法。

      generalization(泛化即继承) 可替换性(substitutability)。

      dependence(依赖)(如果改变一个元素--supplier或目标--的定义会导致改变其他--client或源--类,则这两个元素这件存在依赖关系)依赖只有一个方向,从表示类到领域类。表示类依赖于领域类,领域类改变表示类不得不改变,(最小化依赖,避免环状依赖)(有选择的展示依赖,最好在包图上展示)

2、UML允许使用任何东西来描述约束,只要放在{}里

3、不尝试所有的可用的表示,从类、关联、泛化、属性和约束开始,有需要才用其他的;

  

原文地址:https://www.cnblogs.com/huhaibo/p/3429818.html