0 0

这段代码是关联还是依赖呢?10

有三个类:

TParser  接收一个XML文件作为输入,解析,输出数据结构 TData 对象
TXML      用于解析XML文件的工具类
TData     用于保存数据的数据结构


------------------------------------------

代码:

class TParser
{
public:
    TData parse(String xmlFileName)
    {
        TData result;

        TXML xml = new TXML;
        xml.load(xmlFileName);
        result.set( xml.readNext("xxx") );

        return result;
    }
};

--------------------------------------------

请问各位,  TParser与TData,是关联还是依赖呢?
            TParser与TXML,  是关联还是依赖呢?






问题补充
抛出异常的爱 写道
这要看你是否还是想部分解析XML
我遇到的项目不需要所以我用了简单的设计
解析一次就把xml&parser扔了。

不过第一次设计方案
data里含有一个xml
parser不存在



是的,TParser::parse被调用一次,就重新构造一个TXML对象,用完扔掉,
而TParser::parse也仅仅是把 TData 对象作为返回值返回,
TParser对象并不会存储 TData 对象和 TXML对象。



问题补充:<div class="quote_title">dicom 写道</div><div class="quote_div">这个是依赖,不是关联。 <br />关联是对象之间的逻辑关系(n:m),依赖是一种实现关系,在代码实现中使用到了该对象(属性,参数,临时变量等、) <br />对象之间的关联关系,必然导致实现中的依赖关系。</div> <br /> <br /> <br />谢谢, <br />能进一步举例说明一下 "关联是对象之间的逻辑关系(n:m)"这句话吗? <br /> <br />如果说是 TData成员变量的形式在 TParser 类出现才是关联,那么我又会认为它是聚合才合适。

问题补充:<div class="quote_title">dicom 写道</div><div class="quote_div">关联是对象建模时的逻辑关系,如学生和课程的关系(学生A选择了5门课程,课程计算机原理有35个学生选修),依赖是设计和实现时代码模块(如类TParser)之间的关系,通常,类A依赖类B,是指实现类A需要用到类B,此例中,为实现TParser,使用到了类TData和类TXML。对象建模时如果对象间有关联,并且设计和实现中需要维护关联关系,则通常会导致类之间的依赖关系。 <br />class Student <br />{ <br />&nbsp;&nbsp; private List&lt;Course&gt; studyCourses; <br />} <br /> <br />class Course <br />{ <br />&nbsp;&nbsp;&nbsp; private List&lt;Student&gt; students; <br />} <br /> <br />这段代码,类student和类course各自维护了他们的关联关系,设计和实现上类student和类course相互依赖,强耦合。 <br /> <br />你也可以设计一个关联类如StudentCouse来维护他们之间的关联关系 <br />class Student { } <br />class Course { } <br />class StudentCourse <br />{ <br />&nbsp;&nbsp;&nbsp; private Dictionary&lt;Student. Course&gt; studentCourses; <br />} <br />从而去除类student和course之间的依赖。但类StudentCourse则和Student和Course有依赖关系。 <br />&nbsp; <br /></div> <br /> <br />你的意思是 只有“领域模型”中才有关联的说法,“设计和实现模型”中一般都用依赖,是不是这个意思呢?
2010年5月20日 14:33

4个答案 按时间排序 按投票排序

0 0

采纳的答案

这个是依赖,不是关联。
关联是对象之间的逻辑关系(n:m),依赖是一种实现关系,在代码实现中使用到了该对象(属性,参数,临时变量等、)
对象之间的关联关系,必然导致实现中的依赖关系。

2010年5月20日 16:03
0 0

关联是对象建模时的逻辑关系,如学生和课程的关系(学生A选择了5门课程,课程计算机原理有35个学生选修),依赖是设计和实现时代码模块(如类TParser)之间的关系,通常,类A依赖类B,是指实现类A需要用到类B,此例中,为实现TParser,使用到了类TData和类TXML。对象建模时如果对象间有关联,并且设计和实现中需要维护关联关系,则通常会导致类之间的依赖关系。
class Student
{
   private List<Course> studyCourses;
}

class Course
{
    private List<Student> students;
}

这段代码,类student和类course各自维护了他们的关联关系,设计和实现上类student和类course相互依赖,强耦合。

你也可以设计一个关联类如StudentCouse来维护他们之间的关联关系
class Student { }
class Course { }
class StudentCourse
{
    private Dictionary<Student. Course> studentCourses;
}
从而去除类student和course之间的依赖。但类StudentCourse则和Student和Course有依赖关系。
 

2010年5月24日 11:31
0 0

更正:对象之间的关联关系,通常会导致实现中的依赖关系。

2010年5月20日 16:09
0 0

这要看你是否还是想部分解析XML
我遇到的项目不需要所以我用了简单的设计
解析一次就把xml&parser扔了。

不过第一次设计方案
data里含有一个xml
parser不存在

2010年5月20日 14:33

