有人可以解释Pharo中的班级组织如何在不同版本的Pharo中工作吗?
此外还有SystemNavigation以某种方式帮助基于上面提到的一些构造来导航类和方法?
答案 0 :(得分:5)
<强>类强>
类是Smalltalk
全局中的键的事实是一个实现细节。只要类名有一个全局命名空间,实现就可能保持不变。
班级类别
班级类别 非常像标签。一个类一次只能在一个类别中。最初,Browser
使用类类别来组织系统中的类。
创建Monticello
时,类类别已重载,以指示 Monticello包中的成员资格MCPackage
和PackageInfo
类已创建以管理此映射。
PackageInfo
完成所有繁重工作:找到属于包的类和松散方法。
MCPackage
是特定于蒙蒂塞洛的PackageInfo
包装器,它添加了一些不一定适合更为通用的PackageInfo
的协议。
<强>包强>
重载包类成员资格的类类别是一个简洁的技巧,可以简化Monticello
的采用(现有的开发工具不需要教授Monticello
),但它仍然是特技即可。更不用说PackageInfo
的实施效率不高。
RPackage
是为了解决PackageInfo
的性能问题,并将其用作下一代开发工具的一部分。
两个包实现将继续存在,直到PackageInfo
可以逐步淘汰。
<强> SystemNavigation 强>
弗兰克说,
SystemNavigation是一个类,顾名思义,它很容易 查询许多不同的东西:图像中的类, 发送者,实现者,关于加载的包的信息 图像等。
答案 1 :(得分:4)
至少,类是Smalltalk
字典中的键。
PackageInfo
包含有关一组类和其他包的扩展的信息。
Monticello软件包包含可部署的代码单元。通常,其中一个将对应于PackageInfo
实例。 (例如,点击蒙蒂塞洛浏览器中的“+包”按钮将创建其中一个。)蒙蒂塞洛包可能包含预加载和后加载脚本,因此这两个类执行单独的(如果相关的)函数。 p>
SystemNavigation
是一个类,顾名思义,允许轻松查询许多不同的东西:图像中的类,发送者,实现者,关于图像中加载的包的信息和等等。