Tworzenie aplikacji w środowisku graficznym WINDOWS


Wstęp

Ogromne możliwości WINDOWS związane są głównie z jego wielozadaniowością, graficznym interfejsem użytkownika i zarządzaniem pamięcią. Do ich wykorzystania w swoich aplikacjach musi przyczynić się programista. Przygotowanie obsługi programu i jego szaty graficznej jest zdecydowanie inne niż w środowisku DOS. Wymaga odmiennego podejścia do programowania.

Większość programów działających pod DOS-em wykonuje swoje zadania w sposób sekwencyjny, co oznacza, że stopniowo przechodzą one kolejne etapy, aż do momentu zakończenia działania. Każda procedura wywoływana jest z określonego miejsca, do którego program po pewnym czasie wraca. Oczekiwanie na wprowadzenie danych przez użytkownika, czy zakończenie wykonywania obliczeń są naturalnymi etapami w systemie jednozadaniowym, jakim jest DOS.

W WINDOWS sytuacja wygląda inaczej. Tutaj program stanowi zbiór procedur reagujących na zajście określonych zdarzeń w systemie. Zdarzeniami takimi są np.: przesunięcie wskaźnika myszy, kliknięcie myszą, naciśnięcie klawisza klawiatury, upłynięcie określonego czasu, zmiana rozmiaru okna na ekranie. O tym wszystkim program dowiaduje się za pomocą komunikatów, które otrzymuje od WINDOWS. Odpowiednie procedury programu reagują na te bodźce, zajmując się ich obsługą. Po zakończeniu wykonywania działań związanych z obsługą zdarzeń aplikacja zwraca sterowanie systemowi. W przeciwnym wypadku nie miałby on możliwości przekazywania kolejnych komunikatów, zarówno jej samej, jak też innym działającym aktualnie aplikacjom. Zrozumienie tych zachowań stanowi klucz do właściwego programowania w środowisku graficznego interfejsu użytkownika w systemie wielozadaniowym, jakim jest WINDOWS. Należy tu zaznaczyć, że pełną wielozadaniowość (z tzw. wywłaszczeniem) zapewnia dopiero WINDOWS 95 (98) lub WINDOWS NT.

Podstawowym zadaniem nauczyciela uczącego tworzenia aplikacji w systemie WINDOWS jest przekazanie uczniom sposobów myślenia (filozofii postępowania) i rozwiązywania problemów, mających zastosowanie w różnych (często bardzo odległych) dziedzinach życia.

Cechy środowiska

1. Komunikaty o zdarzeniach

W systemie WINDOWS aplikacja reaguje na komunikaty wysyłane jej przez system operacyjny. Kiedy użytkownik na przykład naciśnie przycisk na formularzu, komunikat o tym zdarzeniu odbiera aplikacja, której zadaniem jest uaktywnić procedurę (funkcję) obsługi tego zdarzenia. Po zakończeniu jego obsługi program przekazuje sterowanie do systemu operacyjnego. W odróżnieniu od programów DOS-owskich, procedury obsługi zdarzeń nie są tu wywoływane sekwencyjnie. Wywołanie procedury obsługi zdarzenia znajduje się zwykle w innym miejscu niż to, w którym ostatnio zostało przerwane wykonywanie programu. Aplikacja w WINDOWS jest zbiorem procedur (funkcji) wywoływanych w odpowiedzi na zaistnienie wybranych zdarzeń.

2. Wielozadaniowość

W WINDOWS 95(98) i NT może działać jednocześnie wiele programów Każdy uruchomiony program nosi nazwę procesu. Procesowi przydzielane są pewne zasoby, takie jak czas procesora, przestrzeń adresowa itp. Gdy uruchamiamy nowy proces, rozpoczyna działanie również wątek (thread) związany z uruchomionym kodem. System operacyjny używa wątków w celu stworzenia harmonogramu, na podstawie którego rozdzielany jest czas procesora. Proces może składać się z wielu wątków. Każdy wątek otrzymuje od systemu operacyjnego przydział czasu procesora, własny stos ze zmiennymi lokalnymi i adres funkcji rozpoczynającej wątek. Ma również dostęp do obiektów globalnych procesu. Poszczególne funkcje aplikacji mogą więc być obsługiwane przez oddzielne wątki. Umożliwia to realizację wielozadaniowości na poziomie aplikacji. Na przykład w przypadku edytora tekstu może to być drukowanie w tle podczas pisania innego tekstu.

3. Graficzny interfejs użytkownika - okna

