Smalltalk 在不同版本的Pharo中,如何组织类别和包中的类?
有人能解释一下Pharo中的课程组织是如何在不同版本的Pharo中工作的吗Smalltalk 在不同版本的Pharo中,如何组织类别和包中的类?,smalltalk,pharo,monticello,Smalltalk,Pharo,Monticello,有人能解释一下Pharo中的课程组织是如何在不同版本的Pharo中工作的吗 所有课程都是Smalltalk global的一部分(一直都是,似乎一直都是这样?) 类可以有一个类别,但那只是一种标记?(一直如此,似乎一直如此?但类别有时会以某种方式映射到包?) 在不同版本的Pharo中有不同种类的软件包 代表Monticello软件包的MCPackages 包装信息 R包装(Pharo 1.4) 此外,还有SystemNavigation,它以某种方式帮助导航基于上述某些结构的类和方法。类
- 所有课程都是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是如何关联的呢?或者他们只是生活在一起?也许有人可以加上蒙蒂塞洛标签。我试过了,但我没有权利这么做。