设计模式--UML关系与代码对照

在学习UML的时候,重点掌握UML的九种图和六种关系,以及他们衍生出来的作品。在机房收费系统完成后,通过UML的理论知识的学习之后,实践了一把。用UML对系统进行建模之后,我们需要把UML图转换成具体的代码,用代码去实现我们的模型。每种关系在代码中的表示方法是怎样的,同样我们反过来,看了代码之后,我们能够对应着找到类与类之间的关系。

继承:指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。

代码

       class Bird : Animal
       {
	//成员;
       }

实现:指的是一个class类实现interface接口(可以是多个)的功能。

接口的表示方法

1.直接画棒棒糖形状的。

2.把一个类的形式设置为Interface然后选中这个interface, Format->Stereotype display->Lable

代码

<span style="font-size:24px;">      class Bird :IFlay,IWalk	//接口的多继承;
      {

      }</span>

关联(Association):当一个类知道另一个类时用关联

代码

<span style="font-size:24px;">       class Penguin : Bird
       {
           private Climate climate;    //企鹅继承鸟类,引用到了Climate对象
       }</span>

依赖(Dependency):一个类A使用到了类B,类B的变化会影响到类A。

代码

<span style="font-size:24px;">        abstract class Animal
<span style="white-space:pre">	</span>{
	     public Metabolism(Oxygen oxygen,Water water)
             {
		//Water和Oxygen类作为Animal类的某个方法的参数或返回值;
	     }
	}</span>

组合(Composition):一种强“拥有”关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。

代码

<span style="font-size:24px;">	class Bird
        {
	    private Wing wing;
            public Bird()
            {
               wing =new Wing();     //构造函数,初始化鸟类时,实例化Wing;生命周期相同
            }
	}</span>

聚合(Aggregation):一种弱“拥有”关系,体现了A对象可以包含B对象,但B对象不是A对象的一部分。B可以脱离A单独存在。生命周期不同

代码

<span style="font-size:24px;">       class WideGooseAggregate
       {
         private WideGoose[] arrayWideGoose;	//雁群中有大雁数组;
       }</span>

每一种设计模式,都是用UML图给出,这些模式的UML图,就是类与类关系的各种组合,熟悉了基础,更加有利于后面对代码的理解。看到代码想到相应的UML图,掌握每一种模式的UML图的重点所在,从小入手,各个击破。

时间: 2024-07-31 14:35:17

设计模式--UML关系与代码对照的相关文章

[zt]Singleton和Double-Checked Locking设计模式—UML图及代码实现