Słowo “windows”, oznaczające “okna” , stało się nie tylko nazwą systemu, ale także jego najbardziej przekonywującą wizytówką. Okna służą do reprezentowania aplikacji (każdy program działa tak długo, jak długo otwarte jest jego główne okno) i do wymiany danych. W obsłudze okien system WINDOWS wyręcza programistę wykonując samodzielnie takie zadania jak: otwieranie, zamykanie, przesuwanie, zmiana wielkości okien, wprowadzanie danych za pomocą okien dialogowych i inne.

4. Biblioteki WINDOWS, dynamiczne łączenie procedur

Aplikacje WINDOWS mogą korzystać z kilkuset różnych funkcji systemowych, tak zwanych funkcji API (Application Programming Interface).

Procedury biblioteczne programów działających pod DOS-em dołączane są do nich na etapie konsolidacji (linking), zajmując miejsce w pliku wykonywalnym typu EXE. W WINDOWS zastosowano tzw. dynamiczne łączenie polegające na tym, że procedury systemowe łączone są z programem w czasie jego wykonywania. Podejście takie posiada kilka zalet:

Nie tylko funkcje systemowe WINDOWS mogą być łączone dynamicznie z aplikacjami. Można tworzyć własne biblioteki dynamiczne (tzw. pliki DLL). Opłaca się to szczególnie wówczas, gdy te same funkcje wykorzystywane są przez większą ilość programów.

 

Fazy tworzenia aplikacji

Tworzenie aplikacji można podzielić na trzy zasadnicze fazy: analizę, projektowanie i programowanie (kodowanie). Podział ten ma szczególne znaczenie dydaktyczne. Kłopoty z prawidłowym działaniem aplikacji mają często źródło w powierzchownej bądź błędnej analizie problemu, w złym (nieprzemyślanym) projekcje. Emocjonalne podejście do programowania przez wielu uczniów powoduje niedocenianie dwóch pierwszych faz, czego efektem jest program błędny lub gorszy od oczekiwań.

Aplikacje można tworzyć w stylu proceduralnym lub obiektowym. Za stylem obiektowym przemawia co najmniej kilka aspektów. Są to między innymi:

Styl obiektowego tworzenia aplikacji powinien być stosowany we wszystkich trzech fazach. Można więc użyć określeń: analiza obiektowa (OOA - Object Oriented Analysis), projektowanie obiektowe (OOD - Object Oriented Design) i programowanie obiektowe (OOP - Object Oriented Programming). Obiektowy styl tworzenia aplikacji to znacznie więcej niż tylko nowa składnia. Uczenie tego stylu, to uczenie “obiektowego myślenia”, odkrywczego i twórczego “budowania architektury obiektowej”.

Analiza obiektowa ustanawia klasy dla rozwiązywanego problemu. Projektowanie powinno koncentrować się na kontakcie z użytkownikiem, zarządzaniu danymi i klasami. Precyzuje, co każdy obiekt powinien “wiedzieć i co robić” (inaczej: określa właściwości i metody obiektu). Ustala również interakcje między obiektami. Programowanie obiektowe, to zapis kodu w danym języku (z uwzględnieniem jego możliwości obiektowych).

Efektywne tworzenie aplikacji w stylu obiektowym powinno składać się nie z jednorazowej analizy, projektowania i programowania, lecz z “równoczesnego rozwijania” wszystkich tych faz. Aby udoskonalać i poprawiać swój produkt należy wielokrotnie powracać po fazie programowania do ponownej analizy lub do projektowania. Jest to tzw. model “piłki baseballowej”. Przedstawia go poniższy schemat:

Z tworzeniem aplikacji nierozerwalnie wiąże się pojęcie algorytmu.

ALGORYTM (Piotr Wróblewski - “Algorytmy, struktury danych i techniki programowania”):

Ucząc tworzenia aplikacji, uczymy “algorytmicznego myślenia”, czyli sekwencyjnego określania działań, reguł postępowania.

Prawidłowo zbudowany algorytm charakteryzuje się :

“Oszczędność czasu i przestrzeni” każe nam szukać tzw. algorytmów efektywnych, czyli wykonujących swoje zadania w jak najkrótszym czasie i wykorzystujących jak najmniejszą ilości pamięci.

Algorytmy budujemy w każdej fazie tworzenia aplikacji. Poszczególne fazy, a także powroty do faz poprzednich są kolejnymi krokami precyzującymi algorytm i zwiększającymi jego efektywność.

 

Cechy i przykłady narzędzi

Do tworzenia aplikacji konieczne są odpowiednie narzędzia. Znając właściwości środowiska WINDOWS można określić cechy, jakie powinny posiadać pakiety (w skrócie mówimy tu o językach programowania) do tworzenia aplikacji w tym systemie. Są to:

