<strong>类图用于描述系统中所包含的类以及它们之间的相互关系,帮助人们简化对系统的理解,它是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。</strong>

1. 类

类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责。在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。类的属性即类的数据职责,类的操作即类的行为职责。设计类是面向对象设计中最重要的组成部分,也是最复杂和最耗时的部分。

在软件系统运行时,类将被实例化成对象(Object),对象对应于某个具体的事物,是类的实例(Instance)。

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

在系统分析与设计阶段,类通常可以分为三种,分别是实体类(Entity Class)、控制类(Control Class)和边界类(Boundary Class),下面对这三种类加以简要说明:

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

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

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

在面向对象分析和设计的初级阶段,通常首先识别出实体类,绘制初始类图,此时的类图也可称为领域模型,包括实体类及其它们之间的相互关系。

2. 类的UML图示

在UML中,类使用包含类名、属性和操作且带有分隔线的长方形来表示,如定义一个Employee类,它包含属性name、age和email,以及操作modifyInfo(),在UML类图中该类如图1所示:

图1对应的Java代码片段如下:

public class Employee {private String name;private int age;private String email;public void modifyInfo() {......}
}

在UML类图中,类一般由三部分组成:

(1) 第一部分是类名:每个类都必须有一个名字,类名是一个字符串。

(2) 第二部分是类的属性(Attributes):属性是指类的性质,即类的成员变量。一个类可以有任意多个属性,也可以没有属性

UML规定属性的表示方式为:

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

其中:

  • “可见性”表示该属性对于类外的元素而言是否可见,包括公有(public)、私有(private)和受保护(protected)三种,在类图中分别用符号+、-和#表示。
  • “名称”表示属性名,用一个字符串表示。
  • “类型”表示属性的数据类型,可以是基本数据类型,也可以是用户自定义类型。
  • “缺省值”是一个可选项,即属性的初始值。

(3) 第三部分是类的操作(Operations):操作是类的任意一个实例对象都可以使用的行为,是类的成员方法。

UML规定操作的表示方式为:

可见性 名称(参数列表) [ : 返回类型]

其中:

  • “可见性”的定义与属性的可见性定义相同。
  • “名称”即方法名,用一个字符串表示。
  • “参数列表”表示方法的参数,其语法与属性的定义相似,参数个数是任意的,多个参数之间用逗号“,”隔开。
  • “返回类型”是一个可选项,表示方法的返回值类型,依赖于具体的编程语言,可以是基本数据类型,也可以是用户自定义类型,还可以是空类型(void),如果是构造方法,则无返回类型。

