-
UML 包图
2014-06-04 17:16:38包图的定义: 包图的作用: 包图的构成包图的定义:
包可直接理解为命名空间,文件夹,是用来组织图形的封装,包图可以用来表述功能组命名空间的组织层次。
包图的作用:
1)对语义上相关的元素进行分组;
2)定义模型中的“语义边界”;
3)提供配置管理单元;
4)在设计时,提供并行工作的单元;
5)提供封装的命名空间,其中所有名称必须惟一包图的构成:
包的可见性:
用“+”来表示“public”,
用“#”来表示“protected”,
用“-”来表示“private”
包的常见结构:
包之间的关系:
•《use》使用关系:是一种默认的依赖关系,说明客户包(发出者)中的元素以某种方式使用提供者包(箭头指向的包)的公共元素,也就是说客户包依赖于提供者包
•《import》引用关系:最普遍的包依赖类型,说明提供者包(箭头指向的包)的命名空间(包本身代表命名空间)将被添加到客户包(发出者)的命名空间中,客户包中的元素也能够访问提供者包的所有公共元素
•《access》访问关系:只想使用提供者包中的元素,而不想将其命名空间合并则应使用该关系
•《trace》追溯关系:想表示一个包到另一个包的历史发展,则需要使用《trace》关系来表示
包图的例图:
-
图的定义,存储结构是邻接矩阵(无向图,包含带权图)
2015-12-14 18:47:54//头文件 //Edge.h #ifndef EDGE_H #define EDGE_H #include using namespace std;... //边的起始与终点 int start, end; //权重 T weight; Edge(); Edge(int st, int en, T wei); bool operat//头文件 //Edge.h #ifndef EDGE_H #define EDGE_H #include<iostream> using namespace std; template<typename T> class Edge{ public: //边的起始与终点 int start, end; //权重 T weight; Edge(); Edge(int st, int en, T wei); bool operator >(const Edge& str); bool operator <(const Edge& str); }; template<typename T> Edge<T>::Edge() { } template<typename T> Edge<T>::Edge(int st, int en, T wei) { this->start = st; this->end = en; this->weight = wei; } template<typename T> bool Edge<T>::operator<(const Edge& str) { return this->weight < str.weight; } template<typename T> bool Edge<T>::operator>(const Edge& str) { return this->weight > str.weight; } #endif // !EDGE_H //Graph.h #ifndef GRAPH_H #define GRAPH_H /* 该图是无向图且是无权图 */ #include<iostream> #include"Edge.h" using namespace std; template<typename T> class Graph{ private: int vertexNum;//节点数目 int edgeNum;//边的数目 Edge<T> edge; int *Mark;//记录顶点是否被访问过(0表示未被访问过,1表示已被访问过) int **matrix;//用于实现图的邻接矩阵(全部初始化为0,0表示节点之间没有边,1表示节点之间有边) int **WeightMartrix;//该矩阵为带权矩阵 int GType;//图的类型(0:无向图,1:有向图) public: Graph(); Graph(int ver); //对Mark和matrix进行初始化 void Init(); ~Graph(); //返回顶点vertex的第一条边 bool firstEdge(int vertex); //返回与oneEdge有相同始点的下一条边 bool nextEdge(Edge<T>& oneEdge); //设置边(该矩阵为带权矩阵) void setEdge(int start, int end, T weight); //设置边(该矩阵为不带权矩阵) void setEdge(int start, int end); void print(int n); void Print(); }; template<typename T> Graph<T>::Graph() { this->vertexNum = 0; this->edgeNum = 0; this->Mark = NULL; this->matrix = NULL; //默认为无向图 this->GType = 0; } template<typename T> Graph<T>::Graph(int ver) { this->vertexNum = ver; this->Mark = new int[this->vertexNum]; this->matrix = new int*[this->vertexNum]; this->WeightMartrix = new int*[this->vertexNum]; for (int i = 0; i < this->vertexNum; i++) { this->matrix[i] = new int[this->vertexNum]; this->WeightMartrix[i] = new int[this->vertexNum]; } if (this->matrix == NULL || this->Mark == NULL||this->WeightMartrix==NULL) { cout << "空间未成功开辟" << endl; exit(true); } this->Init(); } template<typename T> void Graph<T>::Init() { for (int i = 0; i < this->vertexNum; i++) { this->Mark[i] = 0; for (int j = 0; j < this->vertexNum; j++) { this->matrix[i][j] = 0; this->WeightMartrix[i][j] = 0; } } } template<typename T> Graph<T>::~Graph() { for (int i = 0; i < this->vertexNum; i++) { delete this->matrix[i]; } delete this->Mark; this->matrix = NULL; this->Mark = NULL; } template<typename T> bool Graph<T>::firstEdge(int vertex) { //返回以vertex为起点的第一条边 edge.start = vertex; int i = 0; for (; i < this->vertexNum; i++) { if (this->matrix[vertex-1][i] == 1) break; } if (i >= this->vertexNum) { cout << "该顶点没有与边链接" << endl; return false; } else { edge.end = i + 1; return true; } } template<typename T> bool Graph<T>::nextEdge(Edge<T>& oneEdge) { //返回与oneEdge有相同始点的下一条边 int i = oneEdge.end; for (; i < this->vertexNum; i++) { if (this->matrix[oneEdge.start-1][i] != 0) { break; } } if (i >= this->vertexNum) { cout << "没有找到与该边有相同始点的下一条边" << endl; return false; } edge.start = oneEdge.start; edge.end = i + 1; return true; } template<typename T> void Graph<T>::setEdge(int start, int end, T weight) { if (start >= this->vertexNum || end >= this->vertexNum) { cout << "start/end超出范围" << endl; } else if (this->WeightMartrix[start-1][end-1] != 0) { cout << "该边已存在" << endl; cout << "是否需要重新设置(Y/N)" << endl; char ch; cin >> ch; if (ch == 'Y') { this->WeightMartrix[start-1][end-1] = weight; } } else { this->WeightMartrix[start - 1][end - 1] = weight; } } template<typename T> void Graph<T>::setEdge(int start, int end) { if (start > this->vertexNum || end > this->vertexNum) { cout << "start/end已经超出范围" << endl; } else if (this->matrix[start-1][end-1] != 0) { cout << "该边已存在" << endl; } else { this->matrix[start-1][end-1] = 1; } } template<typename T> void Graph<T>::print(int n) { if (firstEdge(n)) { cout << edge.start << " " << edge.end << endl; } } template<typename T> void Graph<T>::Print() { for (int i = 0; i < this->vertexNum; i++) { for (int j = 0; j < this->vertexNum; j++) { if (this->WeightMartrix[i][j] != 0) { cout << "(" << i + 1 << "," << j + 1 << ") :"<< this->WeightMartrix[i][j]; } } cout << endl; } cout << endl; } #endif // !GRAPH_H //主函数 #include"Graph.h" int main(int argc, char argv[]) { Graph<int>graph(5); graph.setEdge(4, 5); graph.setEdge(3, 2); graph.setEdge(1, 1, 5); graph.print(1); graph.print(3); graph.print(4); graph.Print(); return 0; }
-
详解Arduino Uno开发板的引脚分配图及定义
2018-06-10 17:03:36在本篇文章中,我们将详细介绍Arduino开发板的硬件电路部分,具体来说,就是介绍Arduino Uno开发板的引脚分配图及定义。Arduino Uno微控制器采用的是Atmel的ATmega328。 Arduino Uno开发板的引脚分配图包含14个数字...在本篇文章中,我们将详细介绍Arduino开发板的硬件电路部分,具体来说,就是介绍Arduino Uno开发板的引脚分配图及定义。Arduino Uno微控制器采用的是Atmel的ATmega328。 Arduino Uno开发板的引脚分配图包含14个数字引脚、6个模拟输入、电源插孔、USB连接和ICSP插头。引脚的复用功能提供了更多的不同选项,例如驱动电机、LED、读取传感器等。在这篇文章中,我们将介绍Arduino Uno引脚的功能。
Arduino Uno开发板可以使用三种方式供电:
● 直流电源插孔 -可以使用电源插孔为Arduino开发板供电。电源插孔通常连接到一个适配器。开发板的供电范围可以是5-20V,但制造商建议将其保持在7-12V之间。高于12V时,稳压芯片可能会过热,低于7V可能会供电不足。
● VIN引脚 - 该引脚用于使用外部电源为Arduino Uno开发板供电。电压应控制在上述提到的范围内。
更多内容请参考原文链接:https://www.yiboard.com/thread-831-1-1.html
欢迎扫码关注微信公众号:yi-board
-
模拟简易图书管理定义图书类,包含:书号、书名、价格、作者、出版社等信息
2020-02-24 17:34:46定义图书类,包含:书号、书名、价格、作者、出版社等信息 初始10本书,完成以下功能 1、 显示所有图书信息 2、 根据书名查找图书 3、 根据价格区间查找图书 4、 根据作者查找图书 5、 根据出版社查找图书 6... -
UML-----包图
2019-06-09 23:19:15包图的定义: -用类似于文件夹的符号表示包含模型元素的组合。 包的作用: -1、逻辑上把一个复杂的图模块化 -2、组织源代码 包的图符: 包中的元素: -类、接口、构件、用例、其他包等 -若包被撤销,则...包图是这几个图中比较简单的一种图,接下来简单介绍一下包图。
包图的定义:
-用类似于文件夹的符号表示包含模型元素的组合。
包的作用:
-1、逻辑上把一个复杂的图模块化
-2、组织源代码
包的图符:
包中的元素:
-类、接口、构件、用例、其他包等
-若包被撤销,则其中的元素也被撤销了
包与包之间的关系:
-泛化
-细化
-依赖(常用)-------------如果两个包中的任意两个类之间有依赖关系,那么这两个包之间有依赖关系。
包的常见问题:
-1、一定要避免循环依赖产生
-2、测试时可以以包为测试单位
-3、应该尽量把概念和语义上相接近的元素包含在同一个包中。
-4、对于一个包,找出哪些包内的元素是可以在包外访问的,把这些元素标记为公共的,其他的所有元素都标记成受保护的或者私有的。
-
引路蜂地图API:Gis包定义
2012-05-23 08:15:57Gis包中定义了一些通用的地图对象类: MapDirection 定义路径查询结果,路径查询结果可以由多条路径组成。 MapObject 所有地图对象的基类. MapPoint 地理几何图形点对象. MapRoute 定义... -
引路蜂地图API:Gis.Raster 包定义
2012-05-27 14:00:08该包定义了在线和离线地图对象相关的一些类. Map Type 定义各种地图类型,如Google地图,Google卫星图,Bing 中国地图等。 MapConfiguration 定义地图的一些配置信息,如是否使用缓存,同时启动最大... -
图的定义以及表示
2016-12-05 16:44:51什么是图 表示“多对多”的关系 包含 一组顶点:通常用V(Vertex)表示...抽象数据类型定义 类型名称:图(Graph) 数据对象集:G(V,E)由一个非空的有限顶点集合V和一个有限边集合E组成。 操作集:对于任意图G∈Gra -
引路蜂地图API:开发包中核心类定义
2012-05-22 08:39:57下图为引路蜂地图开发包中关键的几个类定义及其关系图: 上图中显示为绿色的三个类分别用于对不同平台UI,不同地图服务,不同地图图片的支持,引路蜂地图开发包设计时对地图图片和地图服务两部分进行了抽象,其中... -
引路蜂地图API:Drawing包定义
2012-06-02 11:11:32提供Drawing包的的主要原因是部分移动平台自带的二维图形库功能比较弱。比如Java ME 平台上不支持线宽大于1的画笔等等。 Brush 画刷类。 Color 颜色类。 Graphics2D Graphics2D -
引路蜂地图API:Gis.Geometry包定义
2012-05-24 08:42:45该包定义了地图对象中各种地理几何图形. GeoBounds 定义地图对象的边界矩形。 GeoLatLng 点义一个经纬度坐标.以 latitude,longitude 表示。 GeoLatLngBounds 点义一个经纬度为单位的地图对象的... -
引路蜂地图API:Gis.Vector包定义
2012-05-29 13:09:24该包定义了矢量地图所用一些类. SutherlandHodgman 实现 Sutherland-Hodgman剪裁算法. VectorMap 矢量地图类,它是RasterMap的一个子类。矢量地图可以由多个图层组成。 GeoSet 多个地图图层的... -
引路蜂地图API:Gis.Drawing包定义
2012-05-25 08:12:59如前文所述,该包对不同平台UI部分进行了抽象,定了图形系统的接口,在不同平台上使用地图名,只要实现这些接口,就可以在该平台上使用地图API,在发布的地图名包含了对这些接口的缺省实现,不同平台,这些接口的... -
引路蜂地图API:Gis.Service包定义
2012-05-28 11:17:03这个包中定义了地址查询,地理反编码,路径查询,本地查询等地图服务的接口。 DigitalMapServce 各种地图服务(地址查询,路径)的实现。开发人员可以选择使用地图服务的类型,如使用Google 地图或是... -
包图引见以及包图在rational中的常见操作
2013-04-05 01:11:00包图介绍以及包图在rational中的常见操作 包图介绍 1.定义:对模型元素进行分组,并且给分好组的元素提供一个命名空间 2.作用:便于理解复杂的系统,控制系统结构各个部分间的连接;在逻辑上把你的一个复杂的图... -
包图介绍以及包图在rational中的常见操作
2014-05-09 09:47:10包图介绍 1.定义:对模型元素进行分组,并且给分好组的元素提供一个命名空间 2.作用:便于理解复杂的系统,控制系统结构各个部分间的连接;在逻辑上把你的一个复杂的图模块化。描述你需求和设计的概述。 3.... -
引路蜂地图API:Gis.Location包定义
2012-05-30 08:24:29本包定义了GPS接收器一个通用接口,并提供对NMEA 2.0数据的解码方法。在Java ME平台上对JSR179 进行了封装. Coordinates 定义地址经纬度坐标。 Location 定义地址信息,如名称等。 Location... -
在图像处理工具包ImagXpress中如何定义图像显示属性
2013-08-08 15:53:30在图像处理工具包ImagXpress中如何定义图像显示属性,如色彩管理、设置工具栏和工具、设置上下文&工具栏菜单、配置滚动条、鼠标和键等······ 在显示图像时的色彩管理 在ImagXpress中管理颜色,将会用到以下... -
引路蜂地图API:Drawing.Geometry 包定义
2012-06-04 19:32:53基本上是参照Java SE 中相应类来定义实现的。 PathIterator 路径元素枚举类。 IShape Shape接口定义了二维图形的一些基本方法。 AffineTransform 仿射变换类。 Arc 圆弧类。 Area ... -
socket发送和接受tcp信息包格式的定义
2012-05-21 19:08:00socket发送和接受tcp信息包格式的定义 (2011-07-29 15:05:17) 转载▼ 标签: 杂谈 分类: Delphi编程 下面为信息包的格式和内容 数据包格式如下图所示,所包含的内容从左到右... -
图中的一些定义
2018-03-04 14:48:09实例:无向图G=(V, E),V为图的所有顶点集合(非空),E为图的所有边的集合。 【子图(subgraph)和生成子图(spanning subgraph)】 G’=(V’, E’),V’被包含于V,E’被包含于E,G’为G的子图。 另外... -
UML的九种图+包图
2013-01-23 15:05:26外加包图。 (一)、用例图 1、定义:由参与者(Actor)、用例(Use Case)以及它们之间的关系构成的用于描述系统功能的动态视图称为用例图. 2、简要介绍:用例图主要用于为系统的功能需求建模,它... -
引路蜂地图API:Gis.Navigation包定义
2012-05-31 09:02:36本包提供了路口到路口实时导航API,从地图服务器返回的路径信息含有文字和路径的地理坐标信息,类NavigationEngine根据路径和当前坐标实现实时导航。它内部含用三个工作线程: Location Monitor 实时监视当前位置...
-
DHCP 动态主机配置服务(在Linux环境下,配置单网段或跨网段提)
-
MHA 高可用 MySQL 架构与 Altas 读写分离
-
敏捷性能合弄结构(APH)中文版0414.pdf
-
产品结构设计基础.pdf
-
Glasterfs 分布式网络文件系统
-
用C++做WEB开发
-
项目管理工具与方法
-
响应式编程入门与实战(Reactor、WebFlux、R2DBC)
-
orgapachecommons.zip
-
Axure高保真保险行业后台管理原型+微保CRM客户管理.zip
-
项目经理成长之路
-
网友:程序员竟然在地铁上写代码,真能装B!
-
龙芯生态应用开发基础:C语言精要
-
kafka学习梳理
-
北斗授时服务器/北斗对时装置为组态监控系统提供精准时钟保障
-
Vue.js傻瓜手册2(双向绑定-基础语法)
-
用微服务spring cloud架构打造物联网云平台
-
TrafficFlowPrediction-master.rar
-
Git主要命令
-
别就知道吃汤圆!你知道元宵节是用来脱单的吗?