【问题标题】:What is the difference between using <<access>> and <<import>> when implementing a package diagram?实现包图时使用<<access>>和<<import>>有什么区别?
【发布时间】:2014-11-04 19:36:53
【问题描述】:

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

导入 Java.swing.*;

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

谢谢

【问题讨论】:

    标签: import uml package diagram


    【解决方案1】:

    导入一个包相当于导入它的所有公共元素。所以,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
      }
    }
    

    【讨论】:

    • 具体答案,并扩展到多种语言。谢谢。
    【解决方案2】:

    不一定。

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

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

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

    所以这个问题真的只能在特定工具和特定语言的上下文中回答。

    【讨论】:

      【解决方案3】:

      根据 Visual Paradigm Uml help,它们非常接近,只有 " 如果可见性是公共的,则关键字 > 显示在虚线箭头附近;否则,关键字 > 显示为表示私密可见性。”

      【讨论】:

      • 实际上,这是相当不同的:访问内部和访问公共接口在耦合方面发生了很大变化。感谢您的参考:)
      猜你喜欢
      • 1970-01-01
      • 2020-07-23
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多