大家好,鸡啄米上一讲给大家介绍了类模板的概念,这一讲给大家简单介绍下UML的知识。如果要系统的学习UML还要找专门讲UML的教程来研究。
我们在进行软件开发的时候,如果只靠脑子想,只有一个看不见的软件规划、软件架构,可能写程序时会影响你的思路的清晰,或者中间间断了以后会忘记当初的规划而要重新回忆或重新规划。如果我们可以把程序设计用图形表达出来,就会让我们的思路很清晰,也很容易进行合理的优化,我们和其他的软件开发人员或者用户就能够进行更好的沟通。
面向对象设计图应运而生,它能清楚的描述以下几个问题:
1.类,包括数据成员和函数成员。
2.对象,类的实例。
3.类及对象的关系,继承或者包含。
4.类及对象之间的联系,相互作用与消息传递等。
现在国际上标准的面向对象标记方法称为UML,即统一建模语言。这种标记分为两类图形符号:表示符号和连接符号。表示符号用来表示类和对象,连接符号用来表示类和对象之间的关系和联系。
UML中有9种图:类图、对象图、用例图、顺序图、协作图、状态图、活动图、组件图和实施图。这里只介绍下类图和对象图。
鸡啄米用第十三讲类与对象:类的声明、成员的访问控制和对象中的Clock类做例子,给出它的类图:
大家可以看出,最上面的框中是类名,中间框中是数据成员,最下面的框中是函数成员。
再用Clock类的对象myClock给大家一个对象图的例子:
UML中类及对象的关系有以下几种:依赖、关联、聚合、组合、泛化和实现。
鸡啄米下面分别讲讲这几种关系:
1.依赖关系。
如果类A使用了类B,或者说如果类B的变化会影响类A,则说类A依赖于类B。一般有以下几种情况属于依赖关系:类A调用类B的成员函数;类B的对象是类A的成员变量;类A的成员函数使用了类B类型的参数。依赖关系用带箭头的虚线表示,如下图:
2.关联关系。
上图中,重数A表示类B的每个对象与类A的多少个对象相关联,重数B则表示类A的每个对象与类B的多少个对象发生作用。比如,老师和学生的关联,老师类的重数应该是1,学生类的重数可能是n。
3.泛化关系。
如果类A和类B是从类C继承的子类,那么类C就是类A和类B的泛化。泛化关系用带空心三角形的实线表示:
4.聚合关系。
聚合表示类之间的关系是整体和部分的关系,但是聚合关系中的整体和部分是可以分开的。比如,我们可以选择某个主板、硬盘、机箱等配件组装一台电脑,以后这台电脑可以随时更换配件,还一样能够组成一台电脑。聚合关系用带空心菱形的实线表示。
5.组合关系。
组合关系也是整体和部分的关系,但是它与聚合关系不同的是,整体和部分是不可以分开的。比如,我们的房子由客厅、卧室、厨房等组合而成,房子不能和别人的房子对换客厅等任何房间,客厅、卧室等不能和房子分开。组合关系用带实心菱形的实线表示。
6.实现关系。
实现关系用来说明接口和实现接口的类之间的关系。实现关系图用带空心三角形的虚线表示:
最后,鸡啄米再说下UML中的注释。在UML图形上,注释表示为带有褶角的矩形,然后用虚线连接到UML的其他元素上,它是一种用于在图中附加文字注释的机制。
UML的知识鸡啄米就大概讲这些了,具体系统的UML内容大家可以看专门讲解的相关书籍。