用例图画完了,接下来是类图,还是按部就班地再回头细看了一下视频,参考了一下书籍,这才对其有了一定的认识。
一、类图的概念
类,我们在之前VB、C++的学习中就已经接触过了,其实它就是一个对象类,是面向对象模型的最基本的概念。那么类图又怎么理解呢!类图是一种静态结构图,它描述的是系统的静态结构,而不是系统的行为。这在之前的总结中(http://blog.csdn.net/qwlzxx/article/details/40950209)就已经简要地提到过。
类的图标为一个矩形,分为三格,第一格为类的名字,第二格为类的属性,最后一格为其的操作或方法或事件。
属性和方法前出现+号,表示公有;出现-号,表示私有;出现#号,表示保护。
二、类的关系
总体上来说,类的关系有四种:关联、依赖、泛化和实现。
1、关联
关联是模型元素间的一种语义联系,它是对具有共同的的结构特性、行为特性、关系和语义的链接的描述。
关联分为普通、聚合和组合关联。普通关联是两个类之间有一定结构的直线,它包括了名称、角色和多重性。在这里再分一下,又可以分为单向关联和双向关联。两个类之间可以有多种关联,一个类可以和多个类关联,当然自身也可以关联。聚合关联是一种整体和部分的关联,在普通关联的基础上,直线上再加一个空心菱形。再就是组合,它和聚合极易混淆,它们显著的区别在于,空心菱形换成了实心菱形。
两个对象之间的连接本身额可以拥有自己的属性和行为,如果把连接看作是一格类的实例,则该类称为关联类。它也可有自身关联。
2、依赖
依赖是一种使用关系,它说明一个事物规格说明的变化可能影响到使用它的另一个事物,但反之未必。
3、泛化
泛化,可以用一句话诠释其含义”is-a-kind-of",它有单重继承,就是一个子类只能继承一个父类;还可以有多重继承,一个子类可以同时继承多个父类。
4、实现
实现是类元之间的语义关系,在该关系中,一个类元描述了另一个类元保证实现的的契约。
三、类图的构成
上面已经提到过类图是用来描述系统的静态部分的。那么它是怎么构成的呢。简单地说,对象类图就是对象类图加上它们之间的联系。
四、类图的深入讨论
类图的可见性表现在它能够直接根据图上的内容直接转换成程序代码。属性和方法的公有、私有还是保护一眼便知。
类图的范围:每个实例自己拥有自己的属性和方法。在这里一个重要的知识点就是静态成员,之前我们也学过了,它在这里只要在其成员下面画一个下划线就行了。
类图的抽象化:类是从对象抽象出来的,它是不能实例化的。
类图的多重性:多重性上面简单提到过,指的是关联中两个类之间包含的数。比如一个学校可以有多个学生,而学生只属于这一个学校。
在这里再细讲下属性和操作。
1、属性
类的属性是类的命名的性质,属性有在本对象类中唯一的属性名或标识符。
属性在类图标的属性分隔框中用文字串说明:可视性 属性名【多重性】:类型=初始值 ,举个例子:+ sieze:Area=(100,100)
可视性已经讲过,属性名后跟的方括号中的内容是可选项目。
2、操作
操作是对象类的行为特征或动态特征,用于对服务或与实体相关的操作建模。一个类可以有多个操作,也可以没有一个操作。操作有在本对象类中唯一的操作名或标识符。
操作在类图标的操作分隔框中用文字串说明:可视性 操作名(参数列表):返回列表(性质),举个例子:+ Circle()《query》area():float…
操作名后跟的圆括号中的参数列表是可选项目,即一个操作可以有参数,也可以没有参数。参数列表由逗号分隔的操作的形式参数组成,其格式为:参数列表 参数名 : 类型 = 缺省值, … 冒号”:“后跟返回列表,它由逗号分隔的操作的返回值类型表达式组成,其格式为返回类型或返回名字 = 类型, …
大家可能对例子中的下划线有疑问,操作也有属主范围的区分,它的含义和表示与属性的属主范围相同。对象的构造操作(构造函数)必须带有下划线,表示它的属主范围是分类符。构造操作也可以用构造型《constructor》标识。
五、应用实践
机房收费系统的类图产生在详细设计阶段,主要服务于数据库的设计,从整个系统中抽象出五个类:学生、卡、一般用户、操作员和管理员,下图描述了他们之间的关系。由于自己对EA工具的生疏和对类图的初步掌握,有很多不完善的地方,仅供参考。
六、总结
任何东西都有解决的方案,遇到问题去解决就行了。没有头绪的时候就翻阅一些资料,通过努力总能得到满意的答案。