在UML中,类图标识了不同的实体,包括人、事务和数据,以及这些实体之间彼此之间的关联。类图通过系统中的类以及各个类之间的关系来描述系统的静态结构,不仅包含了系统定义的各种类,也包含了它们之间的关系,如关联、依赖和聚合等,这种描述在系统的整个生命周期中都是有效的。对象图用于显示系统中各个类的真实对象实例的位置,描述系统在一个特定时间点上的静态结构,是类图的实例和快照。
类图和对象图之间的联系非常紧密:对象图中包含对象和链,其中对象是类的特定实例,链是类之间关系的实例,表示对象之间的特定关系。同时类图和对象图之间也有本质的不同:对象图描述的是系统的某种特定情况,比如某一个时间点上的系统特征,而类图描述的是系统通用情况下的系统特征。
类图的组成是由类、接口等元素以及它们之间的关系构成,目的在于描述系统的构成方式。
类的组成:类的名称,类的属性,类的操作,类的职责,类的约束,类的注释。
类之间的关系:依赖,泛化,关联,实现。
类是面向对象中系统组织结构的核心。是对一组具有相同属性、操作、关系和语义的事物的抽象。
类的名称有以下几个特性:基本性、明确性、简洁性、规范性、唯一性。
基本性:每个类都必须有自己的名字,可以再查询的时候快速找到需要的类。
明确性:明确类所在系统的问题域,并且尽可能的明确表达要表达的事物,不要造成名字与类的作用不符
合的情况。
简洁性:类名就是一个名词,不带前缀或后缀。
规范性:
1.类的名称的首字母要大写,类的名称如果是两个单词组成,则要合并,且第二个单词的首字母大
写。
2.可实例化的类名用正体字表示,抽象类用斜体字来表示。
唯一性:类在包中有唯一的名字,包含者也对类的名字有影响,可以使这种表达:Printer(fromOffice),也
可以是Office::printer。
类的名称起好了可以方便开发人员之间的交流,有助于系统的开发。
类的属性:描述了对象所共有的静态部分的公共特征抽象,类可以有零个或多个属性。类的属性也有多个特性:
可见性:描述了属性是否对于其他类能够可见,决定了是否被其他类引用,分为公有类型public,受保护类
型protected和私有类型private。还有一种是当类处于一个包中的时候的Implementation类型,只有
在包中可见。
属性名称:也有自己唯一必须的名称,以区别于其他属性。由属性的特性名词或名词短语构成。名称的第
一个字母小写,当多个单词合并时除了第一个英文单词外,其余单词的首字母大写。
属性类型:类的属性可以是任意的类型,包括系统中定义的其他类型。
属性的初始值:用来保护系统的完整性,更方便用户的使用。
属性字符串:指定关于属性的一些附加信息。
类的操作操作是指类所能执行的动作,描述了软件系统中所代表的对象具备的动态部分的公共特征抽象。用于操纵属性的值进行改变或执行其他动作。类可以有零个或多个操作,且只能作用于该类的对象,由一个返回类型、一个名称以及参数表来描述,这三样组成操作签名,描述了这个动作所必须的信息。类的操作也有自己的特性:
可见性:同属性。
操作名称:同属性。
参数表:由类型、标识符对组成的序列,实际上是操作或方法被调用是接受传递过来的参数值得变量。采用“名
称:类型”表示,多个参数用逗号隔开。方法没有参数,则参数表是空的。参数可以有默认值,由系统
指定。
返回类型:指定了由操作返回的数据类型,可以使任意有效的数据类型,包括创建的类型。如果没有返回值,则
加void关键字,熟悉编程语言C的应该不会陌生,就是关键字return,后面跟着主函数中要求的数据
类型。
属性字符串:同属性。
类的职责:对该类的所有对象所具备的相同的属性和操作共同组成的功能该或服务的抽象,对类的功能和作用的非形似化描述。这不是必须的一段或多段文本描述。
类的约束:指定了该类索要满足的一个或多个原则,用大括号括起来的文本信息。
类的注释:添加更多的描述信息,也是为类提供更多描述方式的一种。
接口是一种特殊的类,是在没有给出对象的实现和状态的情况下对对象行为的描述。通常接口包括一系列的操作,但是不包括属性,且对外界没有可见的关联,因此一个拥有良好接口的类具有清晰的边界。
明白了这些,再遇上用UML来分析系统的时候就可以做到对类图画法的胸有成竹,更能体会到Rational Rose和UML结合的强大。
下一篇将对类之间的关系进行总结,从宏观上对类之间的关系进行分类。