2012-06-21 8 views
6

Kann jemand erklären, wie die Organisation von Klassen in Pharo in verschiedenen Versionen von Pharo funktioniert?Wie funktioniert die Organisation von Klassen in Kategorien und Paketen in verschiedenen Versionen von Pharo?

  • Alle Klassen sind Teil der Smalltalk global (immer gewesen, scheint so zu bleiben?)
  • Klassen kann eine Kategorie haben, aber das ist nur eine Art von Tag? (War schon immer, scheint so zu bleiben? Aber die Kategorien sind irgendwie Pakete abgebildet manchmal?)
  • Es gibt verschiedene Arten von Verpackungen in verschiedenen Versionen von Pharo
    • MCPackages repräsentieren Monticello Pakete
    • Package
    • RPackage (Pharo 1.4)?

Darüber hinaus gibt es SystemNavigation, die irgendwie die Navigation Klassen und Methoden, die helfen, einige der oben erwähnten Konstrukte?

+0

Vielleicht könnte jemand ein Monticello-Tag hinzufügen. Ich habe es versucht, aber ich habe nicht das Recht dazu. –

Antwort

5

Klassen

Die Tatsache, dass Klassen Schlüssel in der Smalltalk global sind, ist eine Implementierung Detail. Solange es einen einzigen globalen Namespace für Klassennamen gibt, ist es wahrscheinlich, dass die Implementierung gleich bleibt.

Klasse Kategorien

Die Klasse Kategorie sehr ähnlich wie ein Tag ist. Eine Klasse kann immer nur in einer Kategorie sein. Ursprünglich wurde die Klassenkategorie von zum Organisieren der Klassen im System verwendet.

Wenn Monticello erstellt wurde, wurde die Klassenkategorie überlastet, um anzuzeigen, auch die Mitgliedschaft in einem Monticello Paket die MCPackage und PackageInfo Klassen erstellt wurden diese Zuordnung zu verwalten.

PackageInfo macht das ganze schwere Heben: Finden Sie die Klassen und lose Methoden, die zu einem Paket gehören.

MCPackage ist eine Monticello-spezifische Wrapper für , die ein Protokoll hinzufügt, das nicht unbedingt für die allgemeinere PackageInfo geeignet war.

Pakete

die Klasse Kategorie für Paket-Mitgliedschaft Überlastung war ein netter Trick, die Annahme von Monticello (bestehende Entwicklungstools müssen nicht Monticello gelehrt werden) zu erleichtern, ist es jedoch noch ein Trick ist,. Ganz zu schweigen von der Tatsache, dass die Implementierung von PackageInfo nicht sehr effizient war.

RPackage wurde erstellt, um die Leistungsprobleme von PackageInfo anzugehen und als Teil der nächsten Generation von Entwicklungstools zu verwenden.

Beide Paket-Implementierungen werden weiterhin bestehen, bis PackageInfo auslaufen kann.

SystemNavigation

Wie Frank sagt,

SystemNavigation ist eine Klasse, die, wie der Name schon vermuten lässt, ermöglicht eine einfache Abfrage von einer Reihe von verschiedenen Dingen: die Klassen in das Bild, Absender, Implementierer, Informationen über Pakete, die in das Image geladen wurden und so weiter.

+0

Was ist die Beziehung zwischen einem "Monticello-Paket" und einem MCPackage? Mit dem Namen nahm ich an, dass sie ein und dasselbe waren. –

+1

Ein Monticello-Paket ist eine Datei mit der Erweiterung '.mcz'. Ein MCPackage ist eine Im-Bild-Instanz, die dieses Paket darstellt. –

+0

Danke, ich habe meine Frage entsprechend aktualisiert. Wie hängen MCPackage und PackageInfo oder MCPackage und RPackage zusammen? Oder leben sie nur Seite an Seite? –

4

Klassen sind, zumindest im Moment, die Schlüssel im Smalltalk Wörterbuch.

PackageInfo enthält Informationen über eine Gruppierung von Klassen und Erweiterungen anderer Pakete.

Ein Monticello-Paket enthält eine implementierbare Code-Einheit. Normalerweise entspricht einer dieser Werte einer PackageInfo Instanz. (Wenn Sie beispielsweise in einem Monticello-Browser auf die Schaltfläche "+ Paket" klicken, wird einer davon erstellt.) Ein Monticello-Paket kann Skripte für das Vor- und Nachladen enthalten, sodass die beiden Klassen separate, wenn auch verwandte Funktionen ausführen.

SystemNavigation ist eine Klasse, die, wie der Name schon sagt, eine einfache Abfrage verschiedener Dinge erlaubt: die Klassen im Abbild, Absender, Implementierer, Informationen über im Bild geladene Pakete und so weiter.