UML 类与类之间的四大关系的一些图标及代码含义

UML 类与类之间的四大关系的一些图标及代码含义

另一个版本:

  1. 关联:连接模型元素及链接实例,用一条实线来表示;

  2. 依赖:表示一个元素以某种方式依赖于另一个元素,用一条虚线加箭头来表示;

  3. 聚合:表示整体与部分的关系,用一条实线加空心菱形来表示;

  4. 组成:表示整体与部分的有一关系,用一条实线加实心菱形来表示;

  5. 泛化(继承):表示一般与特殊的关系,用一条实线加空心箭头来表示;

  6. 实现:表示类与接口的关系,用一条虚线加空心箭头来表示;


类与类之间存在以下关系:
(1)泛化(Generalization)
(2)关联(Association)
(3)依赖(Dependency)
(4)聚合(Aggregation)

UML图与应用代码例子:
1.泛化(Generalization)
[泛化]
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。
[具体表现]
父类父类实例=new子类()
[UML图](图1.1)

类与类之间的四大关系的一些图标及代码含义" alt="UML 类与类之间的四大关系的一些图标及代码含义"
src="http://s2.sinaimg.cn/middle/7045cb9eta84fbdac9b61&690" width="229"
height="144">


图1.1
Animal类与Tiger类,Dog类的泛化关系

[代码表现]

  1. classAnimal{}
      

  2. classTigerextendsAnimal{}
      

  3. publicclassTest
      

  4. {
      

  5.     publicvoidtest()
      

  6.     
    {   

  7.         
    Animal a=newTiger();
      

  8.     
    }   

  9. }  


2.依赖(Dependency)
[依赖]
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
[具体表现]
依赖关系表现在局部变量,方法的参数,以及对静态方法的调用
[现实例子]
比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作
[UML表现](图1.2)

类与类之间的四大关系的一些图标及代码含义" alt="UML 类与类之间的四大关系的一些图标及代码含义"
src="http://s12.sinaimg.cn/middle/7045cb9eta84fbecf537b&690" width="272"
height="82">


图1.2Person类与Screwdriver类的依赖关系

[代码表现]

  1. publicclassPerson{   

  2.       

  3.     publicvoidscrew(Screwdriver
    screwdriver){   

  4.         
    screwdriver.screw();   

  5.     
    }   

  6. }  


3.关联(Association)
[关联]
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
[具体表现]
关联关系是使用实例变量来实现
[现实例子]
比如客户和订单,每个订单对应特定的客户,每个客户对应一些特定的订单;再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司
[UML图]
(图1.3)
类与类之间的四大关系的一些图标及代码含义" alt="UML 类与类之间的四大关系的一些图标及代码含义"
src="http://s1.sinaimg.cn/middle/7045cb9eta84fbf512d20&690" width="291"
height="57">



图1.3公司和员工的关联关系


[代码表现]

  1. publicclassCompany{
      

  2.     privateEmployee
    employee;   

  3.     publicEmployee
    getEmployee(){   

  4.         returnemployee;
      

  5.     
    }   

  6.     publicvoidsetEmployee(Employee
    employee){   

  7.         this.employee=employee;
      

  8.     
    }   

  9.     //公司运作  

  10.     publicvoidrun(){
      

  11.         
    employee.startWorking();   

  12.     
    }   

  13. }  

(4)聚合(Aggregation)
[聚合]
当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚集关系。聚合是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系。
[具体表现]
与关联关系一样,聚合关系也是通过实例变量来实现这样关系的。关联关系和聚合关系来语法上是没办法区分的,从语义上才能更好的区分两者的区别。
[关联与聚合的区别]
(1)关联关系所涉及的两个对象是处在同一个层次上的。比如人和自行车就是一种关联关系,而不是聚合关系,因为人不是由自行车组成的。
聚合关系涉及的两个对象处于不平等的层次上,一个代表整体,一个代表部分。比如电脑和它的显示器、键盘、主板以及内存就是聚集关系,因为主板是电脑的组成部分。
(2)
对于具有聚集关系(尤其是强聚集关系)的两个对象,整体对象会制约它的组成对象的生命周期。部分类的对象不能单独存在,它的生命周期依赖于整体类的对象的生命周期,当整体消失,部分也就随之消失。比如张三的电脑被偷了,那么电脑的所有组件也不存在了,除非张三事先把一些电脑的组件(比如硬盘和内存)拆了下来。
[UML图](图1.4)
类与类之间的四大关系的一些图标及代码含义" alt="UML 类与类之间的四大关系的一些图标及代码含义"
src="http://s2.sinaimg.cn/middle/7045cb9eta84fbfe1adc1&690" width="298"
height="178">



