类元是模型中的离散概念,拥有身份、状态、行为和关系。有几种类元包括类、接口和数据类型。其他几种类元是行为概念、环境事物、执行结构的具体化。这些类元中包括用例、参与者、构件、节点和子系统。
类 模型系统中的概念 name
状态类 局限于某个给定状态的类 Name[S]
类元角色 在合作中局限于某个使用的类元 roleName
构件 系统的一个物理组成单元
数据类型 无身份得一组原始值的描述符 Name
接口 刻划行为特征的操作命名集 Iname
节点 计算资源
信号 对象间的异步通信 <<Signal>>
子系统 作为且有规范、实现和身份的单元的包 <<subsystem>>
用例 与外界代理交互中的实体行为说明
1 类
类代表了被建模的应用领域中的离散概念—物理实体(如飞机)、商业事物(如一份订单)、逻辑事物(如广播计划)、应用事物(如取消键)、计算机领域的事物(如哈希表)或行为事物(如一项任务)。类是有着相同结构、行为和关系的一组对象的描述符号。所用的属性与操作都被附在类或其他类元上。类是面向对象系统组织结构的核心。
对象是具有身份、状态和可激发行为的离散实体。对象是用来构造实际运行系统的个体;类是用来理解和描述众多个别对象的个别概念。
类定义了一组有着状态和行为的对象。属性和关联用来描述状态。属性通常用没有身份的纯数据值表示,如数字和字符串。关联则用有身份的对象之间的关系表示。个体行为由操作来描述,方法是操作的实现。对象的生命期由附加给类的状态机来描述。类的表示法是一个矩形,由带有类名、属性和操作的分格框组成。
一组类可以用泛化关系和建立在其内的继承机制分享公用的状态和行为描述。泛化使更具体的类(子类)与含有几个子类公同特性的更普通的类(超类)联系起来。一个类可以有零个或多个父类(超类)和零个或多个后代(子类)。一个类从它的双亲和祖先那里继承状态和行为描述,并且定义它的后代所继承的状态和行为描述。
类在它的包含者内有唯一的名字,这个包含者通常可能是一个包但有时也可能是另一个类。类对它的包含者来说是可见性,可见性说明它如何被位于它的可见者之外的类所利用。
类的多重性说明了有多少个实例可以存在,通常情况下,可以有多个(零个或多个,没有明确限制),但在执行过程中一个实例只属于一个类。
2 接口
接口是在没有给出对象的实现和状态的情况下对对象行为的描述。接口包含操作但不包含属性,并且它没有对外界可见的关联。一个或多个类或构件可以实现一个接口,并且每个类都可以实现接口中的操作。
3 数据类型
数据类型用以描述缺少身份的简单数据值。数据类型包括数字、字符串、枚举型数值。数据类型通过值来传递,并且是不可变的实体。数据类型没有属性,但是可以有操作。操作不改变数据值,但是可以把数据值作为结果返回。
4 含义分层
类可以存在于模型的几种含义层中,包括分析层、设计层和实现层。当表现真实世界的概念时,说明实际的状态、关系和行为是很重要的。但是像信息隐藏、有效性、可见性和方法这些实现方面的概念与真实世界的概念无关(它们是设计层的概念)。分析层的类代表了在应用域中的逻辑概念或应用本身。分析层模型应该尽可能少地表示建模的系统,并在不涉及到执行和构造的情况下,充分说明系统的必要逻辑组成。
当表示高层次的设计时,有些概念与类直接相关,这些概念包括特定类的状态定位、对象之间导航的效率、外部行为和内部实现的分离和准确操作的描述。设计层类表示了将状态信息和其上的操作封装于一个离散的单元,它说明了关键的设计决定、信息定位和对象的功能。设计层类包含真实世界和计算机系统两方面的内容。
最后,当实现程序代码时,类的形式与所选择的语言紧密相关。如果一个通用类的功能不能直接用语言来实现,那么不得不放弃它们。实现层类直接与程序代码相对应。同一个系统可以容纳多个层次的类,面向实现的类会在模型中实现更逻辑化的类。一个实现类表示用特定程序设计语言声明一个类,它得到了一个按照语言所要求的准确格式的类。然而,在许多情况下,分析、设计和实现信息可嵌套在一个单独的类中。