C GUI QT programowanie.pdf

(861 KB) Pobierz
Microsoft Word - praca2.doc
Leszek Klich
PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++
Multiplatformowa biblioteka QT
LICECJA :
Powielanie lub wykorzystywanie jest możliwe tylko w celach edukacyjnych.
Przy wykorzystywaniu dowolnych algorytmów lub kodów źródłowych z
niniejszego opracowania należy podać imię i nazwisko autora. Wyrażam zgodę
na wykorzystywanie niniejszych kodów do celów komercyjnych pod warunkiem
podania w informacji o programie imienia i nazwiska autora.
Jeśli chcesz wykorzystać dowolny tekst z opracowania na swojej stronie www –
skontaktuj się ze mną leszek-klich@wp.pl
1
W niniejszym opracowaniu moim głównym celem było zwrócenie uwagi na
alternatywne narzędzie programistyczne. Jednym z najlepszych, według mnie, jest właśnie biblioteka
QT firmy Trolltech. Pisane za pomocą jej programy są praktycznie przenośne pomiędzy wieloma
systemami operacyjnymi (Windows/Linux/Unix/Mac OS). Biblioteka jest bardzo znana w systemie
Linux, lecz w systemie Windows większość programistów wykorzystuje narzędzia typu RAD w stylu
Visual Basic czy Delphi. Nie staram się przez to powiedzieć, że narzędzia te są niepraktyczne. Pragnę
jedynie zwrócić uwagę na istnienie narzędzi, które oferują pracę w zbliżonym do ideału dialekcie
obiektowego języka C++ a to jest w czasie obecnym niemal niespotykane.
2
1. Cel niniejszego opracowania
Praca ta jest skierowana dla wszystkich znających podstawy programowania
proceduralnego w języku C++. Jej treść obejmuje wstępne zagadnienia i teorię
programowania obiektowego oraz praktyczne wykorzystanie wiadomości do budowania
okienkowych aplikacji. W pierwszej kolejności pozwala zapoznać się z mechanizmem i
filozofią programowania obiektowego. W kolejnych rozdziałach opisuje jedną z metod
programowania aplikacji przeznaczonych dla środowisk Windows oraz XWindow.
Krok po kroku opisuje najbardziej przydatne klasy i metody wybranej biblioteki
programowania a opis każdej z nich kończy się praktycznym przykładem. Do każdej z klas
dostępne są także tabele wraz z właściwościami obiektu oraz najważniejszymi metodami.
Dzięki takiemu podejściu niniejsza praca może służyć jako podręczny przewodnik po
elementach biblioteki programisty wykorzystywany podczas pisania programów.
Do niniejszej pracy dołączyłem także płytę CD. Umieściłem na niej bibliotekę QT,
niezbędne narzędzia oraz wszystkie programy w wersji binarnej oraz źródłowej. Muszę w
tym miejscu dodać, że opisywane w niniejszej pracy metody programistyczne nie są
standardowe. Unikam tutaj wykorzystywania nowoczesnych narzędzi typu RAD 1 służących
do budowy aplikacji i interfejsów użytkownika. Zamiast narzędzi tego typu skupiłem się na
„ręcznym” pisaniu szkieletu aplikacji. Takie podejście wymaga od programisty większego
zaangażowania i wiedzy, ale dzięki takiej metodzie można szczegółowo kontrolować rozwój
projektu. Oprócz kwestii typowo praktycznych, takie podejście programisty umożliwia
bezpośredni kontakt z kodem źródłowym aplikacji, co jest nie bez znaczenia dla
programistów wywodzących się z ruchu Open Source 2 i Linuksa.
W niniejszej pracy przedstawiłem bibliotekę języka C++ umożliwiającą pisanie
przenośnych aplikacji opartych o wygodny dialog z użytkownikiem za pomocą myszki oraz
klawiatury. Zdecydowałem się na bibliotekę QT rozprowadzaną wraz z kodem źródłowym,
gdyż w inne tego typu biblioteki, w obecnej fazie rozwoju nie pozwalają na wygodną i
stabilną pracę w systemach Windows. Jako dodatkowe kryterium, którym się kierowałem
była przenośność kodu pomiędzy platformami Windows oraz Linux. Biblioteka QT jest
dostępna bezpłatnie dla wszystkich. Jest standardowo instalowana w większości dystrybucji
1 RAD – (Rapid Application Development) oznacza program służący do szybkiego budowania aplikacji.
Przykładem może być pakiet Borland C++ Builder.
2 Open Source – idea polegająca na dostarczaniu wraz z aplikacją pełnego kodu źródłowego.
3
Linuksa. W tym systemie otrzymujemy ją wraz z kodem źródłowym. W środowisku
Windows biblioteka jest dostępna bezpłatnie pod warunkiem, że nie będzie wykorzystywana
do celów komercyjnych.
Poprzez tę pracę pragnę zgłębić sztukę programowania obiektowego w języku C++
oraz zapoznać się z możliwością jej wykorzystania w przyszłości. Niestety, choć do
produktów takich gigantów jak Borland czy Microsoft dostępne jest wiele wyczerpujących
opisów, książek oraz kursów, to w przypadku pozostałych pozostaje przeszukiwanie sieci
Internet, czytanie list dyskusyjnych i składanie w całość często anglojęzycznej i niepełnej
dokumentacji.
Moje badania dotyczą tylko jednej z wielu dostępnych bibliotek, co było
podyktowane ograniczonym rozmiarem pracy i ogromem niniejszego tematu. Na początku
starałem się przedstawić w skrócie model programowania obiektowego. Następnie
skoncentrowałem się na tworzeniu aplikacji za pomocą wybranej przeze mnie biblioteki.
Opisując ją będę starał się przedstawić jej zalety i wady, przydatność dla programisty oraz
względną stabilność w środowiskach Windows oraz Linux, co jest nie bez znaczenia przy
zastosowaniach komercyjnych. Oczywiście skupię się jedynie na najważniejszych cechach
tej biblioteki i postaram się scharakteryzować najważniejsze z dostępnych klas i metod. W
dalszej części pracy napisałem kilka programów za pomocą opisywanej biblioteki.
4
2. Zarys historii i ewolucji j ę ęzyka C i C++
Od początku powstania komputerów, w wielu ośrodkach badawczych prowadzono
badania nad językiem programowania, który łączył by w sobie cechy języka doskonałego 3 .
Miał to być język jak najwyższego poziomu, w którym łatwo definiować algorytmy oraz
który przejawiał niskie zapotrzebowanie na pamięć i moc obliczeniową. Z drugiej strony
musiał być językiem na tyle niskiego poziomu, aby tworzone algorytmy były wykonywane
szybko i optymalnie. Z uwagi na wiele dostepnych modeli komputerów należało opracować
język uniwersalny, niezależny od maszyny, na którzym jest wykonywany. Uniezależnienie
języka od konkretnej maszyny gwarantowałoby sukces produktu. Niestety w praktyce
szybko przekonano się, że napisanie takiego języka nie jest w ogóle możliwe. W latach
siedemdziesiątych pojawił się jednak język, który bardzo zbliżył się do tego ideału. Językiem
tym był produkt o nazwie „C”. Pierwszy kompilator tego języka powstał w roku 1972.
Zdefiniował go Dennis M. Ritchie 4 z Bell Laboratories w New Jersey. Język ten opierał się
na języku “B” opracowanym dwa lata wcześniej przez Kena Thompsona 5 . Język B zaś
wywodził się z języka BCPL i powstał w University Mathematical Laboratories w
Cambridge w roku 1969. Język B i Asembler były językami, za pomocą których napisano
pierwszy system operacyjny UNIX. Choć język C ewoluował, to jednak pozostał tym samym
językiem programowania, co jego pierwowzór. Język ten znajdziemy w każdej dystrybucji
systemu UNIX oraz jego darmowych klonów takich jak LINUX. Jest to z założenia język
ogólnego przeznaczenia. Początkowo jednak miał służyć do pisania kompilatorów
i systemów operacyjnych. Nowsze kompilatory tego języka były dostarczane z bibliotekami,
które sprawiły, iż C może służyć w wielu dziedzinach informatyki. Choć na rynku były
dostępne inne języki programowania, to jednak przejrzyste struktury danych oraz prostota
wyrażeń sprawiła, że język ten długo dzierżył palmę pierwszeństwa na rynku kompilatorów.
Programowanie w samym języku C było jednak na tyle trudne, że nieliczne grono
programistów, znających język C, było wręcz rozchwytywane i doskonale opłacane przez
wielkie firmy. Inne języki programowania dostępne wówczas na rynku takie jak: Basic,
Fortran czy Pascal, choć prostsze w zastosowaniu, były zbyt mało uniwersalne. Działo się
tak dlatego, że przy ich tworzeniu kierowano się określonym z góry zastosowaniem.
3 B. W. Kernighan, D. Ritchie, Język C , Warszawa 1988, str. 9
4 Tamże, str. 9
5 Tamże, str. 9
5
Zgłoś jeśli naruszono regulamin