描述一个系统需要从系统的需求开始,找出系统的需求及需实现的功能,即用例、角色和相互之间的关系,这就需要绘制用例图;接着是一个系统的静态架构,用抽象的手段抽象出类,概括类的属性和方法,描述系统的静态架构,需要绘制类图和对象图;然后是系统的动态行为即协作图和序列图,以及系统的活动状态,明确了系统的状态还需要明确系统状态是如何变迁的,即活动图和状态图;最后设计好了一个系统,发布部署网络架构和软件的体系图,即构件图和部署图。这就是uml的9种图。
对系统的需求分析即功能的确定已经学习了用例图,链接地址如下:
http://blog.csdn.net/xdd19910505/article/details/18730981
这次接着介绍类图和对象图以及包图。类图是软件系统静态部分的呈现,描述的是所有可能的情况,而对象图是系统在某一时刻的静态结构。包图则是对一个软件系统进行模块的划分,使得源码结构更加清晰。
(一)类图
类图描述的是系统的静态部分,类图包含的元素有类、接口、协作和类的四种关系。一个类就是许多的相同属性或者是相同动作的一些对象抽象抽来的。类的部分如图1、1所示。类除了这些基本的元素之外,还有相应的可见性和属性范围。可见性即类的成员的可见度。每个实例都拥有自己的属性和方法,对于一个类的所有成员都可以共享这个成员,这个成员就成为是静态成员,下成员的下面加上下划线加以区分。一个类可以通过一个接口来实现一个功能,那么这个接口有可能是为了完成某种操作而抽象出来的一个类,这样的类叫做抽象类,抽象类的区分是名称是斜体的表示。抽象类是不可以被实例化的,为了方便我们的造作而存在,有抽象出来的属性和方法。
机房收费系统当中,可以把所有用户抽象成为一个类,用户包括一般用户、操作员和管理员,这三个不同级别的用户既可以作为各自的一个类,也可以实例为一个对象,暂且先作为一个类存在,这三个类都继承了用户的所有属性和部分共有的方法。有各自派生出自己的方法。机房收费系统的类图(仅是个人的想法,欢迎大家批评)如下:
(二)包图
包图是把一个复杂的图模块化,相似功能的类放在一个包中,使得程序结构上比较清晰,源码比较易读,最终目的是组织源代码,一个包就相当于一个子系统。包中的元素可以包括类、接口、构件、用例和其他包等。包与包之间常有的关系是泛化和依赖,主要取决于包内部的成员之间的关系。机房收费系统的包图(貌似是有些简单,但目前就是这么理解的)如下:
(三)对象图
类图和对象描述的都是一个系统的静态结构,类图描述的是所有可能的情况,而对象图描述的是一个系统在某个具体时刻的静态结构。是一个系统在某个时刻的运行快照。对象图包含的元素有对象、连接和包。对象图只是片面的某个时刻的静态结构,对于类图而言对象图就显得很具体很简单。
就机房收费系统中管理员用户添加和删除员工时刻的对象图(不知道这么理解对不对):
了解类这三种图,对uml的理解就更深刻了一些,这些都是用来描述一个软件系统的静态结构的。一个系统的动态行为是怎样描述的呢?继续学习ing…… 期待ing……