图1.3电脑和组件的聚合关系

[代码表现]

  1. publicclassComputer{
      

  2.     privateCPU
    cpu;   

  3.     publicCPU
    getCPU(){   

  4.         returncpu;
      

  5.     
    }   

  6.     publicvoidsetCPU(CPU
    cpu){   

  7.         this.cpu=cpu;
      

  8.     
    }   

  9.     //开启电脑  

  10.     publicvoidstart(){
      

  11.         //cpu运作  

  12.         
    cpu.run();   

  13.     
    }   

  14. }

  空心的叫聚合,实心的叫组合;(ozzzzzz(希望敏捷)兄似乎有个笔误^_^)
   
组合的对应关系较聚合要强,组合是关联的两方同生共死,而聚合却不一定;
   
生成代码的时候,聚合可对应指针,而组合应对应对象(普遍而非必然)

1)Class
类与类之间的四大关系的一些图标及代码含义" src="http://blog.csdn.net/images/blog_csdn_net/hideto/Class.bmp">类与类之间的四大关系的一些图标及代码含义"
src="http://blog.csdn.net/images/blog_csdn_net/hideto/class(3).jpg"
width="148" height="82">
public
class MyClass {
   
private String attribute;
   
public int operation() {
   
   ......
   
}
}

2)Interface
类与类之间的四大关系的一些图标及代码含义"
src="http://blog.csdn.net/images/blog_csdn_net/hideto/interface.jpg"
width="89" height="107">
public interface MyInterface {
   
public void operation();
}

3)Package
类与类之间的四大关系的一些图标及代码含义"
src="http://blog.csdn.net/images/blog_csdn_net/hideto/package.jpg" width="136"
height="84">
package com.hideto.rose;

4)Dependency
类与类之间的四大关系的一些图标及代码含义" name="image_operate_30631310960390421"
src="http://blog.csdn.net/images/blog_csdn_net/hideto/dependency(1).jpg"
width="340" height="65">
public class MyClass1 {
    public
void operation(MyClass2 x) {
      
......
    }
}

5)Association
类与类之间的四大关系的一些图标及代码含义"
name="image_operate_6291310960390805" src="http://blog.csdn.net/images/blog_csdn_net/hideto/association(1).jpg"
width="254" height="82">
public class MyClass1 {
   
private MyClass2 x;
    public void operation()
{
       ......
   
}
}

6)Aggregation
类与类之间的四大关系的一些图标及代码含义" src="http://blog.csdn.net/images/blog_csdn_net/hideto/aggregation.jpg"
width="253" height="81">
public class MyClass1 {
   
private MyClass2 x;
    public void operation()
{
       ......
   
}
}

7)Composition
类与类之间的四大关系的一些图标及代码含义" src="http://blog.csdn.net/images/blog_csdn_net/hideto/composition.jpg"
width="253" height="81">
类与类之间的四大关系的一些图标及代码含义" >public
class MyClass1 {
    private MyClass2 x;
   
public void operation() {
      
......
    }
}

8)Generalization
类与类之间的四大关系的一些图标及代码含义"
src="http://blog.csdn.net/images/blog_csdn_net/hideto/generalization.jpg"
width="319" height="80">
public class MyClass1 {
   
......
}
public class MyClass2 extends MyClass1 {
   
......
}

9)Realization
类与类之间的四大关系的一些图标及代码含义"
src="http://blog.csdn.net/images/blog_csdn_net/hideto/realization.jpg"
width="241" height="61">
public Interface MyInterface {
   
......
}
public class MyClass implements MyInterface
{
    ......

UML 类与类之间的四大关系的一些图标及代码含义,布布扣,bubuko.com

时间: 2024-10-09 22:44:40

UML 类与类之间的四大关系的一些图标及代码含义的相关文章

Hibernate基本配置:类与表之间的映射关系

只介绍用Annotation的方式进行映射关系的配置. 1. 如果表名与对象名不一致,则要对表名进行配置. 使用@Table 2. 如果字段名与属性名不一致. 使用@Column 3. 不需要persistentence的字段 使用@Persistentence 4.映射日期与时间类型,指定时间精度 使用@Temporal 默认会直接记录日期与时分秒,可以进行定制. @Temporal(TemporalType.?),?可以取3个值,DTAE(只记录日期),TIME(记录时分秒),TIMESTA

UML图类,接口之间的关系

UML图类之间的关系(来自大话设计模式中的一张图,代表了类,接口之间的各种关系) 原文地址:https://www.cnblogs.com/linlf03/p/9735917.html

类型转换,类与类之间的转换,继承关系,继承与静态变量,子类父类重名,多继承,虚基类