相关推荐

    这个是中国短信网的cc代码

    【描述】:“这个是中国短信网的cc代码这个是中国短信网的cc代码这个是中国短信网的cc代码这个是中国短信网的cc代码”这句话重复了四次,虽然...但可以推测这可能是为了强调这段代码的重要性和与短信网服务的紧密关联...

    Annotation的关联关系

    这形成了注解与生成代码之间的关联,如Lombok库就是通过注解处理器简化Java对象的创建。 4. **运行时处理**:某些注解在运行时可以被Java虚拟机(JVM)识别并处理,例如@Component注解在Spring框架中用于标记组件,...

    C 代码 执行与圆段关联的计算,包括 高度、角度、面积、质心、采样和正交.rar

    在给定的压缩包"C 代码 执行与圆段关联的计算,包括 高度、角度、面积、质心、采样和正交.rar"中,我们可以深入探讨多个与计算机科学和数学相关的知识点,尤其是围绕C++和C编程语言进行的几何计算。以下是这些关键...

    易语言模块关联.rar

    "易语言模块关联"指的是在易语言编程环境中,如何通过模块化的方式实现不同代码段的关联和整合,以便于代码的重用和管理。下面将详细阐述易语言模块关联的概念、作用以及如何操作。 一、模块化编程 模块化编程是...

    ibatis实战之一对多关联(源代码)

    一对多关联映射主要依赖于`&lt;resultMap&gt;`、`&lt;collection&gt;`和`&lt;association&gt;`元素。`&lt;resultMap&gt;`定义了对象和数据库记录之间的映射规则,`&lt;collection&gt;`用于表示多的一方,而`&lt;association&gt;`则用于表示一对一的关系...

    一本代码重构的书让代码更简洁

    例如,当发现一段代码在多个地方出现时,可以将其抽象为一个独立的函数或类,从而减少冗余,提高代码的复用性。同时,这种方法也有助于暴露隐藏的业务逻辑,使代码结构更加清晰。 在进行重构时,单元测试是不可或缺...

    Java 的依赖管理工具 : Maven

    Maven作为Java领域广泛使用的依赖管理工具,极大地简化了这一过程。Maven不仅管理依赖,还提供了构建项目的标准化流程,使得代码构建、测试、文档生成等任务变得自动化。 Maven的核心概念之一是“项目对象模型”...

    动态库接口、依赖项查看工具

    这有助于节省磁盘空间,提高代码复用,并方便更新库而无需重新编译应用程序。 “动态库接口、依赖项查看工具”是一种专门用于检查和分析可执行文件(如.exe或.dll)对动态库的依赖关系的软件。这样的工具能够帮助...

    R语言数据挖掘实验报告——美国黑色星期五(BlackFriday)(附代码和实验数据csv文件)聚类 关联规则挖掘

    这个报告将分为以下几个部分:数据预处理、聚类分析和关联规则挖掘,以及结果解释。 首先,数据预处理是任何数据分析项目的基石。在R语言中,我们通常使用如`read.csv`函数来加载CSV文件,例如,这里的实验数据可能...

    java程序代码框架所有代码集合

    这个压缩包文件“java程序代码框架所有代码集合”显然包含了多种Java开发框架的示例代码,这对于初学者来说是一份非常有价值的资源。下面,我们将详细探讨Java框架及其在实际开发中的应用。 首先,Java框架如Spring...

    MyBatis关联映射:一对一、一对多-代码.zip

    在开发过程中,要注意合理设计数据库表结构,避免过度依赖关联查询,因为这可能导致复杂的SQL语句和性能瓶颈。通过合理的缓存策略和优化的SQL语句,可以进一步提升MyBatis应用的性能。 总之,理解和掌握MyBatis的一...

    代码提取工具

    这款工具的核心功能包括代码切片、依赖分析、指针分析、数据流分析等,这些技术都是针对C语言特性设计的,因为C语言由于其低级特性,往往更容易出现错误,如缓冲区溢出、空指针引用等问题。 **1. 代码切片:** 代码...

    Understand代码阅读带注册码

    在软件开发领域,理解和分析代码是日常工作中不可或缺的部分,无论是维护现有的项目,还是学习新的代码库,都离不开有效的代码阅读工具。本文将聚焦于一款名为“Understand”的专业代码阅读软件,探讨其在代码静态...

    4.智慧养老物联网管理系统 源代码.docx

    在这段代码中,`User management system`类使用了C#语言编写,它包含了多个依赖属性(DependencyProperties),这些属性用于控制用户界面的行为和交互。例如: - `AcceptsReturnProperty`:关联了一个布尔值,可能...

    Spring 依赖检查

    2. **依赖**:Bean之间存在的一种关联关系,一个Bean可能依赖于其他Bean或资源才能正常工作。 3. **依赖注入**:Spring通过依赖注入(DI)机制将依赖项注入到Bean中,这样Bean就无需自己去创建或查找依赖项。 #### ...

    VE代码.天空树

    从给定的文本来看,这段信息似乎是某种游戏或者软件系统的内部代码或数据配置的一部分,包含了大量数字、字母组合以及特殊符号,这些元素可能代表了游戏中各种功能、效果、角色属性或者系统参数。为了生成相关知识点...

    redhat6.4-64位系统Oracle安装依赖包

    在Red Hat Enterprise Linux 6.4 64位操作系统中安装Oracle 11g数据库时,需要确保系统中已经正确配置了所有必要的依赖项。Oracle 11g是一款功能强大的企业级数据库管理系统,其安装过程相对复杂,尤其对于64位系统...

    LabVIEW智能游戏源代码

    LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是由...通过深入学习和实践这些源代码,开发者不仅可以提升LabVIEW技能,还能了解游戏开发的一般原理,无论是在专业领域还是个人兴趣上都将有所收获。

    汇编引导代码

    - `bootcode`: 这可能包含具体的引导代码段,是`boot`或`myboot`实际执行的部分。 五、汇编引导的实践 在实际开发中,汇编引导代码经常被用来创建自启动的软盘、USB驱动器或网络启动映像。例如,Linux发行版的GRUB...

Global site tag (gtag.js) - Google Analytics