Z pośród wielu narzędzi programistycznych proponuję krótki przegląd czterech pakietów, za pomocą których wygodnie można tworzyć i uczyć tworzenia aplikacji dla systemu WINDOWS:

  1. C++ Builder - pakiet łączący wiele zalet: uniwersalność i popularność języka C++, swobodne manipulowanie obiektami, dobrze zorganizowana i łatwa w użyciu biblioteka obiektowa VCL, wizualne projektowanie, obsługa baz danych. Jest to narzędzie zarówno dla zaawansowanego, jak i początkującego programisty.
  2. Delphi - bliźniaczy (w stosunku do C++ Builder) produkt firmy BORLAND, w którym językiem roboczym jest PASCAL. O zaletach tego języka nie trzeba chyba wspominać. Dla wszystkich wcześniejszych użytkowników tego języka jest to narzędzie, które “wreszcie” pozwala swobodnie programować w WINDOWS.
  3. Visual Basic for Applications - mutacja języka Visual Basic dostępna w niektórych aplikacjach firmy Microsoft. Chciałbym tu skoncentrować się na wersji wbudowanej w MS ACCESS. Ze względów dydaktycznych jest to pakiet wart polecenia podczas nauczania pojęć baz danych. Zawiera język oferujący wygodne w użyciu procedury zdarzeniowe i narzędzia wizualne. Pozwala automatyzować tworzone przez siebie systemy zarządzania bazami danych, a także poznawać podstawowe struktury języka nie związane bezpośrednio z bazami danych ( np. graficzne).
  4. CA Visual Objects - język przytłumiony ostatnio przez produkty takich firm jak Microsoft i Borland, niemniej wart zauważenia (i stosowania) chociażby ze względu na ciekawe rozwiązania obiektowe i kontynuację języków bazodanowych typu XBase: Dbase, Clipper (znanych z DOS-u). Zapisuje tabele baz danych w popularnym standardzie DBF.

 

Aplikacje hipertekstowe

W czasach dużej popularności dokumentów hipertekstowych nie można pominąć metod i narzędzi do tworzenia tego typu dokumentów (aplikacji - granica pomiędzy tymi pojęciami zaciera się). Czym jest dokument hipertekstowy? To tzw. “nad-tekst” powstający, gdy wielość dokumentów zostaje powiązana odsyłaczami pozwalając czytelnikowi swobodnie przeskakiwać od jednego do drugiego i tym samym ogarnąć kontekst interesującej go sprawy. Taką strukturę mają różnego rodzaju kompendia (podręczniki, encyklopedie itd.), które są na ogół czytane wyrywkowo, a nie sekwencyjnie “od deski do deski”. W przypadku publikacji tradycyjnych, drukowanych, taki sposób czytania wymaga częstego wertowania kartek. Wady tej pozbawione są publikacje elektroniczne, gdzie do wykonania skoku wystarczy kliknięcie myszką. Różnice pomiędzy zwykłym tekstem, a hipertekstem wyjaśniają poglądowo rysunki:

Tok postępowania obejmujący analizę, projektowanie i programowanie tutaj również znajduje zastosowanie.

1. Aplikacje HTML

Tworzenie internetowych stron www jest coraz bardziej pożądaną umiejętnością. Produktem jest często złożona, obszerna aplikacja interpretowana przez tzw. przeglądarki internetowe. Do najpopularniejszych przeglądarek możemy zaliczyć: Microsoft Internet Explorer i Netscape Navigator. Pierwsza z nich jest częścią składową obecnie sprzedawanych wersji WINDOWS 95(98).

Czym jest aplikacja hipertekstowa? Jest to zwykle tekst napisany w języku HTML (HyperText Markup Language). Czasami fragmenty napisane są przy użyciu języków: Java, JavaScript, Visual BasicScript.

Mając projekt strony www można przystąpić do napisania kodu. Stosowane są tu dwa podejścia do programowania:

Pierwsza metoda dobrze nadaje się do poznawania języka HTML. Pozwala szybko przyswoić sobie podstawowe konstrukcje tego języka, a także mieć pełną kontrolę nad tworzonym kodem. Ma więc duże walory edukacyjne.

