Oglądanie przykładów załączonych w Object Studio

W poniższym samouczku nauczycie się:

  1. ładowania aplikacje Object Studio;
  2. używania przeglądarki przykładów załączonej do Object Studio;
  3. rozumienia przykładowych aplikacji.

Do ładowania aplikacji dołączonych do Object Studio używamy akcji Load Application z menu File. screenshot
Z listy dostępnych aplikacji wybieramy Sample Browser i klikamy przycisk Load. screenshot
Po załadowaniu aplikacji klikamy przycisk Close. W głównym okienku Object Studio pojawiła się ikonka aplikacji; klikamy w tą ikonkę. screenshot
Wśród kategorii wybieramy Timer. W tej kategorii jest tylko jedna aplikacji przykładowa - Clock. Wybieramy ją, klikamy Load Files i zamykamy przeglądarkę programów przykładowych (Sample Browser). screenshot
W głównym okienku Object Studio pojawiła się ikonka kolejnej aplikacji - Clock. Klikamy dwukrotnie jej ikonkę, by uruchomić aplikację. screenshot
Po obejrzeniu zegara możemy zamknąć jego okienko. screenshot
Kliknąwszy prawym klawiszem myszy na ikonce aplikacji zobaczymy menu kontekstowe. Z tego menu wybieramy Edit, aby obejrzeć tę aplikację w Designerze. screenshot
Po kliknięciu w środku okienka Clock zobaczymy komponent graficzny użyty do reprezentacji tekstu. screenshot
Wybieramy menu Tools i klikamy na akcję Variables..., aby zobaczyć zmienne kontrolera aplikacji. screenshot

Pierwsza z nich, time zawiera bieżący czas, druga z nich wskazuje na "budzik" (timer), który co sekundę powiadamia aplikację o konieczności zaktualizowania czasu.

Budziki występują w większości systemów programowania zdarzeniowego.

screenshot
Po zamknięciu okienka zmiennych otwieramy edytor metod. screenshot

Wybrawszy obiekt kontrolera aplikacji, Clock zauważamy, że zdefiniowano mu "ręcznie" dwie metody:

openInitialization
tworzącą budzik o zadanych parametrach,
close
niszczącą wcześniej skonstruowany budzik.

Dlaczego jest to potrzebne?
Mimo, że Smalltalk automatycznie odśmieca nieużywane obiekty, nie wyłącza obiektów używanych. Budzik jest w użyciu przez cały czas "budzenia" kogokolwiek - przed zniszczeniem należy go "zdezaktywować".
Metody o powyższych nazwach są automatycznie wywoływane podczas inicjalizacji i finalizacji życia obiektu (co łatwo sprawdzić w hierarchii klas).

Dla uproszczenia w Smalltalku budzik nie wysyła do aplikacji zdarzeń, tylko wykonuje zadany blok kodu (patrz setBlock:). W innych systemach taki blok nazywany jest callback-iem.

screenshot
Zrozumiawszy i obejrzawszy szczegółowo aplikację, zamykamy Designera. Znów klikamy prawym klawiszem myszy na ikonce zegara i wybieramy przeglądanie hierarchii klas: Browse. screenshot
Jak widać w klasie są obecne tylko ręcznie wprowadzone metody, reszta jest dziedziczona... screenshot

Gdzie zatem jest informacja stworzona w Designerze:

  • komponenty składowe, ich wymiary i właściwości,
  • połączenie metod obsługi zdarzeń?
Otóż cała ta informacja jest zawarta w klasowej metodzie inicjalizującej obiekt.

[Ze względów metodologicznych dobre generatory programów starają się zachować jak najdokładniejszą odpowiedniość - a najlepiej bijekcję - między generowanym kodem, a informacją źródłową.
Nie należy jednak w żadnym razie edytować generowanego kodu! Przy pierwszej modyfikacji może zostać nadpisany - czyli wygenerowany od nowa, bez uwzględniania naszych zmian.)

screenshot
Po zamknięciu przeglądarki klas wracamy do głównego okienka Object Studio. Aby usunąć aplikację klikamy na niej prawym klawiszem myszy i wybieramy Delete. screenshot