《UML精粹》第三版是马丁·福勒所著的经典之作,全称为"The Unified Modeling Language (UML) distilled", 是关于统一建模语言(UML)的一本详尽指南。UML是一套图形化的表示方法,它建立在单一的元模型之上,特别适用于描述和设计使用面向对象(Object-Oriented, OO)方法构建的软件系统。本书深入浅出地介绍了UML的核心概念和原则,包括但不限于:
1. **实例规格(InstanceSpecification)**:章节87中提到的实例规格描述了类的具体实例如何被创建和初始化,通常包括对象名、属性和初始值。
2. **关联与限定性(QualifiedAssociation)**:第74页讨论了限定性关联,它强调了关联的导航方向和资格条件,比如角色(rolename)和关联的性质(source, target)。
3. **类(Class)**:章节35-37中,类是UML的基本构建块,包括类名、属性(如attribute:Type[O..1]=initialValue,表示一个类型为Type的属性,允许0到1个实例,并有初始值)、操作(operation)以及它们的抽象性(abstractOperation)。
4. **多态性(Multiplicity)**:描述了类实例之间的关系数量,如1(单例)、*(零个或多个)、1..1(一对一)、1..*(一对多)、0..1(可选)等,这些用于表示类间的关系复杂性。
5. **泛化(Generalization)**:第45页介绍了类之间的继承关系,即一个子类型(Subtype)继承自一个超类型(Supertype),可能有一对多(m..n)的关联,且有时会指定泛化关系的数值限制。
6. **聚集(Aggregation)** 和 **组合(Composition)**:这两种形式的区别在于,聚集允许部分与整体的关系,部分可以离开整体存在,而组合则表示部分必须属于整体,且不能独立存在(p.67和p.49)。
7. **约束(Constraint)**:用于定义类的规则,例如对属性值的范围或操作的条件,通过方括号中的描述({narre:description})明确表达。
8. **类图(ClassDiagram)**:展示了类、接口、抽象类、实现类等元素之间的关系,以及它们的属性和操作(如模板类templateclassA81)。
9. **通信图(CommunicationDiagram)**:第131页描述的是系统中对象间的交互和消息传递,通常包括对象名、消息(olenarre)以及消息的方向和内容。
10. **接口(Interface)**:UML中表示一组方法签名的抽象概念,类可以实现一个或多个接口。
《UML精粹》提供了全面的UML基础知识和实践指导,帮助读者理解和运用UML进行软件系统的建模和设计,无论是初学者还是经验丰富的开发者,都能从中获益良多。