第六题 包图
重要概念:
1、包图(package Diagram)
由若干个包以及包之间的关系组成。包是一种分组机制,其将一些相关的类集合为一个包,形成高内聚,低耦合的类集合,可以说,一个包相当于一个子系统。
2、简要介绍:
包图是一种维护和描述系统总体结构的模型的重要建模工具,通过对包中各个包以及包之间关系的描述,展现出系统的模块与模块之间的依赖关系。在面向对象软件开发的视角中,类显然是构建整个系统的基本构造块。但是对于庞大的应用系统而言,其包含的类将是成百上千,再加上其间“阡陌交纵”的关联关系、多重性等,必然是大大超出了人们可以处理的复杂度。这也就是引入了“包”这种分组事物构造块。
包的名字:
每个包都必须有一个区别于其他包的名字。模型包的名字是一个字符串,可以分为简单名和路径名。
简单名:指包仅含一个简单的名称。
路径名:指以包位于的外围包的名字作为前缀。
3、包图的作用:
包图可以描述需求,设计的高阶概况;包图通过合理规划自身功能反应系统的高层架构,在逻辑上将系统进行模块化分解;包图最终是组织源码的方式。
一个包图可以由任何一种UML图组成,通常是UML用例图或是UML类图。
包被描述成文件夹,可以用于UML任何一种的图上。
4、UML之间的关系:
依赖:用带有箭头的虚线表示,箭头指向被依赖的包
5、UML包图使用说明
对成组元素建模
◆每个包都应该是在概念、语义上相互接近的元素组成;
◆对每个包找出应标记为公共的元素,但应尽可能地少;
◆一般使用默认的《use》构造型,在映射到编程时考虑明确《import》构造型;
◆考虑采用泛化来对特殊包进行建模。
◆在表示这种模型时,注意只标明对每个包都起核心作用的元素;另外也可以标识每个包的文档标记值,以使其更加清晰
对体系结构建模
◆对体系结构进行建模(程序分层),是UML包图更有意义的一个用途。体系结构是一个软件系统的核心逻辑结构
◆常用的体系结构模式包括分层、MVC、管道、黑板、微内核等,而在应用软件中,分层和MVC
5、信息系统逻辑架构中常见的层
UI、Application、Domain、Business Infrastructure、Technical Service、Foundation
6、MVC架构
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用于组织代码用一种业务逻辑和数据显示分离的方法,这个方法的假设前提是如果业务逻辑被聚集到一个部件里面,而且界面和用户围绕数据的交互能被改进和个性化定制而不需要重新编写业务逻辑MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
7、MVC分层介绍
MVC是三个单词的首字母缩写,它们是Model(模型)、View(视图)和Controller(控制)。
这个模式认为,程序不论简单或复杂,从结构上看,都可以分成三层。
1)最上面的一层,是直接面向最终用户的"视图层"(View)。它是提供给用户的操作界面,是程序的外壳。
2)最底下的一层,是核心的"数据层"(Model),也就是程序需要操作的数据或信息。
3)中间的一层,就是"控制层"(Controller),它负责根据用户从"视图层"输入的指令,选取"数据层"中的数据,然后对其进行相应的操作,产生最终结果。
绘制要点:
具体方法:http://blog.csdn.net/cjr15233661143/article/details/8452603
http://blog.csdn.net/xujiaolf/article/details/8557686
http://www.ruanyifeng.com/blog/2007/11/mvc.html (MVC架构介绍)
网上对包图的介绍不如其他图解释的详细,找了几篇可以作为参考,不过题中要求的是MVC架构,所以了解包的简单概念,再看最后一篇中的对MVC的简介就可以画图啦!
注意事项:
我想实现这一个场景,请使用MVC模式生成一个层次架构,请你用一个包图来表示这个层次架构,并把场景里面的元素填到包里面去。
有3个包,一个叫M(模型),一个叫V(视图),一个叫C(控制器)。
把每个包里面涉及到的东西添加到包里面。
1、包图的M里面的元素全都来自领域模型里面。
2、临时变量都属于控制层,动作的命名规则是在动作后面加个Action或者Controller,一个用例就一个控制器。
3、用例中出现的界面都属于V
对一个用例画包图就是把这个用例的领域模型里面的元素填到M(domain layer)和C(controller)包里面,然后给界面起个名字,然后写在V(UI)包里面即可。(老师没说要画包之间的关系,他自己画的图也没有画关系,所以干脆还是不要画了吧)
如果有外部支持资源,写在foundation包里面就可以了。
试题答案: