UML学习笔记1
最近在看尚学堂的 UML 视频。感觉还有点小意思,总比看书强多了。边看边做下些笔记。
依赖:一个事物的变化引起另外一个事物的变化,表现为在一个对象的方法中用到其他类型的对象;用到什么就依赖什么。
依赖关系--真的有必要画出来吗?
必要性是画图的重要原则,因此,不一定要画出所有的依赖关系。要注意不影响图形的美观。(关键是要看需要表达什么,只要把问题表达清楚就行)
低耦合高内聚:降低依赖的目标是降低与不稳定的其它对象之间的依赖关系,而不是盲目降低依赖。
关联:是一种关系。在某一段时间内,对象之间会有一定的联系:跟时间和对象有关系。(导航、角色、多重性、聚合、组合)
导航:从一个对象访问另外一个对象。从一端方位另外一端是单向导航,如果可以互相访问,则是双向导航。
关联的箭头指向表示导航的方向;单向箭头表示单向导航,即单向关系;没有箭头一般表示双向关联。
角色名称:
多重性:一个对象可以与多少个其它对象之间发生关联。多重性要从双方来理解,不能只从单方:比如一个学生属于一个班级,看似是1对1,但是从双方来看的话,一个班级会包含很多学生,所以学生和班级之间是多对一的关系。
聚合是一种关联,组合是一种聚合。
泛化与实现:
泛化:is a kind of,表示是一种的意思。比如鸟从动物泛化而来,鸟是一种动物。(依赖、关联、泛化与实现都是一种关系,聚合是一种关联,而组合是一种聚合。)
实现:实现一个借口。
正向工程:从UML图形生成代码;
逆向工程:从代码生成UML图形;
不要依赖于正向或逆向工程,仅是一种辅助手段。
画图的目的不是为了生成代码;
写代码的目的也不是为了生成图形!
模型驱动架构(MDA):目前仍处于概念模型,目前来看还不靠谱。
什么时候使用类图?
任何时候,不一定只是在建模设计的时候,类图是最重要的模型,不要尝试使用类图描述所有细节,比如没有必要把所有的函数和属性都表示出来。
要尽量保持类图的简单,保证别人能够理解图。
对概念建模(领域模型)。
分析类图:实体类,控制类,边界类。
边界类:跟用户打交道的那些类。
控制类:执行业务逻辑操作,可能控制程序流,使用某些代码来实现某些业务;
实体类:记录业务数据。