Programowanie W Borland Delphi.pdf

(11209 KB) Pobierz
3745125 UNPDF
Rozdział 1
Czy Delphi jest produktem dla
każdego?
Średnio raz na kilka lat jedna z firm produkujących oprogramowanie wprowadza
na rynek narzędzie albo technologię, która ma pomóc w tworzeniu bezbłędnego
oprogramowania w rekordowo krótkim czasie. Status rewelacyjnej nowości, na
której skupiało się zainteresowanie fachowców, uzyskiwały kolejno: systemy
zarządzania bazami danych (DBMS), działające w oparciu o model klient - serwer,
technologia CASE (ang. computer aided software engineering , komputerowo
wspomagana inżynieria oprogramowania), wreszcie programowanie zorientowane
obiektowo. Z kolei dziś wiele osób wiąże wielkie nadzieje z językiem Java.
Powszechne jest mniemanie, że żadne pojedyncze narzędzie programistyczne nie
rozwiąże wszystkich problemów związanych z tworzeniem poważnych aplikacji.
Uważa się, że jeśli jakieś narzędzie pozwala na szybkie tworzenie gotowych
aplikacji, to najprawdopodobniej generuje nieefektywny kod. Jeśli umożliwia
wygodne komponowanie formularzy ekranowych iokien wśrodowisku
graficznym, to zapewne nie najlepiej nadaje się do programowania na niższym
poziomie. Narzędzie generujące aplikacje, działające w oparciu o model klient-
serwer, najprawdopodobniej nie jest w stanie bezpośrednio komunikować się
z bazami danych środowiska Paradox. Te ipodobne opinie są bardzo
rozpowszechnione.
Nie zamierzamy przekonywać nikogo, że Delphi oferuje rozwiązania wszystkich
problemów, nękających twórców oprogramowania. Można natomiast zauważyć, że
Delphi wyznacza zupełnie nowy kierunek rozwoju narzędzi programowania
wizualnego. Delphi to pierwsze narzędzie do przyspieszonego tworzenia aplikacji
(typu RAD, ang. rapid application development ), wyposażone wwydajny
kompilator optymalizujący kod. Jeśli dodamy do tego rozbudowane narzędzia do
tworzenia imodyfikowania komponentów, komplet narzędzi internetowych
i wielowarstwową architekturę baz danych, to uzyskamy obraz najpotężniejszego -
jak dotąd - pakietu technologii do tworzenia oprogramowania w środowisku
Windows. Być może Delphi nie jest jeszcze jedynym i wymarzonym narzędziem
dla autora aplikacji pod Windows, ale stanowi rozwiązanie bardzo bliskie ideału.
Mimo wszystkich swych zalet, Delphi nie wygeneruje bezbłędnego programu, jeśli
sam autor nie będzie się trzymał odpowiednich reguł inżynierii oprogramowania.
Delphi nie zaprojektuje aplikacji i nie zidentyfikuje potrzeb użytkownika; nie
 
