一只菜鸟的简陋UML类图(class diagram)


由于我们这个学期要完成自己的一个小项目,所以就开始了我的UML学习旅程,其实主要就是在网上查看一些画图所要注意的规范,也就是你需要大致合理且准确地用上starUML左边工具栏那些箭头和框框。比如,我们班的同学在类图的时候,我发现他们对于聚合,组合,依赖,泛化等的定义并不是很明确。其实我觉得这些倒是很重要的,我们老师反复强调,我们设计与开发一个项目不能只是给我们开发者自己来看,夸张来说,我们需要用户一眼就明白我们这个项目是干嘛的。所以当我们比较规范画出UML图时,向老师或者客户讲解我们的设计也会给他们带来一个清晰的思维框架。


先讲一下类图常见的几种关系:


1.泛化(generalization)


一般来说,我们可以把泛化关系简单理解为继承,相信大家学过C++或者JAVA吧,书里面就有讲继承的概念,在某种程度上继承实现了可重用性,它指定了一个新类(子类)从已有的类(父类)里获得其已有的特性。




staruml通过Java代码画类图 怎么用staruml画类图_staruml通过Java代码画类图

staruml通过Java代码画类图 怎么用staruml画类图_泛化_02



2.组合(composition)


很多人容易把组合和聚合混淆,其实它们很好区分。组合表示两个对象之间是整体与部分的强关系,例如A和B,B会随着A的创建而被创建,B也会随着A的消亡而消亡,这就是组合的关系。



staruml通过Java代码画类图 怎么用staruml画类图_staruml通过Java代码画类图_03




3.聚合(aggregation)



聚合表示两个对象之间是整体与部分的弱关系,也就是随着A的创建,B不一定被创建;随着A的消亡,B也不一定消亡。




staruml通过Java代码画类图 怎么用staruml画类图_UML_04



4.关联(association)



关联表现的则是两个对象之间一种很弱的联系。关联分为两种:带有方向的单向关联;不带方向的双向关联。


例如,一个学生可以有一个到多个老师,一个老师也可以有一个到多个学生。


或者,一名淘宝用户可以下零个或多个订单,而一个订单只能被一位用户拥有。



staruml通过Java代码画类图 怎么用staruml画类图_类图_05

staruml通过Java代码画类图 怎么用staruml画类图_泛化_06





聚合是一种特殊的关联,而组合又是一种特殊的聚合。


最后展示下作为一名菜鸟所画的类图吧,其实越想这个类图的一些逻辑关系,就越觉得自己画错了,唉,欢迎大家多多指正吧。




staruml通过Java代码画类图 怎么用staruml画类图_staruml通过Java代码画类图_07






下面顺便给大家看下我画的用例图吧




staruml通过Java代码画类图 怎么用staruml画类图_UML_08