下面的umluml 静态方法类结构表示的是哪个设计模式

【设计模式】类之间的关联关系及其在UML中的表现方法
来自:csdn博客
Java类之间的关联关系
UML类图中的关系分为四种:泛化、依赖、关联、实现;关联关系又可以细化为聚合和组合。
一、泛化(Generalization)
泛化是父类和子类之间的关系,子类继承父类的所有结构和行为。在子类中可以增加新的结构和行为,也可以覆写父类的行为。
一般用一个带空心箭头的实线表示泛化关系,UML图如下:
泛化对应Java中继承关系,即子类继承父类中出private修饰外的所有东西(变量、方法等)。示例代码:
public class Animal {
public class Tiger extends Animal {
Tiger继承Animal,因此Tiger与Animal之间是泛化(继承)关系。这个很好理解。
二、依赖(Dependency)
依赖关系是一种使用关系,特定事物的改变有可能会影响到使用该事物的事物,反之不成立。在你想显示一个事物使用另一个事物时使用。
一般用一条指向被依赖事物的虚线表示,UML图如下:
通常情况下,依赖关系体现在某个类的方法使用另一个类作为参数。代码示例:
public class Screwdriver { //螺丝刀,作为人类的工具,是用来被人类使用的
public class Person{
public void screw(Screwdriver src){ //拧螺丝,需使用螺丝刀
Person类的screw()方法在使用时就得传入一个Screwdriver类型的参数,这样Screwdriver的改变就会影响到Person,因此Person与Screwdriver之间就是依赖关系(Person依赖于Screwdriver)。
三、关联(Association)
是一种结构关系,说明一个事物的对象与另一个事物的对象相联系。给定有关联的两个类,可以从一个类的对象得到另一个类的对象。关联有两元关系和多元关系。两元关系是指一种一对一的关系,多元关系是一对多或多对一的关系。两个类之间的简单关联表示了两个同等地位类之间的结构关系。当你想要表示结构化关系时使用关联。(可以想想Hibernate的关联关系)
一般用实线连接有关联的同一个类或不同的两个类。UML图如下:
通常情况下,关联关系是通过类的成员变量来实现的。代码示例:
public class Company { //公司
private E //一个公司雇员,公司与雇员之间就是一种关联关系。
public class Employee{
雇员作为公司的属性,不同于上面的依赖。依赖的话,雇员的改变会影响公司,显然不是。在这里雇员仅仅作为公司的一个属性而存在。因此Employee与Company之间是关联关系。关联关系还可以细分为聚合和组合两种。
3.1 聚合(Aggregation)
聚合是一种特殊的关联。它描述了“has a”关系,表示整体对象拥有部分对象。
关联关系和聚合关系来语法上是没办法区分的,从语义 上才能更好的区分两者的区别。聚合是较强的关联关系,强调的是整体与部分 之间的关系。例如,学校和学生的关系。聚合的整体和部分之间在生命周期上没有什么必然的联系,部分对象可以在整体对象创建之前创建,也可以在整体对象销毁之后销毁。
一般用带一个空心菱形(整体的一端-学校)的实线表示。UML图如下:
与关联关系一样,聚合关系也是通过类的成员变量来实现的。示例代码:
public class Student{
public class School{
private List&Student& //学校与学生是聚合关系
学校是整体,而学生是部分。学校与学生都是可以独立存在的,之间没有什么必然的联系。因此学校与学生就是聚合关系。
3.2 组合(Composition)
组合是聚合的一种形式,它具有更强的拥有关系,强调整体与部分的生命周期是一致的,整体负责部分的生命周期的管理。生命周期一致指的是部分必须在组合创建的同时或者之后创建,在组合销毁之前或者同时销毁,部分的生命周期不会超出组合的生命周期。例如Windows的窗口和窗口上的菜单就是组合关系。如果整体被销毁,部分也必须跟着一起被销毁,如果所有者被复制,部分也必须一起被复制。
一般用带实心菱形(整体的一端)的实线来表示。UML图如下:
与关联关系一样,组合关系也是通过类的成员变量 来实现的。示例代码:
public class Menu{
public class Window{
private List&Menu&
菜单的存在前提是窗口的存在,两者之间存在很强的拥有关系。且窗口对菜单的生命周期负责,只有在窗口创建之后,菜单才能够创建,菜单必须在窗口销毁之前销毁。因此Window与Menu之间是组合关系。
聚合和组合的区别在于:
聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象。
另外有一个差别是组合中的一个对象在同一时刻只能属于一个组合对象,而聚合的一个部分对象可以被多个整体对象聚合,例如一个学生可以在多个学校就读,而一个菜单在同一时刻只能是某个窗口内的对象。
四、实现(Realization)
实现关系指定两个实体之间的一个合约。换言之,一个实体定义一个合约,而另一个实体保证履行该合约。对类来说,就是一个类实现了一个接口。
一般用一条指向接口的虚线表示,UML图如下:
实现对应Java中的实现接口(implements)。示例代码:
public interface Person{
public class Student implements Person{
这个和泛化一样很好理解。
类间关系有很多种,在大的类别上可以分为两种:纵向关系、横向关系。纵向关系就是继承关系,它的概念非常明确,也成为OO的三个重要特征之一,这里不过多的讨论。
横向关系较为微妙,按照UML的建议大体上可以分为四种:
依赖 (Dependency)
关联 (Association)
聚合 (Aggregation)
组合 (Composition)
关于关联,聚合,组合在实现上并没有显著区别,相区别他们只有通过判断关系双方之间的实际关系,如关系强弱、创建与销毁之间有无必要关联等。
它们的强弱关系是没有异议的:依赖 & 关联 & 聚合 & 组合&泛化(继承)
实现方式区别:
(1) 依赖关系:关系对象出现在局部变量或者方法的参数里,或者关系类的静态方法被调用
(2) 关联关系:关系对象出现在实例变量中
(3) 聚合关系:关系对象出现在实例变量中
(4) 合成关系:关系对象出现在实例变量中
(5) Generalization: extends
(6) 实现: implements
本分类共有文章6篇,更多信息详见
& 2012 - 2016 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";
/*爱悠闲底部960*75*/
var cpro_id = "u1888128";设计模式之基础篇UML(类图)
设计模式之基础篇UML(类图)
在博文开始之前,还请大家原谅我的懒惰,这段时间一边忙着找工作,一边忙着几个项目的维护和增加功能,每天上完班回家都很疲惫,导致了博客一直没有更新。
今天面试了一家外企 Garmin 公司,事先也没好好研究算法和数据结构,结果可想而知,8 个题目全是算法和数据结构和设计模式。看到二叉树我都懵了,早就忘记一空了,只有一个有关观察者模式的题目,对于设计模式我经常听过,你要让我说个所以然,我还是浑的。为了一扫心中的阴霾,决定回家好好研究数据结构和算法以及设计模式,那么我就从设计模式学习起。
申明:本文有什么不对的地方还请指出,万分感谢。
设计模式类图
封装,继承,多态是面向对象编程的三大特性,设计模式使得程序更加灵活,容易修改,并且易于复用。记得刚开始接手项目的时候,经常把业务逻辑和界面显示写到一起,经常被老大骂得狗血喷头。那个时候不知道为什么要分开写,写到一起多么省事啊。后来老大给我们分析,随着业务的增大,维护起来将是一场灾难。
随着编程的深入,我发现代码当中随处体现着设计模式的身影,学习设计模式之前,我们先来看看类图,你时常在一些技术书中看到类图的表示,简单的还可以看得懂,有些标记你就会比较混淆,那么一起来加深印象。
接着我们来具体看一看UML的具体表示。
我们看到 “动物”的矩形框,它表示一个类(Class),类图分为三层,第一层表示类的名称;第二层表示类的特性,通常就是字段和属性;第三层是类的操作,通常是方法或行为。注意第二层,三层前面的符号,‘+’表示 public,‘-’表示 private,‘#’表示 protected。
接口有两种表示方式,第一种顶部有 &&显示,第一行是接口名称,第二行是接口方法;另一种是帮帮糖表示法,唐老鸭实现了‘讲人话’的接口。
鸟类继承自动物类,继承关系用的是空心三角形+实现来表示。
企鹅类关联气候类,企鹅需要‘知道’气候的变化,需要‘了解’气候的规律。当一个类‘知道’另一个类的时,它们之间存在‘关联(association)’关系。关联关系用的实线箭头来表示。
大雁与雁群这两个类,大雁是群居动物,每只大雁属于一个雁群,一个雁群有多只大雁,它们之间存在弱的拥有关系。那么它们就满足关联关系(Aggregation)。聚合表示一种弱的‘拥有’关系,体现的是 A 对象可以包含 B 对象,但 B 对象不是 A 对象的一部分。雁群包含大雁,但大雁不是雁群的一部分。聚合关系用空心菱形+实线箭头来表示
翅膀是鸟的一部分,鸟由翅膀、其他躯干合成(组合)而成。合成(Composition)是一种强的‘拥有’关系,体现了部分与整体的关系,它们拥有相同的生命周期。合成关系用实心的菱形+实线箭头来表示,两端还有数字‘1’和数字‘2’,这被称为基数,表明这一端类可以有几个实例,这里表示一只鸟有两只翅膀。如果一个类可能有无数个实例,则用‘n’来表示。当然聚合关系也是可以有基数的。
动物需要依赖氧气和水才能生存,它们之间存在依赖关系。依赖关系用虚线箭头来表示
相信下次你看到类图,能够很快的理解它们之间的关系。
我的热门文章
即使是一小步也想与你分享The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.uml 参考题(带答案版)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
uml 参考题(带答案版)
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩22页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 uml静态模型 的文章

 

随机推荐