UML类图快速入门篇
来源:互联网 发布:淘宝详情页是什么意思 编辑:程序博客网 时间:2024/06/06 02:16
简单整理了下,以备以后查看
类之间的几种关系:
- 泛化(Generalization)
- 关联(Association)(又分一般关联、聚合(Aggregation)组合(Composition))
- 依赖(Dependency)
一、类图
类图(Class Diagram)使用出现在系统中的不同类来描述系统的静态结构,它用来描述不同的类以及它们之间的关系。
类是对一组具有相同属性、操作、关系和语义的对象的抽象,它是面向对象系统组织结构的核心,包括类名(Name)、属性(Attribute)和操作(Operation),见下图。
接口在没有给出对象的实现和状态的情况下对对象行为的描述。一个类可以实现一个或多个接口。与类图的区别主要是顶端有<<interface>>显示:
也可以用一个空心圆表示(棒棒糖表示法)(只在参考2中看到,待确定):
类属性的语法:
[可见性] 名称 [:类型] [=缺省值]
- “可见性”表示该属性对于类外的元素而言是否可见,包括公有(public) “+”、私有(private)“-”和受保护(protected)“#”三种。
- “名称”表示属性名,用一个字符串表示。
- “类型”表示属性的数据类型,可以是基本数据类型,也可以是用户自定义类型。
- “缺省值”是一个可选项,即属性的初始值。
类操作的语法为:
[可见性] 操作名 [(参数表)] [:返回类型] [{属性字符串}]
- “可见性”的定义与属性的可见性定义相同,包括公有(Public)“+”、私有(Private)“-”、受保护(Protected)“#”、包内公有(Package)“~”四种。
- “名称”即方法名,用一个字符串表示。
- “参数列表”表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开。
- “返回类型”是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void),如果是构造方法,则无返回类型。
- “属性字符串”在操作的定义中加入一些除了预定义元素之外的信息。
二、类之间的几种关系
1、泛化(Generalization)
- 也就是继承关系,用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。
- 在UML中,泛化关系用带空心三角形的实线来表示,箭头指向父类。
对应java代码如下:
//父类public class Person {protected String name;protected int age;public void move() { ……} public void say() { …… }}//子类public class Student extends Person {private String studentNo;public void study() { …… }}//子类public class Teacher extends Person {private String teacherNo;public void teach() { …… }}
2、接口与实现
- 在很多面向对象语言中都引入了接口的概念,如Java、C#等,在接口中,通常没有属性,而且所有的操作都是抽象的,只有操作的声明,没有操作的实现。
- UML中类与接口之间的实现关系用带空心箭头的虚线表示,箭头指向接口。
对应java代码如下:
public interface Vehicle {public void move();}public class Ship implements Vehicle {public void move() { …… }}public class Car implements Vehicle {public void move() { …… }}
3、关联(Association)
是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等等。
- 双向关联:
默认情况下,关联是双向的。在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向的,更适合表达我们所讨论的那种关系。所以这种关系在设计的时候比较少用到,关联一般都是有向的。
对应java代码如下:
public class Customer {private Product[] products;……}public class Product {private Customer customer;……}
- 单向关联:
表示相识关系,指C3知道C4,C3可以调用C4的公共属性和方法。没有生命期的依赖。一般是表示为一种引用。
对应java代码如下
public class Customer {private Address address;……}public class Address {……}
- 自关联:
在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。即,自己引用自己,带着一个自己的引用。
对应java代码如下:
public class Node {private Node subNode;……}
- 聚合(Aggregation)
表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。
在UML中,组合关系用带空心菱形的直线表示。
对应java代码如下:
public class Car { private Engine engine; //构造注入 public Car(Engine engine) { this.engine = engine; } //设值注入public void setEngine(Engine engine) { this.engine = engine;}……}public class Engine { ……}
- 组合(Composition)
表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在,成员对象与整体对象之间具有同生共死的关系。
在UML中,组合关系用带实心菱形的直线表示。
对应java代码如下:
public class Head { private Mouth mouth; public Head() { mouth = new Mouth(); //实例化成员类 }……}public class Mouth { ……}
4、依赖(Dependency)
- 是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
- 在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。
对应java代码如下:
public class Driver { public void drive(Car car) { car.move(); } ……}public class Car { public void move() { ...... } ……}
三、总结
各种关系的强弱顺序如下:
泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖
参考来源:
http://www.uml.org.cn/oobject/201211231.asp
http://www.360doc.com/content/13/0304/13/10504424_269223190.shtml
http://blog.csdn.net/feiying008/article/details/8001419
阅读全文
0 0
- UML类图快速入门篇
- UML类图快速入门篇
- UML类图快速入门篇
- UML类图快速入门篇
- UML类图快速入门
- UML类图快速入门
- uml类图图形快速入门介绍
- UML 快速入门
- UML快速入门
- UML快速入门
- UML快速入门
- 半天快速入门uml
- 一张图读懂UML类图,UML类图关系快速入门!
- UML类图入门
- UML建模快速入门02 UML介绍
- UML类图入门总结
- UML类图入门学习
- 统一建模语言UML快速入门
- 企业微信获取access_token时遇到"errcode":40001的问题的解决
- 根据IP获取地理位置——Java实现
- 将两个表中的主键不同数据查找出来并添加到一张新表中的sql示例
- solaris下执行ar命令的@LongLink问题解决
- Linux命令:sz/rz
- UML类图快速入门篇
- 读研日迹-201708-09月
- 数据库MySQL优化相关
- Python pickle 关于存储以 “w”还是“wb”方式
- java.ulti中的接口和抽象类梳理与分析
- 探讨margin-top的bug
- 常用的git命令
- arse Error at line 58 column 17: The content of element type "struts-config" must match "(display-na
- springmvc中如何配置控制台输出日志