Unity_设计模式_UML类图_03

来源:互联网 发布:linux命令行复制文件 编辑:程序博客网 时间:2024/05/20 13:38

UML:Unified Modeling Language(统一建模语言)。
UML是一个通用的可视化建模语言,不同于编程语言,它通过一些标准的图形符号和文字来对系统进行建模。
用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。
是一套总结了以往建模技术的经验并吸收了当今最优秀成果的标准建模方法。
视图
这里写图片描述
图(Diagram):13种(UML 2.X)
用例图(Use Case Diagram),
类图(Class Diagram),
对象图(Object Diagram),
包图(Package Diagram),
组合结构图(Composite Structure Diagram),
状态图(State Diagram),
活动图(Activity Diagram),
顺序图(Sequence Diagram),
通信图(Communication Diagram),
定时图(Timing Diagram),
交互概览图(Interaction Overview Diagram),
组件图(Component Diagram),
部署图(Deployment Diagram)
模型元素:
UML图中所使用的一些概念,对应于普通的面向对象概念
同一个模型元素可以在多个不同的UML图中使用,但是,无论在哪个图中,同一个模型元素都必须保持相同的意义并具有相同的符号。
通用机制(General Mechanism)
UML提供的通用机制为模型元素提供额外的注释、语义和其他信息,包括扩展机制,允许用户对UML进行扩展。
类(Class)
封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。
在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类通常有且仅有一种职责。在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。
类的属性即类的数据职责,类的操作即类的行为职责。
类实例化成对象(Object),对象对应于某个具体的事物,是类的实例(Instance)。
类图(Class Diagram)使用出现在系统中的不同类来描述系统的静态结构,它用来描述不同的类以及它们之间的关系。
类的UMl图示
在UML类图中,类一般由三部分组成:
第一部分是类名:每个类都必须有一个名字,类名是一个字符串。
按照C#语言的命名规范,类名中每一个单词的首字母均大写。
这里写图片描述
第二部分是类的属性(Attributes):属性是指类的性质,即类的成员变量。一个类可以有任意多个属性,也可以没有属性。
按照C#语言的命名规范,属性名中的第一个单词全小写,之后每个单词首字母大写。 (驼峰命名法)
这里写图片描述
第三部分是类的操作(Operations):操作是类的任意一个实例对象都拥有的行为,是类的成员方法。
按照C#语言的命名规范,方法名中的每个单词首字母都大写。 (帕斯卡命名法)
这里写图片描述
类之间的关系:
关联(Association)关系是类与类之间最常用的一种关系,它是一种结构化关系,用于表示一类对象与另一类对象之间有联系。
在UML类图中,用实线连接有关联关系的对象所对应的类,在使用C#、C++和Java等编程语言实现关联关系时,通常将一个类的对象作为另一个类的成员变量。
在使用类图表示关联关系时可以在关联线上标注角色名。
这里写图片描述
public class LoginForm
{
private Button loginButton;
……
}
public class Button
{
……
}
双向关联:默认情况下,关联是双向的
这里写图片描述
public class Customer
{
private Product[] products;
……
}
public class Product
{
private Customer customer;
……
}
单向关联:类的关联关系也可以是单向的,单向关联用带箭头的实线表示
这里写图片描述
public class Customer
{
private Address address;
……
}
public class Address
{
……
}
自关联:在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联
这里写图片描述
public class Node
{
private Node subNode;
……
}
多重性关联 :多重性关联关系又称为重数性(Multiplicity)关联关系,表示两个关联对象在数量上的对应关系。在UML中,对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示
这里写图片描述
这里写图片描述
public class Form
{
private Button[] buttons; //定义一个集合对象
……
}
public class Button
{
……
}
聚合关系
聚合(Aggregation)关系表示整体与部分的关系
在聚合关系中,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在
在UML中,聚合关系用带空心菱形的直线表示
这里写图片描述
public class Car
{
private Engine engine;
public Car(Engine engine) //构造注入
{
this.engine = engine;
}
public Engine Engine
{
get { return engine; }
set { engine = value; } //设值注入
}
……
}
public class Engine
{
……
}
组合(Composition)关系也表示类之间整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期,一旦整体对象不存在,成员对象也将不存在
成员对象与整体对象之间具有同生共死的关系
在UML中,组合关系用带实心菱形的直线表示
这里写图片描述
public class Head
{
private Mouth mouth;
public Head()
{
mouth = new Mouth(); //实例化成员类
}
……
}
public class Mouth
{
……
}
依赖关系
依赖(Dependency)关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。
大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。
在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。
这里写图片描述
public class Driver
{
public void Drive(Car car)
{
car.Move();
}
……
}
public class Car
{
public void Move()
{
……
}
……
}
泛化关系
泛化(Generalization)关系也就是继承关系,用于描述父类与子类之间的关系,父类又称为基类或超类,子类又称为派生类。
在UML中,泛化关系用带空心三角形的直线来表示。
在用代码实现时,使用面向对象的继承机制来实现泛化关系,在C#中使用冒号“:”来实现。
这里写图片描述
public class Person //父类
{
protected string name;
protected int age;
public void Move()
{
……
}
public void Say()
{
……
}
}
public class Student : Person //子类
{
private string studentNo;
public void Study()
{
……
}
}
接口与实现关系
接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现(Realization)关系,在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。
在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。
这里写图片描述
public interface Vehicle
{
void Move();
}
public class Ship : Vehicle
{
public void Move()
{
……
}
}
public class Car : Vehicle
{
public void Move()
{
……
}
}

原创粉丝点击