在实现包图时使用 <<access>> 和 <<import>> 有什么区别?

Jac*_*vis 3 import diagram uml package

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

导入 Java.swing.*;

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

谢谢

Ali*_*eza 6

导入一个包相当于导入它的所有公共元素。所以,import的可见性可以认为是元素(imported elements)的可见性。这是 C# 中的一个示例,描述了“访问”和“导入”之间的区别。将代码映射到 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
  }
}
Run Code Online (Sandbox Code Playgroud)