1.UML类图怎么画
UML 类图简介 UML 对很多人来说应该不是一个陌生的概念,这一两年来,UML 被大家越来越多的讨论着。
本来 UML 跟我这个主题似乎并不能扯上多大的关系(它是语言无关的,甚至可以说其本身就是一种语言——用于交流的)。我在此谈到它有两个目的: 1. UML 是针对面向对象软件开发的,而 C++正是这样的一种语言 2. UML 在设计中被越来越多的使用着,而下一篇杂谈准备讨论设计模式,如果不了解 UML,那么无法进行下去 UML,全称:Unified Modeling Language,其目的是为了对软件密集型的制品进行可视化、详述、构造和文档化的图形语言。
UML 是依据许多前人的思想总结出的成果,1997 年被 OMG 通过并成为标准(所以在《设计模式》书中如果你看到与标准不一样的地方,不要奇怪,那本书是 95 年的)。关于 UML 的历史和更详细的描述,可以参考《UML 参考手册》。
UML 主要由一系列视图组成,其中包括静态视图(Static vi ew),用例视图(Use case view)活动视图(Acti vity view)等,不同的图用处自然也不一样,而对开发人员来讲(或者说为我的下一篇来说),更重要的应该是静态视图中的类图(class diagram)和交互视图(Interaction view)中的顺序图(Sequence diagram),请注意 view 和 diagram 的区别。 类图 静态视图说明了对象的结构,其中最常用的就是类图,类图可以帮助我们更直观的了解一个系统的体系结构,有时侯,描述系统快照的对象图(Object diagram)也是很有用的。
在这里,我们主要介绍类图,下面的图就是一个简单的类图: 在类图中,类由矩形框来表示,如上图中,定义了 4 个类,分别为 Base、A、B、C,类之间的关系通过各种线条和其他符号来表示,在上图中,空心的三角表示继承关系,在 UML 的术语中,这种关系被称为泛化(Generalization),所以上面的类用等价代码表示为: class Base{…}; class A:public Base{…}; class B:public Base{…}; class C:public Base{…}; 我们再看下一幅图: 这幅图与上幅几乎没有什么区别,唯一的不同就是 Base 类中增加了成员,一个私有的 integer _x(UML 术语为 property)和一个公有的 fun()的函数(method),是否需要这些类的内部细节 UML 本身并没有限制,完全取决于你自己如何使用, UML 的用处在于帮助你了解系统,所以只要你自己觉得足够清楚,那么够了,不要再复杂了。 接着看第三幅图: 上面图中的箭头表示一种关系,箭头另一边有一个菱形(空心)表示聚合(aggregation),聚合的意义表示 has-a 关系,其等价代码如下: class A{…}; class B{ A* theA;…}; 聚合是一种相对松散的关系,聚合类 B 不需要对被聚合的类 A 负责。
下面的图: 这幅图与上面的唯一区别是菱形为实心的,它代表了一种更为坚固的关系——组合(composition)。组合表示的关系也是 has-a,不过在这里,A 的生命期受 B 控制,通常情况,等价代码如下: class A{…}; class B{A theA;…}; 即 A 会随着 B 的创建而创建,随 B 的消亡而消亡。
下图: 这里 B 与 A 的关系只是一种依赖关系,这种关系表明,如果类 A 被修改,那么类 B 会受到影响,一个简单的例子就是: class A{…}; class B{fun(A params);…}; 常用的关系就是我们上面用的这些,通过这些关系和类表示的类图,我们可以用图形化的方式描述一个系统的设计部分,当你习惯使用 UML 后,你会发现,这往往比你告诉同伴某某类从某某类派生,派生类又和某某类具有什么关系容易的多。 顺序图: UML 中另外一个常用的图形就是交互视图中的顺序图,在以往的过程化语言中,我们通常使用流程图来描述一个函数(系统)是如何工作的,而在面向对象的系统中,这显然是不可行的,而顺序图正是来解决这个问题的。
假设有如下的伪代码: class circle { public: void fillcolor() { // 。 }; void draw() { fillcolor(); }; }; class window { public: void drawcircle() { _circle.draw(); }; private: circle _circle; }; 对于下面的调用: window wnd; wnd.drawcircle(); 对应的顺序图如下: 图中上方的方块表示参与的对象,垂直的虚线表示对象的生命线,方框表示激活,其中箭头表示了一个调用消息(也可以有回送 return),如果是异步的消息,则用半箭头表示,其中 draw 表示了一个自调用(self call) 至此,UML 中最常用的(从开发人员的角度),当然 UML 的内容远远不只这些,这里的介绍只是一些简单的概括,并且 UML 本身也在不断的发展之中,无论怎样,我觉得 UML 会越来越多的深入我们的开发过程中,特别是对下一篇我们要介绍的设计模式而言,类图是主要的描述工具(到那个时候你会体会到 UML 描述的优越)。
如果你看过《设计模式》着本书,你会发现与我上面所描述的有一些细微的不同,不要紧张,《设计模式》是 GOF95 年的作品,那时候 UML 还没有形成,而且,其中也明确那是 OMT 方法(Jim Rumbaugh 在通用电气发表的建模技术——Object Modeling Technique)和 Booch 方法。
2.uml类图关系怎么画
类图画法1、类图的概念 A、显示出类、接口以及它们之间的静态结构和关系 B、用于描述系统的结构化设计2、类图的元素 类、接口、协作、关系,我们只简单介绍一下这四种元素。
同其他的图一样,类图也可以包含注解和限制。类图中也可以包含包和子系统,这两者用来将元素分组。
有时候你也可以将类的实例放到类图中。3、类 A、类是对一组具有相同属性、操作、关系和语义的对象的抽象,它是面向对象系统组织结构的核心,包括名称部分(Name)、属性部分(Attribute)和操作部分(Operation),见下图。
B、类属性的语法为:[可见性] 属性名 [:类型] [=初始值] [{属性字符串}] 可见性:公有(Public)“+”、私有(Private)“-”、受保护(Protected)“#” 类操作的语法为:[可见性] 操作名 [(参数表)] [:返回类型] [{属性字符串}] 可见性:公有(Public)“+”、私有(Private)“-”、受保护(Protected)“#”、包内公有(Package)“~” 参数表:定义方式:“名称:类型”;若存在多个参数,将各个参数用逗号隔开;参数可以具有默认值;属性字符串:在操作的定义中加入一些除了预定义元素之外的信息。4、接口 在没有给出对象的实现和状态的情况下对对象行为的描述。
一个类可以实现一个或多个接口。使用两层矩形框表示,与类图的区别主要是顶端有显示: 也可以用一个空心圆表示: 5、协作 协作是指一些类、接口和其他的元素一起工作提供一些合作的行为,这些行为不是简单地将元素加能得到的。
例如:当你为一个分布式的系统中的事务处理过程建模型时,你不可能只通过一个类来明白事务是怎样进行的,事实上这个过程的执行涉及到一系列的类的协同工作。使用类图来可视化这些类和他们的关系。
6、关系 这篇文章的重点,详见第二部分。二、类之间的几种关系1、泛化(Generalization) A、是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为,描述了一种“is a kind of” 的关系。
例如:老虎是动物的一种,即有老虎的特性也有动物的共性。B、用带空心箭头的实线表示,箭头指向父类,如下图:2、实现(Realization) A、是一种类与接口的关系,表示类是接口所有特征和行为的实现。
B、用带空心箭头的虚线表示,箭头指向接口,如下图:3、关联(Association) A、一般关联 a、关联关系是类与类之间的联结,它使一个类知道另一个类的属性和方法,指明了事物的对象之间的联系,如:老师与学生、丈夫与妻子。关联可以是双向的,也可以是单向的,还有自身关联。
b、用带普通箭头的实心线表示。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头,如下图:B、聚合(Aggregation) a、它是整体与部分(整体 has a 部分)的关系,且部分可以离开整体而单独存在,如车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法上无法区分,必须考察具体的逻辑关系。b、用带空心菱形的实线表示,菱形指向整体,如下图:C、组合(Composition) a、它是整体与部分的关系,但部分不能离开整体而单独存在。
如公司和部门是整体和部分的关系,没有公司就不存在部门。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。
b、用带实心菱形的实线表示,菱形指向整体,如下图:4、依赖(Dependency) A、元素A的变化会影响元素B,那么B和A的关系是依赖关系,B依赖A。要避免双向依赖,一般来说,不应该存在双向依赖。
关联、实现、泛化都是依赖关系。B、用带箭头的虚线表示,箭头指向被依赖元素。
5、总结 各种关系的强弱顺序如下:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖 下面这张UML图,比较形象地展现了各种类图关系:。
3.科研论文上的示意图都怎么画的啊
科研论文中的示意图好多都画的非常生动形象,不少初入门的小菜们望尘莫及。下面根据不同情况,给出以下解决方案:
1、低配版:业余选手+简单阐述(人群:有时间+要求低+画图小白,东拼西凑自成一体)
使用Office系列软件,化腐朽为巧妙。PPT 功能还是非常强大的,自带有各种图形和效果,而且还可以另外安装插件,如ScienceSlides等工具网页链接。如果希望画(二维或三维)图表,Excel也是个不错的选择,线图、饼状图、柱状图自行选择即可。
2、升级版:初级选手+基本阐述(人群:时间充裕+要求高+自学的画图小渣渣,在科研圈混些日子的)
基于专业工具,浅尝基本功能。熟悉Origin、Chem Draw等的使用,了解AI、Photoshop等基本操作。Origin相比Excel有很多提升,画图的种类效果更为丰富。Chem Draw里有很多素材,比如仪器、化学式等,非常适合花一些基础的示意图。AI、Photoshop的使用要看个人功夫了。
3、高手篇:高级选手+炫技虐人(适应人群:时间充裕+要求高+土豪+较多画图,科研圈文艺圈老油条)
所谓的高手,精通于3DMax,AI, Photoshop, CAD等作图软件,十年磨一剑(找专业的公司,花血本,参加培训班系统学习。一般每月都有培训班,学两个月左右吧,比自学要效率高,自行咨询),方能达到看见就能仿出,想到就能画出的境界。
4、必杀技:无论什么级别,秒变高大上,请人代打!!!(适合人群:没时间+要求高+较少画图)
其实,国外的大牛牛主要专注的还是科研,文章示意图还是请外援的,这就是你赶不上他们的原因。大牛组资金充裕,找专业的公司自然高大上。如若预算一般且没时间自学,就找万能的淘宝吧,请大神把你的想法表达出来,相比较自己从零开始花的时间和精力还是很合得来的,还避免了来回请人帮忙的尴尬,尤其是紧急情况。以免鱼龙混杂,就推荐个让大家放心的吧,艺轩设计网页链接自行联系就好了。
读到此处,相信你心中已有答案。
转载请注明出处众文网 » 毕业论文系统设计类图怎么画(UML类图怎么画)