Rozdział 31.
Smalltalk/X
Rick McMullin
W tym rozdziale:
Co to jest Smalltalk/X
Instalacja Smalltalk/X
Uruchamianie systemu Smalltalk/X
Środowisko Smalltalk/X
Przeglądarki
Edycja w przeglądarce obiektów
Inspector
Debugger
W tym rozdziale opiszemy aplikację Smalltalk/X, która jest kompletną implementacją środowiska programistycznego Smalltalk-80. Jeśli używałeś kiedyś jakiejś innej wersji języka Smalltalk, będziesz zaskoczony tym, jak wiele może Ci zaoferować jego darmowa wersja. Po przeczytaniu tego rozdziału będziesz orientował się w możliwościach Smalltalk/X, będziesz również potrafił pracować z interfejsem udostępnianym przez to środowisko.
Co to jest Smalltalk/X
Zanim powiemy, co to jest Smalltalk/X, warto może opisać w kilku zdaniach sam język Smalltalk. Smalltalk to obiektowy język programowania, powstały we wczesnych latach siedemdziesiątych. Nie był to pierwszy język obiektowy, ale był pierwszym, który stał się powszechnie używany w przemyśle.
Język ten jest popularny dopiero od kilku lat. Wykładany jest na wielu uczelniach technicznych, używany w niejednej firmie ze względu na łatwość i szybkość projektowania programów.
Smalltalk/X opracowany został przez Clausa Gittingera. Pierwsza wersja tego systemu ujrzała światło dzienne w roku 1988. Dziś jest to kompletne środowisko programistyczne, zawierające takie, narzędzia jak przeglądarki klas i potężny debugger. Bardzo przydatna bywa możliwość przetłumaczenia programu w języku Smalltalk na C. Dzięki temu można osiągnąć większą szybkość działania programów.
Instalacja Smalltalk/X
Smalltalk/X nie jest instalowany automatycznie przez program instalacyjny, ale znajduje się na dołączonym do tej książki dysku CD-ROM. Jego pliki znajdziesz w katalogu devel/smalltalkx. Aby go zainstalować, zaloguj się jako root, a następnie:
utwórz katalog /usr/local/lib/smalltalk;
skopiuj do utworzonego katalogu następujące pliki:
bitmaps.tar.Z
doc.tar.Z
exe.tar.Z
goodies.tar.Z
source.tar.Z
rozpakuj skopiowane pliki wydając kolejno polecenia:
uncompress *.Z
tar -xf bitmaps.tar
tar -xf doc.tar
tar -xf exe.tar
tar -xf goodies.tar
tar -xf source.tar
usuń niepotrzebne już pliki .tar:
rm *.tar
Smalltalk/X powinien być gotowy do uruchomienia. Jeśli nie masz prawa zapisu do katalogu /usr/local/lib, możesz zainstalować go gdzieś indziej, ale wówczas musisz odpowiednio zmodyfikować wartość zmiennej SMALLTALK_LIBDIR.
Uruchamianie systemu Smalltalk/X
Aby uruchomić system Smalltalk/X (ST/X), wystarczy w oknie Xterm wydać polecenie
smalltalk
Po uruchomieniu, ST/X ładuje plik konfiguracyjny, nazywany plikiem obrazu. Jeśli go nie znajdzie, na podstawie danych zapisanych w pliku smalltalk.rc ustawia domyślny wygląd środowiska. Domyślnie ładowany jest plik o nazwie st.img, zawierający informacje o stanie środowiska w chwili, gdy zostało ono ostatnio zamknięte. Można również użyć pliku o innej nazwie, podając ją po opcji -i:
smalltalk -i nazwapliku.img
Środowisko Smalltalk/X
Po uruchomieniu ST/X pojawiają się dwa okna (nazywane również widokami): Transcript oraz Launcher. Rysunek 31.1 przedstawia okno Transcript.
Rysunek 31.1. Okno Transcript |
|
Okno Transcript pełni funkcję konsoli, do której kierowane są informacje systemowe. Okno Launcher przedstawione jest na rysunku 31.2.
Rysunek 31.2. Okno Launcher |
|
Okno Launcher zawiera menu pozwalające na szybkie uruchomienie wszystkich dostępnych w systemie ST/X narzędzi. Elementy tego menu opisane są skrótowo w tabeli 31.1.
Tabela 31.1. Elementy menu Launcher
Element |
Opis |
Browsers |
Uruchamia podmenu dające dostęp do różnego rodzaju przeglądarek obiektów. |
Workspace |
Wywołuje widok obszaru roboczego. |
FileBrowser |
Pozwala manipulować plikami i katalogami. |
cd. na następnej stronie
Tabela 31.1. cd. Elementy menu Launcher
Element |
Opis |
Projects |
Pozwala na utworzenie nowego lub załadowanie istniejącego projektu. |
Utilities |
Pozwala na uruchomienie narzędzi programistycznych. |
Goodies |
Udostępnia narzędzia nie związane bezpośrednio z programowaniem. |
Games & Demos |
Pozwala na uruchomienie kilku przykładowych programów i gier. |
Info & Help |
Zawiera opis środowiska i języka programowania. |
Snapshot |
Powoduje utworzenie pliku konfiguracyjnego i zapisanie go pod podaną przez użytkownika nazwą. |
Exit |
Kończy pracę środowiska ST/X. |
Poniżej opiszemy nieco dokładniej poszczególne elementy menu Launcher.
Przeglądarki (Browsers)
Podmenu Browsers daje użytkownikowi dostęp do przeglądarek i edytorów, pozwalających poruszać się w hierarchii klas, oglądać kod źródłowy metod itd. W podmenu tym dostępne są następujące opcje:
przeglądarka systemowa (System Browser)
przeglądarka hierarchii klas (Class Hierarchy Browser)
klasy implementujące daną metodę (Implementors)
klasy wysyłające dany komunikat (Senders)
przeglądarka wprowadzonych zmian (Changes Browser)
przeglądarka katalogów (Directory Browser)
Każdą z tych opcji omówimy dokładniej.
Przeglądarka systemowa (System Browser)
Okno przeglądarki systemowej przedstawione jest na rysunku 31.3.
Zawiera ono pięć podwidoków:
Lista kategorii klas
Lista klas
Rysunek 31.3. Okno System Browser |
|
Lista kategorii metod
Lista metod
Przeglądarka kodu źródłowego
W systemie ST/X klasy podzielone są na kategorie. Kategoria to po prostu jeden z atrybutów każdej klasy, dzięki którym można łączyć je w logiczne grupy, co znacznie ułatwia zarządzanie nimi. Aby wybrać kategorię klas, wybierz jej nazwę z listy znajdującej się z lewej strony górnej części okna. Spowoduje to wyświetlenie w podwidoku listy klas wszystkich klas należących do danej kategorii. Możesz również wybrać wszystkie kategorie (*all*), wtedy w podwidoku listy klas wyświetlone zostaną wszystkie klasy uporządkowane alfabetycznie, lub widok hierarchiczny (*hierarchy*), co spowoduje wyświetlenie klas w formie drzewa obrazującego dziedziczenie.
Po wybraniu klasy z listy klas, w następnym podwidoku wyświetlone zostaną wszystkie kategorie metod należących do tej klasy. Podobnie jak w przypadku kategorii klas, kategorie metod używane są do logicznego grupowania metod w zależności od spełnianych przez nie funkcji. Po wybraniu kategorii, w następnej części okna wyświetlone zostaną wszystkie metody należące do danej kategorii. W końcu po wybraniu którejś z metod, w dolnej części okna wyświetlony zostanie jej kod źródłowy.
W każdym z podwidoków dostępne jest również menu podręczne wywoływane środkowym klawiszem myszki. Menu dostępne w podwidoku kategorii klas przedstawione jest na rysunku 31.4 i opisane w tabeli 31.2.
Rysunek 31.4. Menu dostępne w podwidoku listy kategorii klas |
|
Tabela 31.2. Elementy menu podręcznego dostępnego w podwidoku listy kategorii klas
Element |
Opis |
FileOut |
Zapisuje wszystkie klasy bieżącej kategorii do jednego pliku źródłowego o nazwie postaci kategoriaKlas.st. |
fileOut each |
Zapisuje wszystkie klasy, umieszczając każdą z nich w osobnym pliku o nazwie nazwaKlasy.st. |
PrintOut |
Drukuje kod źródłowy klasy, włącznie z implementacją metod. |
printOut protocol |
Drukuje specyfikację protokołu klasy, z pominięciem implementacji metod. |
Spawn |
Uruchamia na aktualnie wybranej kategorii przeglądarkę klas bez listy kategorii. |
spawn class |
Uruchamia pełną przeglądarkę klas, która pozwala edytować cały kod klasy w jednym oknie. |
update |
Ponownie odczytuje wszystkie dane o klasach. |
find class |
Uruchamia okno dialogowe, w którym można wpisać nazwę klasy, która ma być przeglądana. |
rename |
Pozwala zmienić nazwę kategorii klas. |
remove |
Usuwa kategorię wraz ze wszystkimi należącymi do niej klasami. |
Menu podręczne dostępne w podwidoku listy klas pokazane jest na rysunku 31.5 i opisane w tabeli 31.3.
Rysunek 31.5.
Menu podręczne dostępne |
|
Tabela 31.3. Elementy menu podręcznego dostępnego w podwidoku listy klas
Element |
Opis |
FileOut |
Zapisuje kod źródłowy aktualnie wybranej klasy do pliku o nazwie postaci nazwaKlasy.st. |
printOut |
Drukuje pełny kod źródłowy klasy. |
printOut protocol |
Drukuje specyfikację protokołu klasy (pomijając implementację metod). |
Tabela 31.3. cd. Elementy menu podręcznego dostępnego w podwidoku listy klas
Element |
Opis |
spawn hierarchy |
Uruchamia przeglądarkę klas z wybraną klasą i wszystkimi klasami potomnymi. |
hierarchy |
Pokazuje hierarchię aktualnie wybranej klasy w podwidoku przeglądarki kodu źródłowego. |
definition |
Pokazuje definicję klasy, pozwalając również na jej edycję. |
comment |
Wyświetla komentarz klasy, pozwalając również go edytować. |
class instvars |
Wyświetla zmienne wystąpienia danej klasy, pozwalając na ich edycję. |
variable search |
Pozwala szukać odniesień do zmiennych oraz metod odnoszących się do danej zmiennej. |
new class |
Pozwala utworzyć nową klasę, przy użyciu wybranej klasy jako szablonu. |
new subclass |
Tworzy klasę potomną w stosunku do aktualnie wybranej klasy. |
Rename |
Zmienia nazwę wybranej klasy. |
Remove |
Usuwa klasę i wszystkie klasy potomne. |
Menu podręczne dostępne w podwidoku listy kategorii metod pokazane jest na rysunku 31.6 i opisane w tabeli 31.4.
Rysunek 31.6.
Menu podręczne dostępne |
|
Tabela 31.4. Elementy menu podręcznego dostępnego w podwidoku listy kategorii metod
Element |
Opis |
fileOut |
Zapisuje kod źródłowy aktualnie wybranej kategorii metod do pliku o nazwie postaci nazwaKlasy-kategoria.st. |
printOut |
Drukuje kod źródłowy aktualnie wybranej kategorii metod. |
spawn |
Uruchamia przeglądarkę kategorii metod na wybranej kategorii |
spawn category |
Uruchamia przeglądarkę na wszystkich metodach danej kategorii we wszystkich klasach. |
find method here |
Wyszukuje implementację wybranego selektora. |
cd. na następnej stronie
Tabela 31.4. cd. Elementy menu podręcznego dostępnego w podwidoku listy kategorii metod
Element |
Opis |
find method |
Wyszukuje w hierarchii klas pierwszą klasę implementującą selektor wybrany w oknie dialogowym. |
new cathegory |
Pozwala dodać do listy nową kategorię metod. |
copy category |
Pozwala skopiować wszystkie metody wchodzące w skład kategorii klas do aktualnie wybranej klasy. |
create access methods |
Tworzy metody dostępu do zmiennych wystąpienia. |
rename |
Pozwala zmienić nazwę wybranej kategorii metod. |
remove |
Usuwa wybraną kategorię metod wraz ze wszystkimi metodami wchodzącymi w jej skład. |
Menu dostępne w podwidoku listy metod pokazane jest na rysunku 31.7 i opisane w tabeli 31.5.
Rysunek 31.7.
Menu dostępne w podwidoku |
|
Tabela 31.5. Elementy menu dostępnego w podwidoku listy metod
Element |
Opis |
fileOut |
Zapisuje kod źródłowy aktualnie wybranej metody do pliku o nazwie postaci nazwaKlasy-selektor.st. |
printOut |
Drukuje kod źródłowy aktualnie wybranej metody. |
spawn |
Uruchamia przeglądarkę pozwalającą edytować wybraną metodę. |
senders |
Uruchamia przeglądarkę pozwalającą przeglądać metody wysyłające określony komunikat. |
local sender |
Podobnie jak senders, ale tylko w obrębie danej klasy i klas potomnych. |
implementors |
Uruchamia przeglądarkę pozwalającą przeglądać wszystkie metody |
globals |
Uruchamia przeglądarkę pozwalającą przeglądać wszystkie metody korzystające z danego obiektu globalnego i metody wysyłające odpowiadający mu komunikat. |
Tabela 31.5. cd. Elementy menu dostępnego w podwidoku listy metod
Element |
Opis |
new method |
Tworzy nową metodę, używając aktualnie wyświetlanego kodu |
change category |
Pozwala zmienić kategorię wybranej metody. |
remove |
Pozwala usunąć metodę. |
Kiedy dodajesz lub usuwasz zmienne wystąpienia wchodzące w skład klas systemowych i zapisujesz wprowadzone zmiany, system tworzy nową klasę zamiast modyfikować istniejącą. Oryginalna postać klasy nadal istnieje, dzięki czemu istniejące wystąpienia mają nadal prawidłową klasę, ale sama klasa nie jest dostępna poprzez nazwę. Po zapisaniu zmian nie można edytować pierwotnej postaci klasy.
|
Modyfikowanie klas systemowych nie jest zalecane. Bezpieczniej jest skopiować klasę i modyfikować utworzoną kopię. Klasy systemowe wykorzystywane są przez środowisko ST/X i ich zmiana może spowodować jego niepoprawne funkcjonowanie. |
W najniższej części okna wyświetlany jest kod źródłowy, który można edytować. Menu dostępne po naciśnięciu środkowego klawisza myszy zawiera polecenia typowe dla edytora tekstów. Są one opisane w podrozdziale „Edycja kodu za pomocą przeglądarki”.
Przeglądarka hierarchii klas (Class Hierarchy Browser)
Po uruchomieniu przeglądarki hierarchii klas wyświetlane jest okno dialogowe pozwalające wybrać nazwę klasy, od której należy rozpocząć przeglądanie. Okno przeglądarki jest podobne do okna System Browser, tyle że nie pojawia się podwidok listy kategorii klas. Dostępne w poszczególnych podwidokach menu podręczne są również takie same.
Klasy implementujące daną metodę (Implementors)
Po wybraniu opcji Implementors wyświetlane jest okienko dialogowe, w którym należy podać nazwę selektora. Selektor to nazwa typu operacji, która jest wywoływana przez komunikat u adresata tego komunikatu.
Jeśli podany zostanie prawidłowy selektor, w okienku Implementors wyświetlone zostaną implementacje metody określonej przez wybrany selektor we wszystkich klasach. Przykładowa zawartość takiego okienka pokazana jest na rysunku 31.8.
Menu podręczne dostępne w górnej części tego okienka nie różni się niczym od menu dostępnego w podwidoku listy metod przeglądarki System Browser, opisanego w podrozdziale „System Browser”.
Rysunek 31.8.
Okienko |
|
Klasy wysyłające dany komunikat (Senders)
Po wybraniu opcji Senders wyświetlane jest okienko dialogowe, w którym należy podać nazwę selektora.
Jeśli podany zostanie prawidłowy selektor, w okienku Senders wyświetlone zostaną implementacje metody wysyłającej wybrany komunikat. Przykładowa zawartość takiego okienka przedstawiona jest na rysunku 31.9.
Rysunek 31.9. Okienko Senders |
|
Menu podręczne dostępne w górnej części tego okienka nie różni się niczym od menu dostępnego w podwidoku listy metod przeglądarki System Browser, opisanego w podrozdziale „System Browser”.
Przeglądarka wprowadzonych zmian
(Changes Browser)
Za każdym razem, kiedy dokonujesz jakichś zmian w hierarchii klas lub w kodzie źródłowym metody, ST/X zapisuje informacje o nich w specjalnym pliku. Okno Changes Browser pozwala na przeglądanie i modyfikowanie zawartości tego pliku. Dostępne są w nim dwa podwidoki: lista zmian w porządku chronologicznym i treść zmian. Przykładowa zawartość takiego okna pokazana jest na rysunku 31.10.
Rysunek 31.10. Okienko Changes Browser |
|
Aby obejrzeć treść zmiany, należy wybrać ją z listy. Zostanie ona przedstawiona w dolnej części okna. Menu podręczne dostępne w obszarze listy zmian opisane jest w tabeli 31.6.
Tabela 31.6. Elementy menu dostępnego w widoku listy zmian
Element |
Opis |
apply change |
Uaktywnia wybraną zmianę. |
apply to end |
Uaktywnia zmiany od wybranej do końca listy. |
apply all changes |
Uaktywnia wszystkie zmiany zapisane w pliku. |
Delete |
Usuwa wybraną zmianę z listy. |
delete to end |
Usuwa wybraną zmianę i wszystkie następne. |
delete changes for |
Usuwa wszystkie zmiany dotyczące tej samej klasy. |
delete all changes |
Usuwa wszystkie zmiany. |
Update |
Ponownie odczytuje plik zmian. |
Compress |
Zmniejsza rozmiar pliku zmian, usuwając wielokrotne zmiany tej samej klasy. |
Version |
Porównuje kod źródłowy metody z bieżącą wersją, wyświetlając informacje o różnicach w oknie |
make a change patch |
Dołącza zmianę na koniec pliku poprawek |
cd. na następnej stronie
Tabela 31.6. cd. Elementy menu dostępnego w widoku listy zmian
Element |
Opis |
update sourcefile from change |
Funkcja nie zaimplementowana. |
Writeback |
Zapisuje listę zmian z powrotem do pliku |
Przeglądarka wprowadzonych zmian jest szczególnie przydatna w momencie, gdy system okaże się niestabilny po wprowadzeniu jakichś nie do końca przemyślanych zmian - można wówczas wrócić do poprzedniego stanu. Aby panować nad rozmiarem pliku zmian, dobrze jest co jakiś czas go kompresować. Spowoduje to usunięcie informacji o zmianach wprowadzonych dawno, pozostawiając jednak dane o najświeższych modyfikacjach.
Przeglądarka katalogów (Directory Browser)
Po wybraniu opcji Directory Browser wyświetlane jest okno zawierające pięć podwidoków. W górnej części okna wyświetlany jest katalog bieżący i wszystkie jego podkatalogi oraz pliki w nim zapisane. Po wybraniu katalogu jego zawartość jest wyświetlana w podwidoku znajdującym się na prawo od niego. Po wybraniu pliku w dolnej części okna wyświetlana jest jego zawartość. Menu podręczne dostępne w podwidokach katalogów zawiera tylko dwa polecenia: up - które powoduje przejście do katalogu nadrzędnego, i goto directory - pozwalające na przejście do wybranego katalogu. Menu podręczne dostępne w dolnej części okna jest takie samo, jak we wszystkich okienkach służących do edycji tekstów i zostało omówione w podrozdziale „Edycja za pomocą przeglądarki”. Typowy wygląd okienka Directory Browser przedstawiony jest na rysunku 31.11.
Rysunek 31.11. Okienko Directory Browser |
|
Workspace (obszar roboczy)
Wybranie opcji Workspace powoduje wyświetlenie okienka zawierającego obszar roboczy. Obszar roboczy to miejsce, z którego można skompilować kod napisany w języku Smalltalk. Jest on zwykle używany do testowania programów przed włączeniem ich do bibliotek.
File Browser (przeglądarka plików)
Okno File Browser pozwala na poruszanie się w systemie plików i manipulowanie nimi. Typowy wygląd tego okna przedstawiony jest na rysunku 31.12.
Rysunek 31.12. Przeglądarka plików |
|
Okno przeglądarki plików składa się z czterech podwidoków, opisanych w tabeli 31.7.
Tabela 31.7. Podwidoki okna FileBrowser
Podwidok |
Opis |
ścieżka |
Wyświetla nazwę bieżącego katalogu. |
typ plików |
Pozwala na podanie wzorca nazwy plików, które mają być wyświetlane. |
lista plików |
Zawiera nazwy plików i podkatalogów bieżącego katalogu. |
zawartość |
Wyświetla zawartość wybranego pliku. |
Jeśli chcesz obejrzeć zawartość pliku, kliknij dwukrotnie na jego nazwie. Podobnie jeśli chcesz zmienić katalog bieżący, kliknij dwukrotnie nazwę wybranego katalogu. Nazwy katalogów są wyświetlane bez względu na wybrany typ plików.
Domyślnym wzorcem nazwy plików jest gwiazdka (*), powodująca wyświetlanie wszystkich plików. Wzorzec ten można zmodyfikować przenosząc kursor do pola definiującego typ plików, wprowadzając odpowiednie symbole i wciskając klawisz Enter lub wybierając z menu podręcznego pozycję accept.
Podobnie jak w innych omówionych przeglądarkach, do każdego z podwidoków przypisane jest menu podręczne. W podwidoku ścieżki dostępne jest menu pokazane na rysunku 31.13.
Rysunek 31.13. Menu dostępne w podwidoku ścieżki |
|
Funkcje dostępne w tym menu opisane są w tabeli 31.8.
Tabela 31.8. Elementy menu dostępnego w podwidoku ścieżki
Element |
Opis |
copy path |
Kopiuje bieżącą ścieżkę do bufora. |
change directory |
Otwiera okno dialogowe pozwalające wprowadzić nazwę katalogu, do którego chcesz przejść. |
change to home dir |
Powoduje przejście do katalogu domowego. |
Menu dostępne w podwidoku listy plików pokazane jest na rysunku 31.14 i opisane w tabeli 31.9.
Rysunek 31.14. Menu dostępne w podwidoku listy plików |
|
Tabela 31.9. Elementy menu dostępnego w podwidoku listy plików
Element |
Opis |
Spawn |
Uruchamia kolejną przeglądarkę plików w bieżącym katalogu lub katalogu wybranym z listy plików. |
get contents |
Wyświetla zawartość aktualnie wybranego pliku. |
show info |
Wyświetla informacje o typie, rozmiarze i atrybutach wybranego pliku. |
show full info |
Wyświetla bardziej szczegółowe informacje o pliku, na przykład dane o czasie ostatniej modyfikacji, ostatniego otwarcia pliku itd. |
FileIn |
Ładuje wybrany plik do systemu, odczytując i przetwarzając wszystkie zapisane w nim instrukcje. |
Tabela 31.9. cd. Elementy menu dostępnego w podwidoku listy plików
Element |
Opis |
Update |
Odczytuje ponownie zawartość katalogu, aktualizując listę plików. |
execute UNIX command |
Pozwala na wykonanie dowolnego polecenia systemu UNIX. |
Remove |
Usuwa wybrane pliki lub katalogi. |
Rename |
Pozwala zmienić nazwę wybranego pliku. |
display long list |
Wyświetla informacje o plikach w podwidoku listy plików. Po wybraniu tej opcji w menu podręcznym wyświetlana jest opcja display short list, pozwalająca wrócić do poprzedniego stanu. |
show all files |
Powoduje wyświetlanie wszystkich plików, włącznie z plikami ukrytymi. Po wybraniu tej opcji w menu podręcznym wyświetlana jest opcja hide hidden files, pozwalająca wrócić do poprzedniego stanu. |
create directory |
Tworzy nowy katalog. |
create file |
Tworzy nowy plik. |
Menu podręczne wyświetlane w podwidoku zawartości plików jest takie samo, jak we wszystkich okienkach służących do edycji tekstów i zostało omówione w podrozdziale „Edycja za pomocą przeglądarki”.
Projekty (Projects)
Opcja Projects menu Launcher pozwala utworzyć nowy projekt lub otworzyć projekt utworzony wcześniej. Po wybraniu funkcji new project automatycznie tworzony jest nowy projekt, a na ekranie wyświetlany jest obiekt nowego projektu. Funkcja select object powoduje wyświetlenie okna dialogowego pozwalającego wybrać jeden z utworzonych wcześniej projektów. Po wybraniu któregoś z projektów jest on ładowany do środowiska.
Narzędzia (Utilities)
Opcja Utilities udostępnia 13 narzędzi, które mogą być przydatne przy programowaniu w środowisku ST/X. Tabela 31.10 zawiera krótkie opisy tych narzędzi.
Tabela 31.10. Opcja Utilities
Narzędzie |
Opis |
Transcript |
Otwiera okienko Transcript. |
Window tree |
Wyświetla drzewo reprezentujące strukturę hierarchii okien aktywnych lub będących w stanie oczekiwania w chwili wydania tego polecenia. |
cd. na następnej stronie
Tabela 31.10. cd. Opcja Utilities
Narzędzie |
Opis |
Class tree |
Wyświetla drzewo reprezentujące strukturę hierarchii klas wchodzących w skład systemu. |
Event monitor |
Wyświetla okienko pozwalające na monitorowanie wszystkich zdarzeń. |
Process monitor |
Wyświetla okienko zawierające informacje o wszystkich aktywnych i czekających procesach. Informacja jest |
Memory monitor |
Wyświetla graf zawierający informacje o aktualnym zużyciu pamięci. Informacja jest uaktualniana przy zmianach zużycia pamięci. |
collect Garbage |
Uruchamia algorytm Generation Scavenge (wymiatanie), który wyszukuje obiekty krótkoterminowe i usuwa je. Jeśli obiekt przetrwa dość długo, zostaje skopiowany w oddzielny obszar pamięci, skąd może być usunięty na żądanie użytkownika. |
collect Garbage & compress |
Ta opcja ma takie samo znaczenie, jak opcja collect Garbage, z tym że oprócz usuwania obiektów stosuje również kompresję, co pozwala na odzyskanie dodatkowego miejsca. |
fullscreen hardcopy |
Wykonuje zrzut ekranu, pozwalając następnie wybrać nazwę pliku, w którym zostanie zapisany obraz w formacie .tiff. |
screen area hardcopy |
Podobnie jak fullscreen hardcopy, z tym że pozwala wybrać fragment ekranu. |
view hardcopy |
Podobnie jak fullscreen hardcopy, ale tylko w odniesieniu do konkretnego widoku. |
ScreenSaver |
Pozwala wybrać jeden spośród trzech dostępnych w systemie ST/X wygaszaczy ekranu. |
Goodies
Wybranie opcji Goodies menu Launcher powoduje otwarcie podmenu, umożliwiającego dostęp do sześciu programów narzędziowych mogących przydać się w różnych sytuacjach, nie tylko podczas pracy z systemem Smalltalk/X. Programy te zostały opisane w tabeli 31.11
Tabela 31.11. Opcja Goodies
Program |
Opis |
Clock |
Wyświetla prostokątny, analogowy zegar, dający możliwość wyłączania i włączania sekundnika. |
Round Clock |
Podobnie jak Clock, ale zegar jest okrągły i pozostaje widoczny kiedy jest zminimalizowany. |
Tabela 31.11. cd. Opcja Goodies
Program |
Opis |
Directory View |
Wyświetla pliki i katalogi w postaci piktogramów. Teczka to odpowiednik katalogu, natomiast dokument symbolizuje plik. |
Mail Tool |
Narzędzie pozwalające na dostęp do poczty elektronicznej. |
News Tool |
Składnica nowości, informacji i dokumentów. |
Draw Tool |
Proste w obsłudze narzędzie służące do rysowania diagramów, wykresów, obrazków itp. |
Gry i programy demonstracyjne
(Games & Demos)
Po wybraniu opcji Games & Demos wyświetlane jest podmenu (pokazane na rysunku 31.15), pozwalające na dostęp do przykładowych aplikacji i gier.
Rysunek 31.15. Menu dostępne po wybraniu opcji Games & Demos |
|
Edycja za pomocą przeglądarki
Wszystkie widoki, w których wyświetlany jest tekst, pozwalają na użycie podstawowych funkcji edycyjnych dostępnych za pomocą menu podręcznego. Funkcje te zebrane zostały w tabeli 31.12
Tabela 31.12. Funkcje edycyjne
Funkcja |
Opis |
again |
Powtarza ostatnią operację edycyjną. |
copy |
Kopiuje wybrany tekst. |
Cut |
Wycina wybrany tekst z pliku. |
paste |
Wkleja tekst, który został wcześniej skopiowany lub wycięty w miejsce wskazywane przez kursor. |
accept |
Po zakończeniu edycji należy użyć tej opcji do zapisania wprowadzonych zmian - w przeciwnym przypadku zmiany nie zostaną zapisane. |
doIt |
Powoduje przetworzenie zaznaczonego tekstu. |
printIt |
Wyświetla reprezentację wyniku przetworzenia tekstu określonego przez aktualną pozycję kursora. |
inspectIt |
Wywołuje okno Inspector na wyniku opracowanego wyrażenia. |
search… |
Pozwala na wyszukiwanie określonego tekstu. |
goto… |
Pozwala przejść do określonej pozycji w pliku. |
font… |
Pozwala zmienić czcionkę używaną do wyświetlania zawartości pliku. |
indent… |
Pozwala zmodyfikować wcięcia. |
save as… |
Pozwala zapisać plik pod dowolną nazwą. |
Drukuje zawartość pliku. |
Aby zaznaczyć (podświetlić) tekst, należy wcisnąć lewy przycisk myszy nad pierwszym znakiem wybranego tekstu, a następnie przeciągnąć wskaźnik myszy na koniec tekstu i zwolnić przycisk. Po ponownym wciśnięciu lewego przycisku zaznaczenie jest usuwane i można wybrać inny fragment tekstu.
Do przewijania wyświetlanego tekstu służą paski przewijania z lewej strony widoku. Po kliknięciu powyżej lub poniżej znacznika w obszarze paska przewijania, tekst przewijany jest jedną stronę do przodu lub do tyłu. Jeśli w tym samym czasie wciśnięty jest klawisz Shift, tekst przewijany jest od razu do pozycji wskaźnika w polu paska przewijania. Taka możliwość jest wykorzystywana głównie do szybkiego przemieszczania się w obrębie większych plików.
Okno Inspector
Inspector pozwala przyjrzeć się bliżej wybranemu obiektowi. Okno to składa się z dwóch podwidoków - w jednym z nich wyświetlane są nazwy zmiennych wystąpienia (atrybutów) obiektu, natomiast w drugim - wartość wybranej zmiennej wystąpienia. Okno Inspector można wywołać przez wybranie opcji inspectIt z menu edycyjnego lub też przez wysłanie do obiektu następującego komunikatu:
jakisObiekt inspect
lub
jakisObiekt basicInspect
Polecenie basicInspect powoduje otwarcie okna pokazującego zmienne wystąpienia faktycznie wchodzące w skład obiektu. Polecenie inspect jest dla niektórych klas przedefiniowane w taki sposób, że wyświetlane są dane o logicznej zawartości obiektu.
Okno Debugger
Okno Debugger otwierane jest za każdym razem, gdy w kodzie źródłowym wystąpi błąd. Pokazuje ono miejsce, w którym wystąpił błąd, oraz pozwala zorientować się, w jaki sposób system do niego dotarł. Debuger może działać w trzech trybach: normal, modal i inspecting.
Jeśli podczas pracy w trybie normal wystąpi błąd w procesie nie będącym procesem obsługi zdarzenia, debuger jest uruchamiany nad błędnym procesem. Powoduje to zablokowanie dostępu do tego procesu i wszystkich jego widoków. Pozostałe widoki pozostają aktywne i odpowiadają w zwykły sposób.
Jeśli błąd wystąpi w procesie obsługi zdarzenia, debuger uruchamiany jest w trybie modal. W tym trybie nie można komunikować się z żadnym z widoków.
Tryb inspecting może zostać uruchomiony z okna ProcessMonitor za pomocą menu podręcznego i pozwala na obserwowanie stanu innych procesów. Ponieważ jednak obserwowany proces może kontynuować działanie, wyświetlane dane pochodzą z chwili, w której zostało wydane polecenie.
Okno Debugger zawiera cztery podwidoki:
Context Walkback List - ślad programu, pozwalający prześledzić drogę, która doprowadziła do wystąpienia błędu,
Method Source View - kod źródłowy metody, w której wystąpił błąd,
Receiver Inspector - pozwala na obserwację obiektu, który jest odbiorcą wybranego komunikatu,
Context Inspector - dostarcza informacji o argumentach i zmiennych lokalnych kontekstu.
Okno Debugger przedstawione jest na rysunku 31.16.
Rysunek 31.16. Debugger |
|
Funkcje wspólne dla wszystkich podwidoków dostępne są poprzez przyciski znajdujące się powyżej podwidoku śladu programu. Funkcje te opisane są w tabeli 31.13.
Tabela 31.13. Przyciski funkcyjne debugera
Przycisk |
Opis |
continue |
Powoduje kontynuowanie wykonania programu. |
terminate |
Kończy działanie procesu powodującego błąd. |
abort |
Przerywa, jeśli to możliwe, wykonywane aktualnie czynności. |
step |
Pozwala na kontynuowanie procesu do czasu, aż w wybranym kontekście wykonane zostanie następne polecenie send. |
send |
Pozwala na kontynuowanie procesu aż do czasu wysłania pierwszej wiadomości. |
return |
Powoduje kontynuację działania tak, jakby wybrany kontekst zakończył działanie. |
restart |
Powoduje kontynuację działania uruchamiając ponownie wybrany kontekst. |
W podwidoku śladu programu dostępne jest menu podręczne, którego funkcje zebrano w tabeli 31.14.
Tabela 31.14. Menu podręczne podwidoku śladu programu
Funkcja |
Opis |
exit smalltalk |
Powoduje wyjście z systemu ST/X bez zapisywania pliku obrazu. |
show more |
Wyświetla następnych 50 kontekstów określających ślad wykonania programu. |
breakpoints |
Funkcja niedostępna w tej wersji systemu. |
trace on/off |
Funkcja niedostępna w tej wersji systemu. |
trace step |
Funkcja niedostępna w tej wersji systemu. |
Jeśli przy uruchamianiu debugera wystąpi błąd, wyświetlane jest okno miniDebuger. Wyświetla on kolejne wiersze kodu źródłowego i nie pozwala korzystać z graficznego interfejsu użytkownika. Można go obsługiwać wpisując polecenia w oknie Xterm, z którego został uruchomiony system ST/X. Po wciśnięciu klawisza ? i klawisza Enter w odpowiedzi na znak zachęty, wyświetlona zostanie lista dostępnych w tym okrojonym debugerze.
Podsumowanie
W tym rozdziale omówiliśmy skrótowo środowisko Smaltalk/X, pozwalające na programowanie w języku Smalltalk. Jeśli interesuje Cię ten język, a nie masz dostępu do komercyjnej wersji, wersja Smalltalk/X będzie dla Ciebie idealna. Oprócz omówionych w tym rozdziale programów narzędziowych i drobiazgów ułatwiających tworzenie programów zawiera ona również wiele programów przykładowych oraz sporo dokumentacji, mogącej znacznie ułatwić naukę programowania w języku Smalltalk.
Warto również wspomnieć o tym, że wraz z Linuxem rozprowadzana jest wersja GNU języka Smalltalk, o nazwie mst. W tym rozdziale zdecydowaliśmy się jednak na omówienie wersji Smalltalk/X, ponieważ jest ona o wiele bardziej kompletna.
Język Perl, stosowany głównie do szybkiego tworzenia prostych i użytecznych programów, omówiony jest w rozdziale 28. „Perl”.
Czytając rozdział 45. „Kopie zapasowe”, możesz dowiedzieć się, w jaki sposób należy wykonywać kopie zapasowe, dzięki którym programy w języku Smalltalk będą bezpieczne.
Jeśli chcesz skonfigurować swój system tak, by inni użytkownicy Internetu mieli do niego dostęp, przejdź do rozdziału 47. „Konfiguracja węzła internetowego”.
518 Część V ♦ Linux dla programistów
518 E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\31.DOC
E:\Moje dokumenty\HELION\Linux Unleashed\Indeks\31.DOC 517
Rozdział 31. ♦ Smalltalk/X 517