 常量的基本类型转换,例如:int num(10.8),这种方式是隐式转换. 通过函数的构造函数实现转换. 类类转换函数,当构造函数不能将类型转换成基本类型时.所以就有了类类转换函数,通过这种方式. 案例: #include <iostream> class fushu { public: //通过加explicit的这种方式避免隐式转换,避免引发歧义 explicit fushu(int num) { x = num; y = num; } void print() { std::cou

UML建模之 - 类图&amp;时序图

简介 简介 UML是面向对象开发中一种通用的图形化建模语言 UML建模技术就是用模型元素来组建整个系统的模型,模型元素包括系统中的类.类和类之间的关联.类的实例相互配合实现系统的动态行为等 UML建模工具 Rational Rose : 是直接从UML发展而诞生的设计工具,常用建模工具 Power Designer : 是对数据库建模而发展起来的一种数据库建模工具 Microsoft Visio :是一种画图工具,Visio 2010才开始引入UML建模,不是很专业 Star UML : 开源轻

看懂UML(统一建模语言)类图

这里不会将UML的各种元素都提到,我只想讲讲类图中各个类之间的关系: 能看懂类图中各个类之间的线条.箭头代表什么意思后,也就足够应对 日常的工作和交流: 同时,我们应该能将类图所表达的含义和最终的代码对应起来: 有了这些知识,看后面章节的设计模式结构图就没有什么问题了: 本章所有图形使用Enterprise Architect 9.2来画,所有示例详见根目录下的design_patterns.EAP 从一个示例开始 请看以下这个类图,类之间的关系是我们需要关注的: 车的类图结构为<<abstr

java 类与类之间的关系 及uml图

类与接口之间的关系 : 继承 类与类之间的关系 :继承关系  包含关系 类与对象之间的关系 : 实例 UML 类图中类与类之间的关系: 泛化关系(generalization) 关联关系(association) 聚合关系(aggregation) 合成关系 (compostion) 依赖关系 (dependency) 1.泛化(Generalization)[泛化]表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系.一般化的关系是从子类指向父类的,与继承或实现的方法相反.

uml描述类与类之间的关系

工作时培训的时候公司同事讲过UML,当时没怎么听,后在在看相关技术书籍的时候,发现用到还不少,于是恶补了些.UML体系庞杂,非十天半月可以掌握,但是作为简单的工具使用,去看清楚系统的内在逻辑还是可以速成的.(非设计系统),股票市场是一场拼图游戏,而UML也可以作为拼图工具去参与面向对象体系软件设计的! 废话不多说,进入正题. 先介绍几款画UML的工具,三大知名VISIO,RationalRose,PowerDesign不多说,个人喜欢用开源的,一是免费,二是通常体积较小,运行起来比较快.我用的是

UML类图画法及类之间几种关系

文章目录如下: 一.类图画法 二.类之间的几种关系:泛化(Generalization).实现(Realization).关联(Association)(又分一般关联.聚合(Aggregation).组合(Composition)).依赖(Dependency) 一.类图画法 1.  类图的概念 A.显示出类.接口以及它们之间的静态结构和关系 B.用于描述系统的结构化设计 2.  类图的元素 类.接口.协作.关系,我们只简单介绍一下这四种元素. 同其他的图一样,类图也可以包含注解和限制. 类图中

浅谈UML类图中类之间的5种关系

什么是UML类图? 类图显示了一组类.接口.协作以及他们之间的关系.在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统.类加上他们之间的关系就构成了类图,类图中还可以包含接口.包等元素,也可以包括对象.链等实例. 类与类之间的关系 类与类之间的关系可以根据关系的强度依次分为以下五种: 依赖关系(Dependency)---关联关系(Association)---聚合(Aggregation)---组合(Composition)---泛化(Generalizatio