2012-06-21 11 views
6

Czy ktoś może wyjaśnić, w jaki sposób organizacja zajęć w Pharo działa w różnych wersjach Pharo?Jak działa organizacja zajęć w kategoriach i pakietach w różnych wersjach Pharo?

  • Wszystkie klasy są częścią globalnej Smalltalk (zawsze wydają się pozostawać w ten sposób?)
  • Klasy mogą posiadać kategorię, ale to tylko rodzaj tag? (Zawsze wydaje się pozostawać w ten sposób? Ale kategorie są jakoś odwzorowane na opakowaniach czasami?)
  • Istnieją różne rodzaje opakowań w różnych wersjach Pharo
    • MCPackages reprezentujące Monticello Paczki
    • PackageInfo
    • Pakiet RP (Pharo 1.4)?

Ponadto istnieje SystemNavigation który jakoś pomaga nawigacją klasy i metody oparte na niektóre z wyżej wymienionych konstrukcji?

+0

Być może ktoś mógłby dodać znacznik Monticello. Próbowałem, ale nie mam do tego prawa. –

Odpowiedz

5

Klasy

Fakt, że zajęcia są klucze w Smalltalk globalny jest szczegółów wdrażania. Dopóki istnieje jedna globalna przestrzeń nazw dla nazw klas, jest prawdopodobne, że implementacja pozostanie niezmieniona.

Class Kategorie

Do kategorii klasa jest bardzo podobny do tagu. Klasa może być tylko w jednej kategorii na raz. Oryginalnie kategoria klasy była używana przez Browser do organizowania zajęć w systemie.

Kiedy Monticello powstała kategoria klasa była przeciążona również wskazują przynależność pakietu Monticello zajęcia MCPackage i PackageInfo zostały stworzone, aby poradzić sobie z tym mapowanie.

PackageInfo wykonuje wszystkie operacje podnoszenia ciężarów: znajdowanie klas i luźnych metod należących do pakietu.

MCPackage jest Monticello specyficzne opakowującym PackageInfo że dodaje trochę protokół, który nie musi być koniecznie odpowiednie dla bardziej ogólnego PackageInfo.

Pakiety

przeciążania kategorię klasy dla członkostwa pakiet był schludny trik, aby ułatwić przyjęcie Monticello (istniejące narzędzia rozwojowe nie powinny być nauczane Monticello), jednak jest to wciąż trik. Nie wspominając już o tym, że wdrożenie PackageInfo nie było bardzo wydajne.

RPackage został stworzony w celu rozwiązania problemów z wydajnością PackageInfo i może być używany jako część nowej generacji narzędzi programistycznych.

Obie implementacje pakietów będą istnieć do momentu, aż PackageInfo będzie można wycofać.

SystemNavigation

Jak mówi Frank,

SystemNavigation jest klasa, która, jak sama nazwa wskazuje, umożliwia łatwe zapytań z wielu różnych rzeczy: zajęcia w obrazie, nadawców, implementatorów, informacji o pakietach załadowanych w obrazie i tak dalej.

+0

Jaki jest związek między "pakietem Monticello" a MCPackage? Według nazwy założyłem, że są jednym i tym samym. –

+1

Pakiet Monticello to plik z rozszerzeniem '.mcz'. MCPackage to instancja w obrazie reprezentująca ten pakiet. –

+0

Dziękuję, zaktualizowałem moje pytanie odpowiednio. Więc w jaki sposób powiązane są MCPackage i PackageInfo lub MCPackage i RPackage? Czy po prostu żyją obok siebie? –

4

Klasy są, przynajmniej w tej chwili, kluczami w słowniku Smalltalk.

PackageInfo zawiera informacje o grupowaniu klas i rozszerzeniach do innych pakietów.

Pakiet Monticello zawiera jednostkę możliwą do wdrożenia. Zwykle jeden z nich będzie odpowiadał instancji PackageInfo. (Naciśnięcie przycisku "+ Pakiet" w przeglądarce Monticello utworzy na przykład jeden z nich.) Pakiet Monticello może zawierać skrypty przed załadowaniem i po załadowaniu, więc te dwie klasy wykonują oddzielne, jeśli powiązane, funkcje.

SystemNavigation to klasa, która, jak sama nazwa wskazuje, pozwala na łatwe sprawdzanie wielu różnych rzeczy: klas w obrazie, nadawców, implementatorów, informacji o pakietach załadowanych na obraz i tak dalej.

Powiązane problemy