一.类

类(class)封装了数据和行为,是面向对象的重要组成部分,他是具有相同操作、属性、关系的对象集合的总称。

在软件运行时,类被实例化成对象(object),对象对应某个具体的事物,是类的实例(instance)

类图(class diagram)使用出现在系统中的不同类来描述系统的静态结构,它用来描述不同的类以及它们之间的关系。

在系统分析和设计阶段,类通常可以分为三种,分别是实体类(Entity class)、控制类(Control Class)和边界类(Boundary Class)。

1)实体类:对应系统中的每个实体,它们通常需要保存在永久存储体中,一般使用数据库或文件表来记录,实体类既包括存储和传递数据的类,还包括操作数据的类。实体类来源于需求说明中的名词,如学生、商品等。

2)控制类:用于体现应用程序的执行逻辑,提供相应的业务操作,将控制 类抽象出来可以降低界面和数据库之间的耦合度。控制类一般是由动宾结构的短语(动词加名词)转化来的名词,比如增加商品类,用户注册类。

3)边界类:用于对外部用户和系统之间的交互对象进行抽象,主要包括界面类,如对话框、窗口、菜单。

二.类的UML表示

一般是长方形(分三格),类名在最上面那格,中间是成员变量(属性),最下面是成员函数(行为)。

属性格式: 可见性 名称:类型 [ = 缺省值]

行为格式: 可见性 名词(参数列表) [ : 返回类型]

关于可见性: + public,- private,# protected

例如:

三.类与类之间的关系

在软件系统中,类表示孤立存在的,类与类之间存在各种关系,UML提供不提供表示方式。

1.关联关系(Association):

最常用的一种关系,它是一种结构化关系,用于表示一类对象和另一对象之间有联系。

在UML类图中,用实线连接有关联关系的对象所对应的类。

实际的场景:class A有一个成员对象b,b的类型是class B。那就可以表示为A与B用实线连接起来,箭头由A指向B。

1.1双向关联:

默认情况下关联是双向的,也就是没有箭头指向的。

比如顾客里面有商品,同时卖出的商品里面也可以有顾客。

1.2单向关联:

就像上面的例子一样,XHTTPServer有成员XTcp。

1.3自关联:

存在一些类的属性对象类型为该类本身。比如一个节点的成员也是节点类型的对象。

1.4 多重性关联(Multiolicity):

表示两个关联对象在数量上的对应关系。

在UML中对象之间的多重性可以直接在关联直线上用一个数字或一个数字范围表示。

常见的多重性表示如下图:

比如一个界面(Form)可以拥有零个或多个按钮,一个按钮只能属于一个界面。

1.5 聚合关系(Aggregation):

表示整体与部分的关系。在聚合关系中,成员对象是整体对象的一部分,但是成员对象也可以脱离整体对象独立存在。

在UML中聚合关系用空心菱形的直线表示。

比如汽车发动机是汽车的一部分,但是发动机也可以独立存在。

1.6 组合关系(composition):

表示整体和部分的关系,但是在组合关系中整体对象可以控制成员对象的生命周期。一旦整体对象不在了,成员对象也就不在了。具有同生共死的关系。

在UML中用带实心菱形的直线表示。

比如,头是整体,嘴巴只是一个部分。嘴巴不能独立存在

2.依赖关系(Dependency):

是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,在需要表示一个事物使用另一个事物的时就用到了依赖关系。

比如:classA中的fun(B b),方法fun中用到了class B对象。

在UML中用带箭头的虚线表示,由依赖的一方指向被依赖的一方。

3.泛化关系(Generalization):

也就是继承关系。描述父类与子类之间的关系。

在UML中使用带空性三角形的直线来表示。

4.接口与实现关系(Realization)

接口和类之间还存在一种实现关系。这种关系中,类实现了接口,类中的操作实现了接口中所做的声明。

在UML中类与接口之间的实现关系用带空心三角形的虚线来表示。

比如,下面的接口Vehicle,包含抽象操作move,类ship和类car都实现了该move操作,具体的细节会不一样而已。

关于上面的参考:http://www.uml.org.cn/oobject/201211231.asp

关于如何用Enterprise Architect 8.0画类图可以参考:http://blog.csdn.net/cfeibiao/article/details/8545083

