1、逻辑架构
软件的宏观组织结构。含: 1)、包 2)、子系统 3)、层
2、层
对类、包、子系统的分组(内聚)。例如:mvc。在OOA/D中要重点关注核心应用逻辑(或领域)层。
3、UML包图
描述系统的逻辑架构-层、子系统、包等。当然也可描述用例、其他包。
例1:嵌套包
说明:
虚线箭头指向的是被依赖的包。
4、分区
层:垂直
分区:水平。如技术服务层可分为安全和统计等分区
1、逻辑架构
软件的宏观组织结构。含: 1)、包 2)、子系统 3)、层2、层
对类、包、子系统的分组(内聚)。例如:mvc。在OOA/D中要重点关注核心应用逻辑(或领域)层。3、UML包图
描述系统的逻辑架构-层、子系统、包等。当然也可描述用例、其他包。例1:嵌套包
说明:
虚线箭头指向的是被依赖的包。
4、分区
层:垂直 分区:水平。如技术服务层可分为安全和统计等分区
转载于:https://www.cnblogs.com/yaoyuan2/p/11044160.html
包图
概念
包图:是一种维护和描述系统总体总结模型的重要建模工具
包:包图中的重要概念,包含了一组模型元素和图,构成了进行配置控制、存储和访问控制的基础
目的:1)通过合理规划自身功能反映系统的高层架构,在逻辑上将系统进行模块化分解
2 )组织源代码
3)描述需求的高阶概况
4)描述设计的高阶概况
三层结构:
1)用户界面层:与用户进行交互的界面,既可以是Form窗口,也可以是Web的界面形式
2)业务逻辑层:用来处理系统的业务流程,它接收用户界面请求的数据,并根据系统的业务规则返 回最终的处理结果
3)数据访问层:程序中和数据库进行交互的层
构成
1) 名称
包的名称位于大矩形的中间,包的名称是一个字符串,两种形式:简单名和路径名,类似类的名称
2) 元素
包自身所拥有的元素,如类、接口、组件、节点和用例等
从另一个包中合并或导入元素
另外一个包所访问的元素
Private用“-”,public用“+”,protected用“#”
关系
依赖关系
通常是指这两个包所包含的模型元素之间存在着一个和多个依赖
包之间的依赖关系概述了包中元素的依赖关系,即包间的依赖关系可从独立元素间的依赖关系导出
需要注意的是循环依赖:将包A或者包B中的内容进行分解,将依赖于一个包中的内容转移到另一个包中
泛化关系
类似于类的泛化关系,其中的特殊性包必须遵循一般性包的接口(不会画不知道如何去画)
嵌套
包拥有其他包以作为包内的元素,子包又可以拥有自己的子包来清晰地表现系统模型之间的关系,一般2~3 层为宜
绘制
1)在逻辑视图的图形编辑工具栏中,单击用于创建包的 拖到空白处画出包,右击“open speification”可 以进行常规设置
2)双击打开包可以往里面放类之类的元素了
3)右击点击“select compartment Items”添加类
总结:
包图就像一个口袋似的用来盛放各种系统元件,类、接口、组件等都能盛放,关系有依赖和泛化关系,理解不是很到位,尤其是泛化,不过用类图的理解原理应该是相似的,希望在接下来的学习中能够有机会再去实践运用一下
其中,逻辑结构图中的项目节点HelloWorld对应文件目录HelloWorld,逻辑结构图中的目录节点src对应文件目录src,逻辑结构图中的包节点hello对应文件目录hello,逻辑结构图中的HelloWorld.java对应文件目录hello下的HelloWorld.java。
创建包时需要注意如下几点:
(1)创建包时用package关键字;
(2)如果有包声明,包声明一定作为源代码的第一行;
(3)包的名称一般为小写,包名要有意义。例如:数学计算包名可以命名“math”,再如,绘图包可以命名“drawing”;
为了使用不在同一个包中的类,需要在java程序使用import关键字导入这个类,前面的例子经常使用Scanner类获取用户的输入,Scanner类包含在Java 核心类库util包中,因此程序要使用Scanner类,就需要导入util包,导入util包语句如下:
import java.util.*;
该条语句意思是导入Java核心类库util包中的所有类,其中import是导入包关键字,Java.util是指Java核心类库中的util包,*是导入util包中的所有类。
使用实例如下:
//导入Java.util包中的Scanner类
import Java.util.Scanner;
//导入Java.util包中的Date类
import Java.util.Date;
//导入Java.net包中的所有类
import Java.net.*;
在Java代码中,import语句应位于package语句之后,类定义之前,可以有多条import语句。
JDK中常用包介绍
JDK提供了丰富的类库,借助它提供的说明文档,可以方便地解决编程过程中的很多问题。JDK常用的包提供的主要功能如下:
● Java.lang:包含一些Java语言的核心类库,如String、Math、Interger、System和Thread。
● Java.util:包含一些实用工具类,如定义系统特性、日期时间、日历、集合类等。
● Java.io:包含能提供多种输入输出的文件读写类。
● Java.net:包含执行网络相关操作的类。
● Java.sql:Java操作数据库的一些API。
● Java.text:包含了一些用来处理文本、数字和消息的类和接口。
● java.awt:用来构建和管理Java程序图形用户的界面的类。
● Javax.swing:在awt基础上构建的一套新的图形界面类。
■ 知识点拨
同一个包中的类不需要被导入,当代码使用外部包中的类时,需要用import语句导入包含该类的包。
代码使用外部包中的类,另外一个方法是在代码中使用类的完全限定名称。例如,在使用Scanner的代码中,如果省略了导入Scanner的语句,则需要在使用Scanner类的位置使用Java.util.Scanner。
Java编译器默认为所有的Java程序引入了JDK的Java.lang 包中的所有的类。其中定义了一些常用类:System、String、Object、Math等。因此我们可以直接使用这些类,而不必显式引入。但使用其他包中的类时,则必须先引入、后使用。
UML中对模型元素进行组织管理是通过包来实现的。它把概念上相似的、有关联的、会一起产生变化的模型元素组织在同一个包中,方便开发者对复杂系统的理解,控制系统结构各部分之间的连接。而包图是由包与包之间的联系构成的,它是维护和控制系统总体结构的重要工具。
包图的基本概念
模型的组织结构:计算机系统的模型自身是一个计算机系统的制品,被应用在一个给出了模型含义的大型语境中。该模型包括模型的内部组织、整个开发过程中对每个模型的注释说明、一个缺省值集合、创建和操纵模型的假定条件以及模型与其所处环境之间的关系等。
模型需要有自己的内部组织结构,一方面能够对一个大系统进行分解,降低系统的复杂度;另一方面允许多个项目开发小组同时使用某个模型而不发生过多的相互牵涉。我们对系统模型的内部组织结构通常采用先分层再细分成包的方式。
包的命名和可见性:包图是一种维护和描述系统总体结构模型的重要建模工具,通过对图中各个包之间关系的描述,展现出系统的模块与模块之间的依赖关系。
包是包图中最重要的概念,它包含了一组模型元素和图。对于系统中的每个模型元素,如果它不是其他模型元素的一部分,那么他必须在系统中唯一的命名空间内进行声明。
包的构造型和子系统:包也有不同的构造型,表现为不同的特殊类型的包,例如模型、子系统和系统等。模型是从某一个视角观察到的对系统完全描述的包。它对其他包没有很强的依赖关系,如实现依赖或继承依赖。跟踪关系表示某些连接的存在,是不同模型的元素之间的一种较弱形式的依赖关系,他不用特殊的语义说明。通常,模型为树形结构。根包包含了存在于他体内的嵌套包,嵌套包组成了从给定观点出发的系统的所有细节。
子系统是有单独的说明和实现部分的包。他表示具有对系统其他部分存在接口的模型单元,子系统使用具有构造型关键字“subsystem”的包来表示。系统是组织起来以完成一定目的的连接单元的集合,由一个高级子系统建模,该子系统间接包含共同完成现实世界目的的模型元素的集合。一个系统通常可以用一个或多个视点不同的模型描述。系统使用一个带有构造型“system”的包表示。
包的嵌套:包可以拥有其他包作为包内的元素,子包又可以拥有自己的子包,这样构成一个系统的嵌套结构,以表达系统模型元素的静态结构关系。
包的联系:包之间的关系总的来讲可以概括为依赖关系和泛化关系。两个包之间存在着依赖关系通常指的是这两包所包含的模型之间存在着一个依赖或多个依赖。对于由对象类组成的包,如果两个包的任何对象类之间存在着一种依赖,则这两个包之间就存在着依赖。包的依赖联系同样是使用一根虚箭线表示的,虚箭线从依赖源指向独立目的包。
转载于:https://www.cnblogs.com/strawqqhat/p/10602294.html