在类图2中,操作method1的可见性为public(+),带入了一个Object类型的参数par,返回值为空(void);操作method2的可见性为protected(#),无参数,返回值为String类型;操作method3的可见性为private(-),包含两个参数,其中一个参数为int类型,另一个为int[]类型,返回值为int类型。

由于在Java语言中允许出现内部类,因此可能会出现包含四个部分的类图,如图3所示:

UML类图---类与类图的解析相关推荐

  1. java uml 类图 加号_UML建模基础 UML类图的组成元素和关系解析

    本文和大家重点讨论一下在UML建模中UML类图的java代码表现,主要包括UML类图元素和关系两大部分内容,相信通过本文的介绍你对UML类图的概念一定会与明确的认识. 在UML建模中UML类图的jav ...

  2. UML从需求到实现---类图(2)

    上节写到了UML中的类图:UML从需求到实现---类图(1) 写完以后总觉得写的不够详细.里面很多细节没有说到.一篇文章就把强大的面向对象的类说完.当然是不可能的.这次我再补充一些关于UML中类图和类 ...

  3. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战

    发现个好东西思维导图, 最近开始用MindManager整理博客 . 作者 :万境绝尘  转载请注明出处 : http://blog.csdn.net/shulianghan/article/deta ...

  4. 怎样用uml类图生成java类_JAVA:面向对象编程的底层逻辑,深度剖析

    什么是面向对象 在目前的软件开发领域有两种主流的开发方法,分别是结构化开发方法和面向对象开发方法.早期的编程语言如C.Basic.Pascal等都是结构化编程语言,随着软件开发技术的逐渐发展,人们发现 ...

  5. ****** 五十 ******、软设笔记【UML分析和意义】-类图、对象图、状态图、活动图、顺序图、协作图、构件图、部署图,动静态模式...

    一.类图(Class Diagram) 描述一组类.接口.协作已经它们之间的图,用来显示系统中各个类的静态结构图. 类之间的关系(relationship) *依赖(dependency) *泛化(g ...

  6. UML实践---用例图、顺序图、状态图、类图、包图、协作图

    转载:http://www.uml.org.cn/oobject/200901203.asp 面向对象的问题的处理的关键是建模问题.建模可以把在复杂世界的许多重要的细节给抽象出.许多建模工具封装了UM ...

  7. UML建模—EA创建Class(类图)

    1.新建类图 2.添加类或接口 在类图可以捕获系统-类-和模型组件的逻辑结构.它是一个静态模型,描述存在什么,有哪些属性和行为,而不管如何去做. 说明关系之间的类和接口; 泛化. 聚合和关联是在分别反 ...

  8. UML实践----用例图、顺序图、状态图、类图、包图、协作图

    http://www.uml.org.cn/oobject/200901203.asp UML实践----用例图.顺序图.状态图.类图.包图.协作图 2009-01-20 作者:Randy Mille ...

  9. 【转】UML基础: 第1部分 - 类图 (Class Diagram)

    类图 类图是一个静态图.它代表了应用程序的静态视图.类图不仅用于可视化,描述和记录系统的不同方面,还用于构建软件应用程序的可执行代码. 类图描述了一个类的属性和操作,以及对系统施加的约束.类图被广泛用 ...

  10. UML类图画法及类之间几种关系

    文章目录如下: 一.类图画法 二.类之间的几种关系:泛化(Generalization).实现(Realization).关联(Association)(又分一般关联.聚合(Aggregation). ...

最新文章

  1. win7+iis7.5下的asp.net网站发布系列问题
  2. 中山大学2016年硕士研究生入学考试复试基本分数线
  3. 排序方法的分类 算法
  4. Scikit-Learn 机器学习笔记 -- 线性回归、逻辑回归、softmax回归
  5. springboot学习笔记一(从maven项目到springboot)
  6. 虚拟服务器声卡,如何使用虚拟声卡?虚拟声卡安装教程!
  7. 浅谈服务器使用RAID5磁盘阵列的问题
  8. ZYNQ FPGA控制LED灯不闪烁
  9. 如何创建支持不同屏幕尺寸的Android应用(转载)
  10. 数据结构笔记(九)-- 单链队列
  11. 基于Tensorflow针对cifar数据集运用卷积神经网络解决100类图片的分类问题。
  12. 微信小程序上传图片(限制图片大小、张数)
  13. 联想台式主机拆机教程_联想台式电脑主机怎么拆 联想b5040一体机拆机
  14. Kuma是什么? Kuma1.0 GA 发布了包含70+新特性和改进
  15. vivo oppo 手机手机调试无法启动
  16. Android中全局搜索(QuickSearchBox)详解(一)
  17. IAAS基于开源openstack框架搭建云计算平台和各组件基础搭建内容包括mysql、keyston、Glance、Nova、Neutron、Dashboard、Heat、Trove等
  18. 关于STM32中SPI硬件的NSS配置
  19. JNI(一) JNI - NDK-交叉编译
  20. js逆向,破解企名片网站的加密参数

热门文章

  1. 软件开发过程大观——软件开发过程改进为什么能帮助软件质量提升?
  2. 【Python】圆周率 Pi (π) 的计算(蒙特卡罗法+公式法)
  3. 关于快手小铃铛广告投放的方式
  4. 读书笔记『Kotlin实战』
  5. 大学综评自招面试 计算机专业,沪9高校举行自招面试 高中学生综合素质纪实报告成重要参考...
  6. LC滤波器设计学习笔记(一)滤波电路入门
  7. 持续迭代、永久更新的WIN NFT HORSE,具有无穷无尽的生命力
  8. 苹果“面目全非”的 iOS7
  9. 数据可视化大屏酷炫秘籍之前端开发者自己动手
  10. python dataframe dropna_在Python中使用熊猫在两个DataFrame之间进行值...