Php 什么';是一个类的UML表示,它创建并返回另一个类而不包含它?

Php 什么';是一个类的UML表示,它创建并返回另一个类而不包含它?,php,mysql,uml,Php,Mysql,Uml,我不知道如何在UML类图中表示这个场景 我的意思的一个例子: 一个典型的Mysql类,它处理DB连接,但将语句构造和执行委托给另一个名为MysqlStatement的类,因此Mysql类有一个名为Mysql::prepare()的方法,该方法返回MysqlStatement类(不包含它),如下所示: class Mysql extends DB_Connection { public function connect($user, $pass, $dbhost, $dbname

我不知道如何在UML类图中表示这个场景

我的意思的一个例子:

一个典型的Mysql类,它处理DB连接,但将语句构造和执行委托给另一个名为MysqlStatement的类,因此Mysql类有一个名为Mysql::prepare()的方法,该方法返回MysqlStatement类(不包含它),如下所示:

    class Mysql extends DB_Connection {

    public function connect($user, $pass, $dbhost, $dbname)
    {
        $this->dbh = mysql_connect($dbhost, $user, $pass);
        // ...
    }

    /**
     * Connects to the DB, then creates and returns the statement object
     * @param string $query
     * @return MysqlStatement
     */
    public function prepare($query)
    {
        if (! $this->dbh) $this->connect();
        return new MysqlStatement($this->dbh, $query);
    }

}

注意,据我所知,没有组合/聚合/关联,因为没有类包含另一个。所以我不知道如何表达这种关系。我需要这样做,以使一切井然有序,并了解系统。

您可以使用单向使用(实例化)关系在UML中表示关系

根据您的工具,图形的绘制可能会略有不同,但这里有一个非常简单的示例,展示了您想要的

有关此类型关系的说明,请参见

作为参考,下面是序列图可能显示的内容(细节明显受限)


听起来您需要的更多的是UML序列图或活动图,而不是严格意义上的类图。在UML中,你可能会有一个单向的使用关系来显示你对你返回的类的引用,序列图会显示调用序列。所以一个类图本身不会表示这种类型的关系?嗯,它会,但它可能不会显示预期的使用关系,除非您在其他地方指定它。序列图将显示用法是如何提供功能的,而UML只是显示这两个类之间存在用法关系。无论如何,必须有一种方法在类图中表示这一点。也许像一些定义的关联类型?或者没有任何连接的箭头?如果序列图反映了这一点,也许,正如你所建议的,我不得不在这种情况下使用它,并在类图中保留两个未连接的类。太好了!你是从我自己的例子中得出的。我感谢你的努力。现在我看得更清楚了。所以我必须使用虚线箭头。序列图肯定有很大帮助!祝你好运,很高兴它帮助了你。还有一件事:你使用了哪种UML建模工具,或者你会推荐哪种?如果可能的话,免费的。我用ArgoUML做的。这不是最好的,但它是免费的,开源的。我喜欢它的功能。我真的没有足够的知识来提供这样的建议,但应该可以帮助你了解外面有什么。RationalRose是一个好的(付费)解决方案,Eclipse有一些功能,甚至Visio…我将尝试ArgoUML。我甚至不知道Eclipse提供了UML建模。我已经安装了它,这是我最常用的IDE。所以我会了解更多。谢谢你的帮助和问候!