26
Część I
zastąpi programisty w pracy koncepcyjnej. Delphi jest tylko narzędziem, które robi
dokładnie to, co mu się każe.
Celem autora niniejszej książki było przekazanie czytelnikowi wiedzy niezbędnej
do efektywnego użycia narzędzia, jakim jest Delphi, przy tworzeniu aplikacji
obsługi baz danych, działających w oparciu o model klient-serwer.
Dlaczego Delphi?
W rozmowach na temat tworzenia aplikacji typu klient-serwer przy użyciu Delphi
osoby, które nie zetknęły się z tym narzędziem, zadają często pytanie: „Dlaczego
właśnie Delphi?”. Na rynku dostępnych jest przecież wiele dobrych narzędzi do
tworzenia oprogramowania klient-serwer. Produkty takie jak PowerBuilder, Visual
Basic i inne pakiety zdobyły znaczące udziały w rynku narzędzi programistycz-
nych. Dlaczego ktokolwiek miałby zmieniać jedno z nich na Delphi?
UWAGA:
Wprawdzie fakt, iż jakiś produkt dobrze się sprzedaje, nie musi od razu oznaczać,
że produkt ten reprezentuje wysoki poziom techniczny, jednak wiele osób uważa
czynnik popularności rynkowej za decydujący wskaźnik jakości. Należy zatem
nadmienić, że Delphi sprzedaje się lepiej niż Visual Basic i PowerBuilder. Na
przykład w roku premiery pierwszej wersji Delphi liczba sprzedanych kopii
nowego produktu przekroczyła łączną liczbę sprzedanych egzemplarzy Visual
Basica i PowerBuildera.
Można wskazać wiele powodów, dla których wybór Delphi jest uzasadniony. Jak
już wspomniano, narzędzie to skutecznie łączy mechanizmy programowania
wizualnego z kompilatorem optymalizującym kod. Nie można tego powiedzieć
o większości innych narzędzi typu RAD. Należy pamiętać, że sam fakt obecności
w pakiecie kompilatora, generującego kod maszynowy, nie oznacza jeszcze, iż
wynikowy kod jest optymalizowany. Zarówno PowerBuilder, jak i Visual Basic
w pierwotnej postaci generowały pseudo-kod. Powstałe pliki wynikowe musiały
być interpretowane w trakcie wykonania. W odpowiedzi na pojawienie się Delphi
firmy Microsoft i Powersoft szybko uzupełniły swoje produkty o kompilator
generujący kod maszynowy. Rzecz w tym, że tłumaczenie języka Visual Basic lub
PowerScript na kod maszynowy nie jest prostym zadaniem, gdyż żaden z tych
języków nie był projektowany z myślą o kompilacji. Tym trudniejsza jest
optymalizacja wygenerowanego kodu.
Z drugiej strony, Object Pascal, używany w środowisku Delphi, od zawsze był
językiem kompilowanym. Płynie stąd jeden wniosek: Delphi, jako jedyne
z dostępnych obecnie narzędzi typu klient-serwer, zapewnia wydajność wymaganą
3745125.001.png
27
w najpoważniejszych zastosowaniach. Dla systemów Visual Basic i Power Builder
Delphi jest tym, czym w systemie DOS były dla pakietu Clipper kompilatory
języka C. Sukces Delphi spowodował, że wielu producentów narzędzi do
tworzenia oprogramowania, działającego w modelu klient-serwer, pospiesznie
uzupełnia swoje produkty o mechanizmy kompilacji programów do postaci kodu
maszynowego. Można odnieść wrażenie, że wszyscy starają się „dogonić” Delphi -
który z kolei jest produktem wciąż rozwijającym się.
Kompilator Delphi charakteryzuje się bardzo dobrymi parametrami. Jest on
najmłodszym członkiem rodziny znanych kompilatorów Pascala firmy Borland,
które cieszą się zasłużoną opinią narzędzi generujących wydajne, a jednocześnie
oszczędnie gospodarujące zasobami, programy wynikowe. To samo stwierdzenie
prawdziwe jest także w odniesieniu do kompilatora Object Pascala, zawartego
w pakiecie Delphi. W dodatku w Delphi zastosowano ten sam generator kodu, co
w linii produktów Borland C++. Pozwala to uzyskać wysoką wydajność, kojarzoną
zazwyczaj z językiem C, a jednocześnie uniknąć związanych z tym językiem
utrudnień i komplikacji.
Programistom nie wystarczy jednak samo tylko generowanie kodu maszynowego.
Oczekiwania sięgają dalej i obejmują także platformę tworzenia aplikacji, która
powinna być wystarczająco rozbudowana, by zaspokajała wyszukane potrzeby, ale
jednocześnie nadawała się do realizacji najprostszych zadań programistycznych.
Obiektowa struktura nie powinna wykluczać ewentualnego programowania
fragmentów aplikacji bezpośrednio w assemblerze. Narzędzie programistyczne
powinno umożliwiać generowanie plików EXE, lecz w razie potrzeby - również
bibliotek DLL i sterowników ( driverów) . Szybkie tworzenie aplikacji do obsługi
baz danych nie powinno wiązać się z koniecznością dołączania do każdego
napisanego programu obszernego modułu typu database engine .
Delphi spełnia wszystkie powyższe oczekiwania. Można odnieść wrażenie, że
produkt ten łączy w sobie najlepsze cechy wszystkich nowoczesnych narzędzi
programistycznych dla środowiska Windows. Delphi oferuje obszerną bibliotekę
klas obiektów, która ogranicza konieczność samodzielnego pisania kodu,
występującą często w przypadku innych narzędzi. Nadal jednak możliwe jest
pisanie procedur wassemblerze. Niemal każdą aplikację stworzyć można
w środowisku graficznym przenosząc komponenty na formularz. Nie zamknięto
jednak drogi do bezpośredniego odwoływania się do interfejsu API Windows,
przechwytywania komunikatów lub komunikacji z innymi procesami. Za jednym
naciśnięciem klawisza można wygenerować program typu EXE, działający
w Windows; można jednak również budować biblioteki DLL, sterowniki urządzeń
i aplikacje, działające w trybie znakowym. Wreszcie - mimo że Delphi jest
narzędziem przeznaczonym przede wszystkim do programowania baz danych - da
się przy jego użyciu stworzyć każdą aplikację - od edytora do wygaszacza ekranu.
Nawet Delphi napisano przy użyciu Delphi!
28
Część I
Jeśli dodamy do tego uniwersalne narzędzia i rozbudowany debugger (program
uruchomieniowy), to uzyskamy pakiet niemal bezkonkurencyjny.
Podsumujmy cechy Delphi decydujące oprzewadze tego narzędzia nad
konkurentami:
kompletna biblioteka podstawowych obiektów;
szybki kompilator, generujący kod maszynowy;
doskonały, zintegrowany debugger;
umiarkowanie rozbudowany i prosty w obsłudze mechanizm dostępu do baz
danych;
środowisko tworzenia aplikacji funkcjonujące woparciu orozbudowane
narzędzia komunikacyjne.
W każdej z powyższych dziedzin Delphi bądź to wykazuje znacząca przewagę
technologiczną nad konkurencyjnymi narzędziami, bądź też jako jedyny pakiet
oferuje tego rodzaju rozwiązania.
Programowanie bez ograniczeń
Dociekliwy Czytelnik, który zapoznał się z imponującą listą możliwości i zalet
Delphi, zechce zapewne spytać, czego w omawianym pakiecie brakuje. Czy może
zdarzyć się sytuacja, w której użytkownik Delphi natrafi na barierę nie do
pokonania, wynikającą z ograniczeń wykorzystywanego narzędzia?
Prawdopodobieństwo zajścia takiej sytuacji jest niewielkie. Delphi jest pakietem
w pełni rozszerzalnym. Można go uzupełniać i rozbudowywać na tak wiele
sposobów, że najprawdopodobniej sprosta każdemu zadaniu programistycznemu -
od stworzenia aplikacji do obsługi bazy danych po konstruowanie kontrolek
ActiveX.
Na poniższej liście zebrano cechy Delphi, decydujące o rozszerzalności tego
pakietu:
bezpośredni dostęp do interfejsu API Windows;
wbudowany assembler; obsługa wstawek w assemblerze;
możliwość tworzenia własnych komponentów VCL i ActiveX;
możliwość tworzenia bibliotek DLL i innych dodatkowych obiektów Windows;
tworzenie aplikacji w architekturze wielopoziomowej;
w pełni obiektowa struktura - możliwość dziedziczenia cech istniejących klas
obiektów albo budowania własnych klas od podstaw.
 
