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

有三个类:

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对象。


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

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

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

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

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

class Course
{
private List students;
}

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

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