首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在实现包图时,使用<<access>>和<<import>>有什么不同?

在实现包图时,使用<<access>>和<<import>>有什么不同?
EN

Stack Overflow用户
提问于 2014-01-03 09:31:17
回答 3查看 3.9K关注 0票数 3

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

导入Java.swing.*;

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

谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-11-04 19:36:53

导入一个包等同于导入它的所有公共元素。因此,导入的可见性可以认为是元素(导入的元素)的可见性。下面是一个C#示例,描述了“访问”和“导入”之间的区别。将代码映射到Java很容易:

代码语言:javascript
复制
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
  }
}
票数 6
EN

Stack Overflow用户

发布于 2014-01-08 17:11:42

你不一定会这么做。

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

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

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

因此,这个问题只能在特定工具和特定语言的上下文中得到回答。

票数 1
EN

Stack Overflow用户

发布于 2014-01-16 17:41:02

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20895038

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档