Singleton和Double-Checked Locking设计模式,分别指的是单例模式和双重检查锁模式,它们都可以用于确保某个类只有一个对象实例化. 两个模式的区别在于:Singleton模式用在单线程应用程序中,而Double-Checked Locking模式用于多线程模式. 一.Singleton模式 UML图: 代码: [java] view plaincopy package bupt.xujinliang.singletonpattern; /** * * @author ji

设计模式-UML关系基础

UML关系基础 类之间的关系 泛化 类在继承中表现为泛化和实现. 继承关系为is-a的关系,两个对象之间用is-a表示为继承关系. eg,自行车是车,猫是动物. 泛化关系用空心箭头表示 如下图. A继承自B 用空心箭头表示A继承自B 泛化关系表示为继承抽象类. 抽象类可以继承一个具体的类的. 抽象类可以被实体类继承 抽象类可以被其他抽象类继承 实现关系 实现关系用空心箭头表示. 即指向C++中的抽象类(通过纯虚函数实现),java中的接口,表示实现关系. 即,无法直接定义对象的都被成为抽象类.

设计模式奠基石——UML关系转化为代码

1.继承关系(泛化关系) [说明]:继承关系是子类(派生类)继承父类(基类),或者子接口继承父接口的关系.即子类对象"is a" 父类对象,比方鸟是动物. [UML图]: 图解:Animal为父类,Bird类.Fish类.Dog类分别继承了Animal类,它们不仅继承了Animal的公用方法Breath(),同一时候也依据自己的实际须要拓展了相关方法(Fly()方法.Swim()方法.Run()方法). [相应代码]: //Animal类(父类): class Animal { pub

设计模式奠基石——UML转化为代码

1.继承关系(泛化关系) [说明]:继承关系是子类(派生类)继承父类(基类),或者子接口继承父接口的关系.即子类对象"is a" 父类对象,比如鸟是动物. [UML图]: 图解:Animal为父类,Bird类.Fish类.Dog类分别继承了Animal类,它们不仅继承了Animal的公用方法Breath(),同时也根据自己的实际需要拓展了相关方法(Fly()方法.Swim()方法.Run()方法). [对应代码]: //Animal类(父类): class Animal { publi

设计模式中的关系在代码中的实现

我们都学过UNL,其中类图中有6类关系:泛华(继承).实现.关联.组合.聚合.依赖.由于他们之间也存在各种联系,我就将他们分为了4大类:依赖.关联.继承.实现. 整理如图: 从这个图中,我们就可以看出我是如何划分的了:聚合和组合是关联的特殊形式,所以就这样划分了. 我们知道,这6个关系的耦合的耦合度:继承=实现<依赖<关联<聚合<组合. 那么下一步,我们就看看,他们在设计模式的代码中是怎样实现的. 1.依赖关系 依赖关系的定义很绕口,其实说白了就是:一个对象依赖于另一个对象的服务.

UML中类图的四种关系及其代码实现

在uml图中 最复杂的也就是泛化,实现,依赖,关联,这四种关系了,如果弄清了这几种关系那么在理解UML图的时候就会变得轻车熟路了! 如果你对着几种关系一点都不熟悉的话可以看一下uml中的四种关系,这篇博客简单的介绍了一下这几种关系,本文将重点的介绍一下,这几种关系在代码里如何实现的! 泛化关系 我想这个也可能是最简单的关系了,泛化就是特殊到一半的过程,也就是继承的相反的过程,子类继承自父类,而父类是从子类泛化而来! 泛化(generalization)关系是一个类(称为子类.子接口)继承另外的一

UML类图五种关系与代码的对应关系

转: UML类图中的五种关系的耦合强弱比较:依赖<关联<聚合<组合<继承 一.依赖关系: (一)说明 虚线+箭头 可描述为:Uses a 依赖是类的五种关系中耦合最小的一种关系. 因为在生成代码的时候,这两个关系类都不会增加属性. (二)依赖关系图与代码的对应关系 (PS:依赖关系:Animal依赖于Water(动物依赖于水)) [csharp] view plaincopyprint? Public class Animal() { Public Animal(){} } Pub

设计模式之类关系

设计模式从第一次读程杰的大话设计模式和headfirst等相关书籍,然后开始关注相应模式的代码差不多有两年的时间了,从简单的理解到根据某些开发的需要去选择某种自己理解的模式,发下这是一个需要时间积累的过程和对模式理解的过程,对于模式的理解如果是学习面向对象的语言,我的建议还是先整理下类关系,希望下面的总结对园友们有所帮助,当然这些都可以从UML资料里去更加深入的研究. UML里规定了类之间的关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己

【Python】《大话设计模式》Python版代码实现

<大话设计模式>Python版代码实现 上一周把<大话设计模式>看完了,对面向对象技术有了新的理解,对于一个在C下写代码比较多.偶尔会用到一些脚本语言写脚本的人来说,很是开阔眼界.<大话设计模式>的代码使用C#写成的,而在本人接触到的面向对象语言中,只对C++和Python还算了解,为了加深对各个模式的理解,我在网上下载了一个C++版的源代码,并根据自己的理解边读这本书边动手实践C++源代码,同时将其改写成了Python代码,算是一箭三雕吧. 由于这些代码的目的是展示各