UML图之类图,对象图和包图

【一】总述

用例图描述了软件要实现的功能有哪些,而类图,对象图和包图则展示了系统的静态结构。其中类图是面向对象系统的核心,在正向工程(模型转成代码)和逆向工程(代码转成模型)中起到了重要作用。

【二】类图

类图是描述类,接口以及它们之间关系的图,它显示了系统中各个类的静态结构,是一种静态模型。

(一)基础知识

UML图之类图,对象图和包图_第1张图片

  1. 类的表示

    类包括名称,属性和操作。按照约定,属性名用小写字母表示,当属性名需要使用多个单词时,要将这几个单词合并起来,并且从第二个单词起,每个单词的首字母都应是大写形式。
    UML图之类图,对象图和包图_第2张图片

  2. 可见性

(1)public:如果累的属性和操作被声明为public,这些属性和操作可以在类的外部被查看,使用和更新。这些属性和操作共同构成了类的公共接口。应尽量少使用public属性,以防任何使用该类的地方有不必要的改变。
(2)protected: 设为protected的属性和操作只能被该类和该类的子类调用。
(3)private:只有包含private元素的类本身才可使用。

(二)机房收费系统类图

UML图之类图,对象图和包图_第3张图片

(三)静态成员

定义:静态成员即对类的所有实例共享一个成员。在UML中表示出来就是加下划线,可以把一个类设成静态的也可以把一个属性设成静态的。
作用
(1)计数。比如在学生类中创建一个静态属性Count。当实例化一个学生小张的时候会访问count这个属性,count就会加一,再创建一个学生小李的时候,同样count再加一,这样就实现了统计学生个数的功能。
(2) 一些类没有必要创建实例,设为静态后可以通过类的名字直接调用它的属性和方法。主要指一些用于科学计算的类。

(四)抽象类 VS 接口

(1)抽象类
UML图之类图,对象图和包图_第4张图片
抽象类指这个类的属性或方法是抽象的,通用的,不是具体,这个类不能被实例化。比如一个Store类,包含两个操作store和retrieve,分别实现了存储和检索文件的功能,但如何存储到文件,存储到什么文件,如何检索文件等都是不确定的,这些都必须留给子类决定。因此,为实现抽象类必须用继承机制。
(2) 接口
如果我就想实现一个方法,比如我添加学生信息,添加完我想保存,但如果使用抽象类store,就必须先继承这个类。但如果把store和retrieve这样抽象的方法直接定义成一个接口,那就方便多了。
接口和抽象类一样都不能被实例化为对象。接口是一组没有相应方法实现的操作,非常类似于仅包含抽象方法的抽象类。.接口是对对象行为的描述,但并不给出对象的实现和状态。接口只包含操作不包含属性。
举一个例子,在做机房收费系统的时候,里面涉及到好多组合查询,我们可以把组合查询的方法定义成一个接口。 这个接口中没有属性,没有姓名啊,学号啊,班级啊,日期等,之提供一个抽象的方法,第一行选中执行什么操作,前两行选中什么操作,三行都选中等。要组合查询学生上机信息,充值信息等的时候再把相应的参数传到接口中。(个人理解,不知道是否正确)

(五)聚合 V S 组合

简而言之,他俩都表示整体与部分的关系,聚合指部分离开了整体还可以独立存在,比如轮胎和汽车;而组合之部分离开整体就不能活了,比如头和人。

UML图之类图,对象图和包图_第5张图片UML图之类图,对象图和包图_第6张图片

【三】对象图

对象图描述了参与交互的各个对象在交互过程中某一时刻的状态。使用对象图可以根据需要建立特定的示例或测试用例,然后通过示例研究如何完善类图;或者使用测试用例对类图中的规则进行测试,以求发现类图中的错误或漏掉的需求,进而修正类图。
UML图之类图,对象图和包图_第7张图片

【四】包图

UML图之类图,对象图和包图_第8张图片
包图是维护和控制系统总体结构的重要建模工具。对复杂系统进行建模时,经常需要处理大量的类,接口,组件,节点等元素,这时,有必要对他们进行分组。我们经常把语义相同并倾向于统一变化的元素放在同一包中,以便于理解和处理整个模型。

【五】总结

类图是面向对象系统的核心,它提供了用于定义和使用对象的主要规则,同时,类图是正向工程(将模型转化为代码)的主要资源,也是逆向工程(将代码转化成模型)的生成物,是最常用的UML图。对象图是对类图的一个实例化,他们共同组成了静态图。而包图是对类图的一个分类,是一个补充。主要掌握如何绘制类图。

【六】心得体会:

在画类图的时候,不知道如何抽象出类。除了人之外就找不到别的名词可以当做类的。第一遍画的图中有好多接口,其实那是画的时候对接口的认识也不深,认为就是把许多类都要用到的方法提出来,形成接口,可以实现很好的复用,修改也方便。接口中还写了属性,验收的时候师傅问我类和接口有什么不同,我就蒙圈了,然后师傅说接口中是没有属性的。
之后我又看了借的书,连接口中没有属性都不知道真是太惭愧了,因为书早就借了也看过了。但从效果来看,书看的相当不仔细,没有掌握好方法,看一本书要抓住重要的点难以区分的点看,不要拘泥于细节,要有全局观。比如说UML图肯定就那9大图和4大关系,那9大图都是什么,都有什么作用,它们之间有什么区别就是重点。要学会学习,把握重点。

以上都是现阶段对UML的粗浅认识,认识也是一个曲线上升的过程,可能有不正确的地方,还望大神指正。

你可能感兴趣的:(面向对象)