29
Należy zwrócić uwagę, że nie wszystkie narzędzia programowania obiektowego
oferują możliwości wymienione w ostatnim punkcie powyższego podsumowania.
Wiele pakietów oferowanych jako zorientowane obiektowo nie spełnia ścisłych
kryteriów, decydujących o zaliczeniu narzędzia do tej kategorii. Możliwość użycia
danych typu „obiekt” nie czyni z pakietu narzędzia programowania obiektowego.
Dostępne wniektórych pakietach mechanizmy programowania obiektowego
oferują bardzo niską wydajność, co wyklucza ich praktyczne wykorzystanie. Aby
narzędzie można było nazwać zorientowanym obiektowo, musi ono spełnić cztery
podstawowe kryteria:
Dziedziczenie - Na bazie istniejących typów obiektów musi dać się tworzyć
nowe typy; musi się to odbywać na drodze dziedziczenia atrybutów i metod.
Polimorfizm - Sposób wywołania metody obiektu nie może zależeć od
rzeczywistego typu obiektu, w którym tę metodę zdefiniowano. Na przykład,
metoda Show wykonuje zupełnie inne czynności przy rysowaniu przycisku
ekranowego, a inne przy rysowaniu tabeli. Mimo to sposób wywołania metody
jest identyczny w przypadku obu tych obiektów. Ponadto, jeśli założyć, że oba
wymienione typy obiektów pochodzą od wspólnego przodka, wywołanie
metody Show przodka za pośrednictwem egzemplarza (instancji) tabeli albo
przycisku powinno spowodować wyświetlenie właściwego obiektu graficznego.
Enkapsulacja - Dane ikod programu powinno dać się umieszczać
w pojedynczych obiektach. Obiekt musi zatem zawierać elementy danych
(podobnie jak rekord) i procedury (zwane metodami ). Procedury zawarte
w obiekcie muszą mieć automatycznie zapewniony dostęp do danych obiektu.
Obiektowość jako pierwotna metoda programowania - Mechanizmy
programowania obiektowego powinny być dla danego narzędzia pierwotną
metodą tworzenia programu. Nie mogą być uzupełnieniem, dodanym z czasem
do istniejącego już produktu. Będąc podstawową metodą tworzenia kodu,
mechanizmy programowania obiektowego powinny zapewniać wydajność
wystarczającą w praktycznych zastosowaniach; w przeciwnym razie należy
poddać w wątpliwość jakość narzędzia, którego pierwotna i podstawowa
metoda tworzenia programu nie oferuje niezbędnej wydajności.
Delphi spełnia powyższe kryteria, podobnie jak C++ iinne środowiska
programowania zorientowanego obiektowo. Niewiele osób pamięta, że kompilator
Pascala firmy Borland był narzędziem zorientowanym obiektowo, zanim jeszcze
odpowiednie mechanizmy pojawiły się w kompilatorach Microsoft C i Borland C.
Mechanizmy programowania obiektowego w Delphi nie są dodatkiem, lecz
podstawą dla całego środowiska. Narzędzia programowania wizualnego, o które
uzupełniono pakiet, pozwalają uniknąć wielu uciążliwości, kojarzonych zazwyczaj
z programowaniem zorientowanym obiektowo.
Zgłoś jeśli naruszono regulamin