使用&lt; <access>&gt;之间的区别是什么?和&lt; <import>&gt;实现包图时?</import> </access>

时间:2014-01-03 01:31:17

标签: import uml package diagram

我们在我的一个大学模块中介绍了UML图,我们简要介绍了包图。我理解在包图中,当两个包之间存在连接(或箭头)并且标记为import时,这意味着目标包的内容被添加到源的公共命名空间,而访问将其添加到私有命名空间,当第三个包导入原始源包时,无法重新导出。我的问题是你如何在代码中实际导入和访问?例如,使用Java;

导入Java.swing。*;

据我所知,没有访问关键字,对吧?

由于

3 个答案:

答案 0 :(得分:3)

导入包等同于导入它的所有公共元素。因此,可以将导入的可见性视为元素(导入元素)的可见性。 以下是C#中的一个示例,描述了&#34; access&#34;和&#34;导入&#34;。将代码映射到Java很容易:

namespace Logger
{
  public class FileLogger
  {
     public void LogTimeToFile(string fileName, string time)
     {
       //....
     }
  }
}

namespace ServerTime
{
  public class TimeProvider
  {
     public string GetTime()
     {
       //....
     }
  }
}

namespace ServerTimeLog
{
  public class Logger
  {
    private Logger.FileLogger logger; // Logger is access but not imported
    public  ServerTime.TimeProvider timeProvider; // ServerTime is imported

    public void LogCurrentTime()
    {
       logger.LogTimeToFile("c:\\log.txt", timeProvider.GetTime());
    }
  }
}

namespace TaskLog
{
  ServerTimeLog.Logger serverTimeLogger;

  public void SomeMethod()
  {
      // serverTimeLogger.logger ----> Inaccessible because it was accessed not imported
      // serverTimeLogger.timeProvider ----> Accessible because it was imported
  }
}

答案 1 :(得分:1)

你不一定。

关于将UML构造与特定语言的源构造相关联的问题通常是毫无意义的。 Java不是世界上唯一的编程语言,UML也不擅长记录源代码。

UML处理摘要,而源代码是一种实现,因此具体。为弥合这一差距,您需要一个UML的适配(“配置文件”),它指定每个源构造的表示方式,并且基本上没有任何常用语言的标准化配置文件。

相反,不同的工具供应商选择如何表示支持前向和/或逆向工程的语言的各种源构造。在工具X中,访问和导入构造型对于语言Y可能有也可能没有任何意义; Java包很可能由UML类表示。

因此,问题实际上只能在特定工具和特定语言的背景下得到解答。

答案 2 :(得分:0)

根据Visual Paradigm Uml help,他们非常接近,只有“关键字&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&gt;&gt; ;显示访问&gt;&gt;表示隐私可见性。“