UML中类图的一些基本知识的更多相关文章

  1. UML中类图(Class Diagram)的关系整理

    什么是UML类图? 类图显示了一组类.接口.协作以及他们之间的关系.在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统.类加上他们之间的关系就构成了类图,类图中还可以包 ...

  2. UML中类图的符号解释

    在UML的定义中,描写叙述类和对象之间的关系,包含下面几种方式:依赖(Dependency).关联(Association).聚合(Aggregation).组合(Composition).泛化(Ge ...

  3. UML中类图的四种关系及其代码实现

    在uml图中 最复杂的也就是泛化,实现.依赖,关联.这四种关系了,假设弄清了这几种关系那么在理解UML图的时候就会变得轻车熟路了! 假设你对着几种关系一点都不熟悉的话能够看一下uml中的四种关系.这篇 ...

  4. 第一章 简单工厂模式 及 UML中类图的表示方法

    写一个简单计算器程序时,可以写一个操作类,然后加.减.乘.除操作分别继承它,复写操作计算结果的方法.写一个简单工厂类,通过输入的操作符,使用操作类来new一个相应的操作类的子类对象.这样,工厂就实例化 ...

  5. UML类图详解

    下面是类图的实例: (注:飞翔接口那里应为空心三角形) UML中类图实例 接口:空心圆+直线(唐老鸭类实现了‘讲人话’):依赖:虚线+箭头(动物和空气的关系):关联:实线+箭头(企鹅需要知道气候才迁移 ...

  6. UML 类图常用表示方法.

    UML中类图实例 接口:空心圆+直线(唐老鸭类实现了‘讲人话’): 依赖:虚线+箭头(动物和空气的关系): 关联:实线+箭头(企鹅需要知道气候才迁移): 聚合:空心四边形+实线+箭头(雁群和大雁的关系 ...

  7. 什么是UML类图

    百度了下,看评论不错我就收藏了,学习,真心不懂!!! 首先是复习一下UML中九种图的理解:http://xhf123456789plain.blog.163.com/blog/static/17288 ...

  8. 【转载】UML类图知识整理

    原文:UML类图知识整理 UML类图 UML,进阶必备专业技能,看不懂UML就会看不懂那些优秀的资料. 这里简单整理 类之间的关系 泛化关系(generalization) 泛化(generalize ...

  9. UML类图中类与类的四种关系图解

    国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...

随机推荐

  1. 如何连接别人电脑上的Oracle数据库--duende99

    需要一些前提条件: 1.对方的主机能被连接(如在同一局域网内) 2.需要知道对方数据库IP.端口号.服务名 3.需要知道对方提供的管理数据库的用户名及密码 连接方法: 1.在本地的oracle安装目录 ...

  2. C# 委托高级应用----线程——创建无阻塞的异步调用(二)

    了解IAsyncResult 现在我们已经了解,EndInvoke可以给我们提供传出参数与更新后的ref参数:也可以向我们导出异步函数中的异常信息.例如,我们使用BeginInvoke调用了异步函数S ...

  3. 【java】反射简单示例

    package 反射; public class Test反射 { public static void main(String[] args) { System.out.println(Runtim ...

  4. scrollTop的兼容性

    各浏览器下 scrollTop的差异 IE6/7/8: 对于没有doctype声明的页面里可以使用 document.body.scrollTop 来获取 scrollTop高度 : 对于有docty ...

  5. iOS动态性:动态添加属性的方法——关联(e.g. 向Category添加属性)

    想到要如何为所有的对象增加实例变量吗?我们知道,使用Category可以很方便地为现有的类增加方法,但却无法直接增加实例变量.不过从Mac OS X v10.6开始,系统提供了Associative ...

  6. 如何在阿里云linux上部署java项目

      前2天把git练了下,敲了很多命令,也借助图形界面增强自己的理解,乘着余热把linux在熟悉下.然后想起以前婷主有让我帮忙搭建的阿里云服务器,所以就想自己试着在阿里云的linux上搭建自己的jav ...

  7. Akka Cluster简介与基本环境搭建

      akka集群是高容错.去中心化.不存在单点故障以及不存在单点瓶颈的集群.它使用gossip协议通信以及具备故障自动检测功能. Gossip收敛   集群中每一个节点被其他节点监督(默认的最大数量为 ...

  8. ArcGIS 网络分析[8.1] 资料1 使用AO打开或创建网络数据集之【打开】

    为了创建或打开一个网络数据集,你必须使用NetworkDatasetFDExtension对象(文件地理数据库中的数据集)或NetworkDatasetWorkspaceExtension对象(对于S ...

  9. Notepad++使用教程

    Notepad++ 快捷键 大全 Ctrl+C 复制Ctrl+X 剪切Ctrl+V 粘贴Ctrl+Z 撤消Ctrl+Y 恢复Ctrl+A 全选Ctrl+F 键查找对话框启动Ctrl+H 查找/替换对话 ...

  10. 论文笔记-Squeeze-and-Excitation Networks

    作者提出为了增强网络的表达能力,现有的工作显示了加强空间编码的作用.在这篇论文里面,作者重点关注channel上的信息,提出了"Squeeze-and-Excitation"(SE ...