`
ocean
  • 浏览: 49051 次
  • 来自: ...
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

类与类关系的UML图与代码表现(再讨论)

阅读更多

原文请看:http://www.iteye.com/topic/37302?page=1

我想对依赖(Dependency)和关联(Association)做一下补充。不正之处敬请指出。

[依赖]
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
[具体表现]
依赖关系表现在局部变量,方法的参数,以及对静态方法的调用 //除了这三种外我想还应该包括一些实例变量来实现,就像关联关系和聚合关系从语法上很难区分一样。依赖和关联在某些方面也很难从语法上去区分。
[现实例子]
比如说你要去拧螺丝,你是不是要借助(也就是依赖)螺丝刀(Screwdriver)来帮助你完成拧螺丝(screw)的工作

[代码表现]

java 代码
  1. public class Person {   
  2.     private ScrewService screwService;   
  3.   
  4.     public ScrewService getScrewService() {   
  5.         return screwService;   
  6.     }   
  7.   
  8.     public void setScrewService(ScrewService screwService) {   
  9.         this.screwService = screwService;   
  10.     }   
  11.        
  12.     public void screw(){   
  13.         screwService.screw();   
  14.     }   
  15.        
  16. }  
我不知道假如是以上代码情况seagar想把它们归入那种关联。以我的想法就是它们仍然属于依赖关系,因为现在我就是用spring来把ScrewServiceImpl注入screwService的。而且它也符合当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务。这个定义。所以我想以上情况把它归为依赖关系会比较合适一点。
欢迎大家讨论。
分享到:
评论
6 楼 JAVA_ED 2007-04-01  
Allen 写道
人类的逻辑这种东西常常是不存在非常固定的格式的……

例如:
public class Person {
    
    private Eye eye;    
   
    public Eye getEye() {    
        return eye;    
    }    
   
    public void setEye(Eye eye) {    
        this.eye = eye;    
    }    
        
    public void see(){    
        this.eye.see();    
    }    
        
}   

Person和Eye之间应该算是[依赖]、[关联]还是[聚合]呢

比较倾向聚合 语义上就是整体与部分关系 
5 楼 qinysong 2007-04-01  
fangang 写道
聚会表达的是一种整体与局部的关系,与关联不同的是,它只能是一个单向的关系,所以我们只能说Eye聚集于Person。在聚集关系中,代表整体的只能是1,但代表局部的可以是1,也可以是多

我的看法和fangang基本一致,只是这一段,我觉得聚合应该是关联的一种特例,是表示整体/部分关系的关联。

ocean 写道
这样说行不行呢。假如同时有几种关系存在,就取关系最高的的那种。例如Dependency和Association同时存在的话就只说它们是Association的关系。就像我已经has你的,当然可以use你了。哈哈哈。我觉得这个准则可以说的通。不知各位还有没有其它意见。

Dependency比Association更概括一些,在这种情况下如果用Association就较准确,较能表达更多的语义
4 楼 ocean 2007-04-01  
这样说行不行呢。假如同时有几种关系存在,就取关系最高的的那种。例如Dependency和Association同时存在的话就只说它们是Association的关系。就像我已经has你的,当然可以use你了。哈哈哈。我觉得这个准则可以说的通。不知各位还有没有其它意见。
3 楼 fangang 2007-02-01  
依赖是最普遍的一种类与类之间的关系,类A不论以什么方法,只要能感知类B,就称类A依赖类B。依赖可以视为一种耦合,所以判定是否类A依赖类B最好的方法就是类B的存在或改变是否会影响类A。如果Eye不存在则Person将不能使用,当然Person依赖Eye。
关联表示的是类对另一个类的导航,就类A如果是类B的一个属性,则称类B与类A关联。Eye是Person的一个属性,Person当然与Eye关联,也称从Person导航到Eye,如果Eye也有Person属性,则称双向关联。
聚会表达的是一种整体与局部的关系,与关联不同的是,它只能是一个单向的关系,所以我们只能说Eye聚集于Person。在聚集关系中,代表整体的只能是1,但代表局部的可以是1,也可以是多
2 楼 Allen 2007-02-01  
人类的逻辑这种东西常常是不存在非常固定的格式的……

例如:
public class Person {
    
    private Eye eye;    
   
    public Eye getEye() {    
        return eye;    
    }    
   
    public void setEye(Eye eye) {    
        this.eye = eye;    
    }    
        
    public void see(){    
        this.eye.see();    
    }    
        
}   

Person和Eye之间应该算是[依赖]、[关联]还是[聚合]呢
1 楼 seagar 2006-12-26  
你举的例子有道理~~
很高兴能跟你一起交流~~

相关推荐

    (经典解释)类与类关系的UML图与代码表现[参照].pdf

    本篇文章将深入探讨四种主要的类关系:泛化、关联、依赖和聚合,以及它们在UML图和实际代码中的表现。 1. **泛化 (Generalization)**:泛化关系表示类之间的继承或接口实现。它展现了类之间的层次结构,子类继承或...

    uml简单小说明

    在面向对象设计中,UML(统一建模语言)是一种重要的工具,用于可视化和描述系统中的各种元素,包括类与类之间的关系。本说明将详细解释四种主要的类关系:泛化、关联、依赖和聚合。 1. 泛化(Generalization) 泛化...

    UML的快速入门——简单实例

    关联关系(Association)描述了类之间的连接,比如"企鹅"类与"气候"类之间的关系。企鹅的生活与气候密切相关,所以在代码中,企鹅类可能有一个私有的"天气"属性,表示这种关联。 最后,我们讨论接口(Interface)在...

    matlab开发-UML完整的支出

    在MATLAB环境中进行软件开发时,UML(统一建模语言)是一种常用的设计工具,它可以帮助我们清晰地表达系统架构、交互以及类和对象的关系。本资料“matlab开发-UML完整的支出”聚焦于如何利用MATLAB的Real-Time ...

    uml specification

    - **模型与图**:UML中的模型是对现实世界或软件系统的抽象表示,而图则是模型的可视化表现形式,由不同的图元素组成。 - **图元素**:包括类、接口、对象、用例、活动、关系等,它们共同构建了UML的图形结构。 -...

    UML 23种设计模式 , 成为设计高手必看、

    在UML中,可以使用类图来表示工厂类和产品类的关系。 2. **抽象工厂模式**(Abstract Factory Pattern):提供一个创建一系列相关或相互依赖对象的接口,无需指定它们的具体类。类图中会有多个工厂类和多个产品类的...

    uml课件及书籍

    5. **图(Diagram)**:UML中的主要视觉表现形式,如类图、序列图、用例图、状态图等,每种图都有其特定的用途和表示方式。 **UML的主要图表类型:** 1. **用例图(Use Case Diagram)**:描绘了系统外部参与者与...

    uml制图 工具 模型 对象图

    其中,对象图是UML中的一个重要组成部分,它是类图的实例化表现,展示了系统运行时刻的对象状态和它们之间的关系。对象图主要用于理解和描述系统的动态行为。 首先,理解对象与类的关系至关重要。类是抽象的概念,...

    Java设计——对象、UML与过程

    在Java设计中,UML可以帮助我们清晰地表达类与类之间的关系,如继承、关联、聚合和组合等。类图是UML中最为常见的图表类型,展示了类的结构,包括类名、属性和方法。序列图和协作图则用于描绘对象之间的交互顺序,而...

    标准建模语言UML教程

    1. **模型与图**: UML中的模型是对现实世界或设计概念的一种抽象表示,而图则是模型的可视化表现形式。UML支持多种类型的图,如用例图、类图、序列图、协作图、状态图、活动图、组件图和部署图等。 2. **元素**: ...

    Rose,UML Design Tool

    在设计阶段,类图和对象图可以清晰地表示类的结构和关系,序列图和协作图则展示了对象间的交互。 5. **代码生成与更新**:Rose的一大优势是它可以双向工程化,即能自动生成代码,也能根据代码更新模型。在C#项目中...

    UML - Unified Modeling Language

    组件图展示了软件系统的物理组件及其之间的依赖关系,这些组件可以是源代码文件、库文件或是可执行文件等。 **5. 部署图(Deployment Diagram)** 部署图展示了系统在实际运行时的硬件节点以及各硬件节点上的软件...

    湖南科技职院UML建模技术教案

    例如,通过设计一个图书馆管理系统,学生可以绘制用例图来识别用户需求,再用类图来表示系统内部的类结构,接着通过序列图描述图书借阅过程,最后用状态图表示图书的状态变化。 教学方法可能包括理论讲解、实例解析...

    面向对象设计之3_基于UML的图书管理系统的分析与设计说明.doc

    UML包含多种图表,如用例图描述系统功能和用户交互,类图展示类的结构和关系,对象图显示特定时刻的对象状态,状态图描绘对象随时间变化的行为,活动图关注系统的流程或工作流,构件图和配置图则用于系统组件的表示...

    UML面向对象分析与设计教程课后习题答案胡荷芬-高斐填空题部分.docx

    在本文中,我们将逐章节讨论UML面向对象分析与设计教程课后习题答案,并对每个章节中的重要知识点进行总结和解释。 第一章 * 统一建模语言(UML)是绘制软件蓝图的标准工具语言,可以对软件系统产品进行说明、视觉...

    北航软件学院面向对象分析与设计课后作业

    在这样的文档中,学生可能讨论了如何识别问题域中的对象,定义它们的属性和行为,以及如何组织这些对象以形成类和对象的关系。此外,他们可能还阐述了类与类之间的关系,如继承、聚合和组合,并探讨了接口、抽象类等...

    SDD第二次讨论1

    类图是UML(统一建模语言)的一部分,用于可视化和理解系统的静态结构,特别是类、接口、对象之间的关系。在"SDP第二次讨论1"的会议中,团队聚焦于类图的具体实现细节和它们之间的相互关系。 类图主要由以下几个...

    UML类图关系大全

    在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设计模式内的类关系来说显得太抽象了,因为在设计阶段关联关系必须被映射为对象引用或指针。对象引用本身就是有向的,更...

Global site tag (gtag.js) - Google Analytics