Smalltalk 在不同版本的Pharo中,如何组织类别和包中的类?

Smalltalk 在不同版本的Pharo中,如何组织类别和包中的类?,smalltalk,pharo,monticello,Smalltalk,Pharo,Monticello,有人能解释一下Pharo中的课程组织是如何在不同版本的Pharo中工作的吗 所有课程都是Smalltalk global的一部分(一直都是,似乎一直都是这样?) 类可以有一个类别,但那只是一种标记?(一直如此,似乎一直如此?但类别有时会以某种方式映射到包?) 在不同版本的Pharo中有不同种类的软件包 代表Monticello软件包的MCPackages 包装信息 R包装(Pharo 1.4) 此外,还有SystemNavigation,它以某种方式帮助导航基于上述某些结构的类和方法。类

有人能解释一下Pharo中的课程组织是如何在不同版本的Pharo中工作的吗

  • 所有课程都是Smalltalk global的一部分(一直都是,似乎一直都是这样?)
  • 类可以有一个类别,但那只是一种标记?(一直如此,似乎一直如此?但类别有时会以某种方式映射到包?)
  • 在不同版本的Pharo中有不同种类的软件包
    • 代表Monticello软件包的MCPackages
    • 包装信息
    • R包装(Pharo 1.4)

此外,还有SystemNavigation,它以某种方式帮助导航基于上述某些结构的类和方法。

类至少目前是
Smalltalk
字典中的键

PackageInfo
包含关于类分组和其他包的扩展的信息

Monticello包包含一个可部署的代码单元。通常,其中一个将对应于
PackageInfo
实例。(例如,点击Monticello浏览器中的“+Package”按钮将创建其中一个。)Monticello包可能包含预加载和后加载脚本,因此这两个类执行单独的功能(如果相关)


SystemNavigation
是一个类,顾名思义,它允许轻松查询许多不同的内容:映像中的类、的发送者、实现者、映像中加载的包的信息等。

类是
Smalltalk
global中的键这一事实是一个实现细节。只要类名只有一个全局名称空间,实现就可能保持不变

类别

类类别非常类似于标记。一个类一次只能属于一个类别。最初,
浏览器使用类类别来组织系统中的类

创建
Monticello
时,类类别被重载,以指示Monticello包中的成员身份创建
MCPackage
PackageInfo
类来管理此映射

PackageInfo
完成所有繁重的工作:查找属于包的类和松散方法

MCPackage
是针对
PackageInfo
的Monticello特定包装,它添加了一些不一定适合更通用的
PackageInfo
的协议

套餐

为包成员身份重载类类别是一个很好的技巧,可以简化采用
Monticello
(现有的开发工具不需要教授
Monticello
),但是,它仍然是一个技巧。更不用说,
PackageInfo
的实现效率不高

创建
RPackage
是为了解决
PackageInfo
的性能问题,并将其作为下一代开发工具的一部分

这两个软件包的实施将继续存在,直到
PackageInfo
可以逐步淘汰

系统导航

正如弗兰克所说

顾名思义,SystemNavigation是一个允许轻松操作的类 查询许多不同的内容:图像中的类, 的发件人、实现者,有关加载到中的包的信息 形象等等


“蒙蒂塞洛包装”和MCPackage之间的关系是什么?根据名称,我假设它们是同一个。Monticello包是一个扩展名为
.mcz
的文件。MCPackage是一个代表该包的映像内实例。谢谢,我相应地更新了我的问题。那么MCPackage和PackageInfo或者MCPackage和rppackage是如何关联的呢?或者他们只是生活在一起?也许有人可以加上蒙蒂塞洛标签。我试过了,但我没有权利这么做。