Classes
The fact that classes are keys in Smalltalk
global is an implementation detail. As long as there is one global namespace for class names, it is likely that the implementation will remain the same.
Class Categories
A class category is very similar to a tag. A class can only be in one category at a time. The class category was originally used by Browser
to organize classes in the system.
When Monticello
was created, the class category was overloaded to also indicate membership in the Monticello package, the classes MCPackage
and PackageInfo
were created to create this mapping.
PackageInfo
does all the hard work: finding classes and free methods related to the package.
MCPackage
is a Monticello-specific wrapper for PackageInfo
, which adds some protocol that is not necessarily suitable for the more general PackageInfo
.
Packages
Overloading the class category for package membership was a neat trick that made Monticello
easier to accept (existing development tools did not need Monticello
to learn), but it is still a trick . Not to mention that the implementation of PackageInfo
was not very efficient.
RPackage
was created to address PackageInfo
performance issues and to be used as part of next-generation development tools.
Both package implementations will continue to exist until PackageInfo
is canceled.
Systemnavigation
As Frank says,
SystemNavigation is a class that, as its name implies, makes it easy to query several different things: classes in the image, senders, developers, information about packages loaded into images, etc.
source share