Druga metoda polega natomiast na stosowaniu specjalizowanych edytorów wspomagających tworzenie kodu HTML. Wśród wielu edytorów można polecić Front Page Express, będący składnikiem pakietu Microsoft Internet Explorer 4. Edytor ten jest łatwy w użyciu, pracuje w trybie graficznym, a więc budowana strona od razu swoim wyglądem przypomina interpretowany w przeglądarce dokument (w odróżnieniu od wielu edytorów tekstowych HTML). Tworzenie kodu przy użyciu edytorów HTML jest zwykle szybkie, łatwe w użyciu i nie wymaga znajomości samego języka. Ostatnia cecha może mieć jednak negatywną stronę - autor nie sprawuje pełnej kontroli nad tworzonym dokumentem.

Z metodycznego punktu widzenia, naukę tworzenia stron www powinniśmy zaczynać od pisania kodu HTML w edytorze ASCII, aby poznać przynajmniej podstawowe “znaczniki” tego języka. Później wygodnie jest stosować graficzny edytor HTML (niekoniecznie Front Page Express), aby zwiększyć efektywność swojej pracy. Podczas pracy z edytorem można czasami sięgać do kodu źródłowego i dokonywać w nim “ręcznych” poprawek. Jest to więc połączenie obydwu metod.

2. Pliki pomocy WINDOWS

(Przedstawiony sposób tworzenia plików pomocy dotyczy WINDOWS 95)

Innym rodzajem aplikacji hipertekstowych są pliki pomocy WINDOWS (*.hlp). Tworzenie tego rodzaju dokumentów może być alternatywnym rozwiązaniem w stosunku do plików HTML - jeżeli nie mamy potrzeby publikowania ich w sieci INTERNET. Mogą być również ważnym dodatkiem (zawierającym objaśnienia, instrukcje, pomoc itp.) w aplikacjach tworzonych w C++ Builder i innych.

Aby utworzyć aplikację HLP należy:

W systemie WINDOWS 95 istnieje czytnik pomocy (WINHLP32.EXE), który odczytuje skompilowane pliki pomocy. Uruchamianie tych aplikacji nie różni się od uruchamiania plików typu: *.exe.

 

Zakończenie

Przedstawiłem tu w zarysie główne problemy dotyczące tworzenia aplikacji w systemie WINDOWS. Zakres tematyki uwarunkowany jest celem edukacyjnym: nauczanie tworzenia aplikacji. Można to rozumieć szerzej, jako przekazywanie pewnej filozofii “myślenia algorytmicznego”, “myślenia obiektowego”. Takie podejście określa adresatów: uczniów szkół średnich (chociaż nie tylko), którzy w większości nie zostaną zawodowymi programistami (może hobbystami), ale wykorzystają poznane sposoby myślenia w wielu innych dziedzinach życia.

 

Literatura

  1. M. Bisz, M. Cielecki: Ćwiczenia z C++ Builder, MIKOM, Warszawa 1997.
  2. D. Boncler: Windows 95 od środka, HELP, Warszawa 1996.
  3. E. Callahan: Microsoft Access 97. Visual Basic krok po kroku, RM, Warszawa 1998.
  4. P. Coad, J. Nicola: Programowanie obiektowe, READ ME, Warszawa 1993.
  5. W. Hrycyk: MS Access 2.0 - leksykon języka Access Basic, CROMA, Wrocław 1996.
  6. J. Korol: Budujemy system pomocy dla Windows, MIKOM, Warszawa 1997.
  7. J. Mischel, J. Duntemann: Borland C++ Builder, MIKOM, Warszawa 1997.
  8. D. Osier, S. Grobman, S. Batson: Delphi 2, HELION, Gliwice 1997.
  9. K. Pikoń: ABC Internetu, HELION, Gliwice 1998.
  10. W. Porębski: Obiektowe języki programowania, HELP, Warszawa 1994.
  11. K. Reisdorph, K. Henderson: C++ Builder, HELION, Gliwice 1998.
  12. B. Siemieniecki, W. Lewandowski: Internet w szkole, ADAM MARSZAŁEK, Toruń 1998.
  13. A. Struzińska-Walczak, K. Walczak: CA - Visual Objects. Programowanie wizualno - obiektowe, W&W, Warszawa 1995.
  14. L. Śliwa, M. Wolny: Wprowadzenie do programowania w CA- Visual Objects, CLM SOFT, Warszawa 1995.
  15. R. Wacławek: Windows od kuchni. Poradnik programisty, HELP, Warszawa 1993.
  16. P. Wimmer: Kurs języka HTML. Poradnik webmastera, LUPUS, Warszawa 1997.
  17. P. Wróblewski: Algorytmy, struktury danych i techniki programowania, HELION, Gliwice 1997.
  18. Miesięcznik ENTER, wydawnictwo: LUPUS.
  19. Miesięcznik PC World Komputer, wydawnictwo: IDG Poland.