为了后续更好的看懂类和类间接的关系这里咱们就先要理解下 UML。
对立建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言。特点是简略、对立、图形化、能表白软件设计中的动静与动态信息。
对立建模语言能为软件开发的所有阶段提供模型化和可视化反对。而且融入了软件工程畛域的新思维、新办法和新技术,使软件设计人员沟通更扼要,进一步缩短了设计工夫,缩小开发成本。它的应用领域很宽,不仅适宜于个别零碎的开发,而且适宜于并行与分布式系统的建模。
UML 从指标零碎的不同角度登程,定义了用例图、类图、对象图、状态图、流动图、时序图、合作图、构件图、部署图等 9 种图。
这里简略介绍下设计模式种常常用到的类图,以及类之间的关系。
类、接口和类图
类(Class)是指具备雷同属性、办法和关系的对象的形象,它封装了数据和行为,是面向对象程序设计(OOP)的根底,具备封装性、继承性和多态性等三大个性。在 UML 中,类应用蕴含类名、属性和操作且带有分隔线的矩形来示意。
(1) 类名(Name)是一个字符串,例如,Student。
(2) 属性(Attribute)是指类的个性,即类的成员变量。UML 按以下格局示意:
[可见性] 属性名: 类型 [= 默认值]
例如:-name:String
留神:“可见性”示意该属性对类外的元素是否可见,包含私有(Public)、公有(Private)、受爱护(Protected)和敌人(Friendly)4 种,在类图中别离用符号 +、-、#、~ 示意。
(3) 操作(Operations)是类的任意一个实例对象都能够应用的行为,是类的成员办法。UML 按以下格局示意:
[可见性] 名称 (参数列表)[: 返回类型]
例如:+display():void。
2. 接口
接口(Interface)是一种非凡的类,它具备类的构造但不可被实例化,只能够被子类实现。它蕴含形象操作,但不蕴含属性。它形容了类或组件对外可见的动作。
3. 类图
类图(ClassDiagram)是用来显示零碎中的类、接口、合作以及它们之间的动态构造和关系的一种动态模型。它次要用于形容软件系统的结构化设计,帮忙人们简化对软件系统的了解,它是系统分析与设计阶段的重要产物,也是零碎编码与测试的重要模型根据。
类图中的类能够通过某种编程 语言间接实现。类图在软件系统开发的整个生命周期都是无效的,它是面向对象零碎的建模中最常见的图。图 3 所示是“计算长方形和圆形的周长与面积”的类图,图形接口有计算面积和周长的形象办法,长方形和圆形实现这两个办法供拜访类调用。
类之间的关系
在软件系统中,类不是孤立存在的,类与类之间存在各种关系。依据类与类之间的耦合度从弱到强排列,UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。
1. 依赖关系
依赖(Dependency)关系是一种应用关系,它是对象之间耦合度最弱的一种关联形式,是临时性的关联。在代码中,某个类的办法通过局部变量、办法的参数或者对静态方法的调用来拜访另一个类(被依赖类)中的某些办法来实现一些职责。
在 UML 类图中,依赖关系应用带箭头的虚线来示意,箭头从应用类指向被依赖的类。
2. 关联关系
关联(Association)关系是对象之间的一种援用关系,用于示意一类对象与另一类对象之间的分割,如老师和学生、徒弟和师傅、丈夫和妻子等。关联关系是类与类之间最罕用的一种关系,分为个别关联关系、聚合关系和组合关系。咱们先介绍个别关联。
关联能够是双向的,也能够是单向的。在 UML 类图中,双向的关联能够用带两个箭头或者没有箭头的实线来示意,单向的关联用带一个箭头的实线来示意,箭头从应用类指向被关联的类。也能够在关联线的两端标注角色名,代表两种不同的角色。
在代码中通常将一个类的对象作为另一个类的成员变量来实现关联关系。
3. 聚合关系
聚合(Aggregation)关系是关联关系的一种,是强关联关系,是整体和局部之间的关系,是 has-a 的关系。
聚合关系也是通过成员对象来实现的,其中成员对象是整体对象的一部分,然而成员对象能够脱离整体对象而独立存在。例如,学校与老师的关系,学校蕴含老师,但如果学校停办了,老师仍然存在。
在 UML 类图中,聚合关系能够用带空心菱形的实线来示意,菱形指向整体。
4. 组合关系
组合(Composition)关系也是关联关系的一种,也示意类之间的整体与局部的关系,但它是一种更强烈的聚合关系,是 cxmtains-a 关系。
在组合关系中,整体对象能够管制局部对象的生命周期,一旦整体对象不存在,局部对象也将不存在,局部对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。
在 UML 类图中,组合关系用带实心菱形的实线来示意,菱形指向整体。
5. 泛化关系
泛化(Generalization)关系是对象之间耦合度最大的一种关系,示意个别与非凡的关系,是父类与子类之间的关系,是一种继承关系,是 is-a 的关系。
在 UML 类图中,泛化关系用带空心三角箭头的实线来示意,箭头从子类指向父类。在代码实现时,应用面向对象的继承机制来实现泛化关系。
6. 实现关系
实现(Realization)关系是接口与实现类之间的关系。在这种关系中,类实现了接口,类中的操作实现了接口中所申明的所有的形象操作。
在 UML 类图中,实现关系应用带空心三角箭头的虚线来示意,箭头从实现类指向接口。