`

设计模式学习笔记一:UML类图

    博客分类:
  • .Net
阅读更多

学习设计模式,UML类图是基础,通过UML类图,能更好地和大家交流,也能很容易就表达出自己的设计想法,它就好比普通话,是一种标准语言。

现在流行的主要工具有两种:Rational Rose 和Microsoft Visio,这两种工具都比较易用,选择哪种工具就看个人的喜好了。本人对Microsoft的软件比较有好感,所以自然Microsoft Visio 2003是我的首选。

矩形框代表一个类(如图-1),类图分为三层,第一层为类的名称,如果是抽象类类名用斜体字表示,如图中动物类所示。第二层是类的特性(通常就是类的字段和属性)。第三层为类的操作(通常就是方法或行为)。注意前面的符号,“+”表示public,“-”表示private,“#”表示protected.


(图-1)

动物类是一抽象类,它是不能被实例化的,而猪类可以被实例化。

接口:

接口有两种表示方法:矩形表示法(如图-2中的飞翔的接口)和棒棒糖表示法(如图-2中唐老鸭类中实现讲人话的接口)。矩形表示法,顶端有<<接口>>或者<<interface>>,第一行:接口名称,第二行:接口方法。棒棒糖表示法,圆圈旁为接口名称,接口方法在实现类中出现,如唐老鸭类中的讲话。


(图-2)

泛化(Generalization)

表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。具体表现:父类父类实例=new 子类();

(图-3)

(图-4)

用空心三角形+实线来表示继承(如图-3)。在静态结构图中,在父类和子类间拖放归纳连接,箭头指向父类,另一段指向子类。关联关系是使用实例变量来实现 

用空心三角形+虚线来表示实现接口(如图-4)。在静态结构图中,右击任意类形状(“类”、“参数化的类”、“实用程序”或“元类”),单击“形状显示选项”,然后在“常规选项”下选择“实现链接”。将类形状上的实现链接的控制手柄(黄色小菱形)粘附到接口、类或其他元素的连接点上。

关联(Association)

对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。关联又分为双向关联、单向关联、自身关联。

双向关联:双向关联是两个类之间的联接。关联总是被假定是双向的;这意味着,两个类彼此知道它们间的联系,除非你限定一些其它类型的关联。如(图-5)Flight 的例子, 显示了在Flight类和Plane类之间的一个标准类型的关联。

 
(
图-5)

一个双向关联用两个类间的实线表示。在线的任一端,你放置一个角色名和多重值。图-5显示Flight与一个特定的Plane相关联,而且Flight类知道这个关联。因为角色名以Plane类表示,所以Plane承担关联中的“assignedPlane”角色。紧接于Plane类后面的多重值描述0...1表示,当一个Flight实体存在时,可以有一个或没有Plane与之关联(也就是,Plane可能还没有被分配)。图-5 也显示Plane知道它与Flight类的关联。在这个关联中,Flight承担“assignedFlights”角色;图-5 的图告诉我们,Plane实体可以不与flight关联(例如,它是一架全新的飞机)或与没有上限的flight(例如,一架已经服役5年的飞机)关联。

由于对那些在关联尾部可能出现的多重值描述感到疑惑,下面列出了一些多重值及它们含义的例子(0..1:0个或1个;1:只能1个;0..*:0个或多个;*:0个或多个;1..*:一个或多个;等等。)

单项关联:在一个单向关联中,两个类是相关的,但是只有一个类知道这种联系的存在。(图-6)显示单向关联的透支财务报告的一个实例。


(图-6)

一个单向的关联,表示为一条带有指向已知类的开放箭头(不关闭的箭头或三角形,用于标志继承)的实线。如同标准关联,单向关联包括一个角色名和一个多重值描述,但是与标准的双向关联不同的时,单向关联只包含已知类的角色名和多重值描述。在(图-6)中的例子中,OverdrawnAccountsReport 知道 BankAccount 类,而且知道 BankAccount 类扮演“overdrawnAccounts”的角色。然而,和标准关联不同,BankAccount 类并不知道它与 OverdrawnAccountsReport 相关联。

依赖(Dependency)

对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。依赖关系具体表现在局部变量,方法的参数,以及对静态方法的调用。比如说动物有几大特征,如新陈代谢,繁殖,有生命。而动物要有生命力,就需要氧气、水及食物,也就是说动物依赖于氧气和水。他们之间是依赖关系,用虚箭头表示。如(图-7)所示。


(图-7)

类图代码:

        abstract class Animal

        {

            public string Metabolism(Oxygen oxygen,Water water)

            {

            }

     }

聚合关系(Aggregation)

聚合关系表示一种弱的拥有关系,即A对象可以拥有B对象,但B对象不是A对象的一部分。聚合关系用空心的菱形加实线箭头来表示。如下图(图-8)所示:


(图-8)

    在逻辑上来说,停车场中有汽车,但汽车并不是停车场的一部分。汽车和停车场之间没有部分和整体之间的关系。

    组合(合成)关系(Composition)

    组合也成为复合和合成关系,是一种强的“拥有”关系,体现了严格的部分与整体的关系,部分和整体的生命周期一样。如下图(图-9)所示,鸟和鸟的翅膀就是组合(合成)关系,他们是部分和整体的关系,并且翅膀和鸟的生命周期相同。合成关系用实心的菱形加实线箭头来表示。合成关系的连线两端还有一个数字,如图(图-9)的数字‘1’和‘2’,这被成为基数。表明这一端的类可以有几个实例,很显然一只鸟只有两个翅膀。如果一个类可以有无数个实例,则就用‘n’表示。关联关系和聚合关系也可以用基数的。


(图
-9

       在严格的组合(合成)关系中,类之间有强依赖关系,在很多情况下,代表整体的对象需要负责保持部分对象的存活。

  • 大小: 8.4 KB
分享到:
评论

相关推荐

    设计模式+UML.rar

    包含以下文件: Java设计模式-图解-附代码.pdf 从Java类库看设计模式.doc 六大UML类图关系.docx 认识UML类图元素_java之UML.doc 设计模式6大原则.doc 设计模式学习笔记.doc 深入浅出设计模式(中文版).pdf

    尚硅谷设计模式源码笔记课件.zip

    本课程针对上述问题,有针对性的进行了升级 (1) 授课方式采用 图解+框架源码分析的方式,让课程生动有趣好理解 (2) 系统全面的讲解了设计模式,包括 设计模式七大原则、UML类图-类的六大关系、23种设计模式及其分类,...

    UML学习资料(内附三本电子书和学习笔记)

    该压缩包文件提供了丰富的UML学习资源,包括两本CHM格式的电子书——"23种经典设计模式UML类图汇总"和"UML图例子",以及可能包含的学习笔记,帮助初学者和经验丰富的开发者深入理解和应用UML。 1. **23种经典设计...

    设计模式学习笔记及其模式特点总结

    设计模式是软件工程中的一种重要思想,它是在特定情境下解决问题的经验总结,是解决常见问题的最佳实践。...绘图1.vsd可能是用于描绘设计模式的UML类图或其他图表,它能直观地展示各对象之间的关系和交互。

    设计模式学笔记

    ### 设计模式学习笔记 #### 一、设计模式概述 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。设计...

    UML和模式应用学习笔记

    在这一过程中,UML(统一建模语言)和设计模式起着至关重要的作用。UML是一种标准的图形化表示法,用于描述面向对象系统的结构和行为。设计模式则是过去经验的总结,它们是解决常见设计问题的标准解决方案。 在面向...

    《设计模式解析》第2版学习笔记

    以上是对《设计模式解析》第2版学习笔记的关键知识点总结,这些内容覆盖了面向对象的基本概念、UML的基础知识以及设计模式的重要模式,如Facade模式和Adapter模式。通过深入理解这些知识点,读者可以更好地应用于...

    设计模式学习笔记(一)--简单工厂模式源码

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要解决对象的创建问题,降低了系统与具体创建对象之间的耦合度。在这个学习笔记中,我们将深入理解简单工厂模式的概念、工作原理以及如何在实际...

    #资源大人分享计划# 设计模式学习笔记.rar

    在这个“#资源大人分享计划# 设计模式学习笔记.rar”压缩包中,我们可以期待找到一系列关于设计模式的详细学习资料,包括定义、类图、代码示例以及各种使用场景,这些都将帮助我们深入理解并掌握设计模式。...

    韩顺平_Java设计模式笔记.docx

    通过以上内容,我们可以看到韩顺平老师的Java设计模式笔记涵盖了设计模式的基础概念、常见面试题解析、设计原则等内容,并通过具体案例来阐述设计模式的实际应用价值,旨在帮助学习者深刻理解并掌握设计模式,从而在...

    软件设计师中级王勇老师课程笔记-11UML

    类图对于理解系统架构和设计模式非常有用。 #### 3. 序列图 序列图用来展示对象间的交互方式以及交互发生的顺序。它有助于开发者理解不同对象如何协同工作以完成特定任务或业务流程。 #### 4. 状态机图 状态机图...

    韩顺平_java设计模式笔记

    Java设计模式是软件开发中的一种最佳实践,它们是为了解决特定场景下的设计问题而发展起来的。...设计模式的学习对于成长为一名合格的软件工程师至关重要,因为它们体现了面向对象编程中的核心思想。

    浪曦设计模式与UML 全套视频资源

    本资源集合,"浪曦设计模式与UML 全套视频资源",旨在为学习者提供一个全面理解和应用这两个工具的平台。 设计模式是解决软件开发中常见问题的经过验证的解决方案模板,它不是具体的代码,而是一种通用的语言,用于...

    《UML for Java Programmers》学习笔记

    ### UML for Java Programmers 学习笔记 #### 第一章 概述 - **类图**:类图是用于描述系统中各个类及其相互之间的关系的重要图形表示方式。类图可以帮助开发人员理解整个系统的基本架构,以及各组成部分是如何...

    UML建模ppt文档学习笔记

    **UML建模技术概述** ...通过学习UML建模,开发者能更好地理解和设计软件系统,提高沟通效率,减少误解和错误,确保项目的成功实施。深入掌握UML的各种图表和概念,对于任何软件工程团队来说都是至关重要的。

    UML学习笔记

    **UML学习笔记** UML(Unified Modeling Language)是一种标准化的通用建模语言,用于软件开发的可视化建模。它是面向对象设计的核心工具,通过图形化的方式表达系统的设计和架构,便于团队之间的沟通和理解。以下...

    Uml和模式应用 配套视频笔记2

    通过阅读《UML和模式应用》的配套视频笔记,我们可以深化对UML的理解,学习如何有效地应用设计模式,同时掌握如何在实际项目中进行需求分析和迭代开发。这些知识对于提升软件开发的专业素养至关重要。

    UML学习笔记.zip

    这个“UML学习笔记”压缩包包含了一系列关于UML的详细资料,涵盖了从基础概念到高级应用的多个方面。通过这些文档,我们可以深入理解UML在软件工程中的作用和使用方法。 1. **第一章_基于面向对象的UML** 这一部分...

Global site tag (gtag.js) - Google Analytics