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

时间:2012-06-21 11:15:41

标签: smalltalk pharo monticello

有人可以解释Pharo中的班级组织如何在不同版本的Pharo中工作吗?

  • 所有类都是Smalltalk全球的一部分(一直以来,似乎都是这样的?)
  • 类可以有一个类别,但那只是一种标签? (一直以来,似乎都是这样吗?但是这些类别有时会以某种方式映射到包?)
  • Pharo的不同版本中有不同类型的包
    • 代表蒙蒂塞洛包裹的MCPackages
    • PackageInfo
    • RPackage(Pharo 1.4)?

此外还有SystemNavigation以某种方式帮助基于上面提到的一些构造来导航类和方法?

2 个答案:

答案 0 :(得分:5)

<强>类

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

班级类别

班级类别 非常像标签。一个类一次只能在一个类别中。最初,Browser使用类类别来组织系统中的类。

创建Monticello时,类类别已重载,以指示 Monticello包中的成员资格MCPackagePackageInfo类已创建以管理此映射。

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

MCPackage是特定于蒙蒂塞洛的PackageInfo包装器,它添加了一些不一定适合更为通用的PackageInfo的协议。

<强>包

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

创建

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

两个包实现将继续存在,直到PackageInfo可以逐步淘汰。

<强> SystemNavigation

弗兰克说,

  

SystemNavigation是一个类,顾名思义,它很容易   查询许多不同的东西:图像中的类,   发送者,实现者,关于加载的包的信息   图像等。

答案 1 :(得分:4)

至少,类是Smalltalk字典中的键。

PackageInfo包含有关一组类和其他包的扩展的信息。

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

SystemNavigation是一个类,顾名思义,允许轻松查询许多不同的东西:图像中的类,发送者,实现者,关于图像中加载的包的信息和等等。