Professional Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
O Autorze .........................................................................................................................................................11
Wstp................................................................................................................................................................. 13
Rozdzia 1.
Rozdzia 2.
6
Rozdzia 3.
Rozdzia 4.
Rozdzia 5.
Spis treci
7
Klasy pochodne ...............................................................................................................138
Podstawy ...................................................................................................................139
Wielokrotne klasy bazowe........................................................................................143
Deklaracja using........................................................................................................147
Klasy abstrakcyjne ....................................................................................................149
Podsumowanie ................................................................................................................149
Rozdzia 6.
Rozdzia 7.
Rozdzia 8.
Rozdzia 9.
Rozdzia 10.
Spis treci
9
Tablice.............................................................................................................................314
Struktury..........................................................................................................................316
Klasy................................................................................................................................319
Klasa Object..............................................................................................................320
Metody ......................................................................................................................321
Waciwoci ..............................................................................................................325
Operatory ..................................................................................................................326
Dziedziczenie............................................................................................................331
Interfejsy..........................................................................................................................333
Delegaty ..........................................................................................................................335
Podsumowanie ................................................................................................................336
Rozdzia 11.
Dodatek A
Sowniczek.................................................................................................................................................... 365
Dodatek B
Dodatek C
Celem ksiki jest nauczenie czytelnika programowania w jzyku C, a cilej programowania w jzykach C, C++ oraz C# w celu rozszerzenia moliwoci, jakie oferuje Visual Basic.
Z tego wzgldu przedstawiona poniej historia VB jest ukierunkowana na rozwj narzdzi
programistycznych. Zanim rozpoczniemy nasz wypraw w wiat jzyka C, naley uwiadomi sobie, co nas do niej skonio. Ot historia nieraz ju pokazaa, e kady programista
powinien by elastyczny. Niezalenie od aktualnych tendencji w informatyce czy osobistych
preferencji, prdzej czy pniej pojawia si konieczno zmiany narzdzia programowania
i trzeba by na to przygotowanym. Wane jest, aby w miar moliwoci programowa w najmniejszym wsplnym mianowniku, czyli korzysta z narzdzi uniwersalnych, ktre umoliwi
wykorzystanie stworzonych fragmentw kodu w przyszoci.
Do takich z pewnoci naley czysty jzyk C. Nawet w kodzie rdowym nowoczesnych
32-bitowych obiektw sterujcych, ktre autor ksiki ma w swoim dorobku, wystpuj fragmenty
napisane w klasycznym C, ktre powstay w czasach Visual Basica 1 i 2. Co wane, w nowych
warunkach, poddane niewielkim zmianom, dziaaj rwnie dobrze jak dawniej w rodowisku
16-bitowym.
Rozwamy na przykad programowanie interfejsu graficznego (GDI Graphics Device Interface).
Na ile rnych sposobw mona stworzy kod interfejsu czysty jzyk C, biblioteki MFC,
WFC, procedury graficzne Visual Basica, obecnie klasy .NET i z pewnoci wiele innych,
ktrych nie sposb tutaj wymieni.
Wiele z tych technologii opiera si na abstrakcjach technologii niszego poziomu. W jakim
celu? Zwykle po to, aby uatwi korzystanie z funkcji oferowanych przez warstw niszego
18
poziomu, a take po to, aby umoliwi dokonywanie modyfikacji tej warstwy bez koniecznoci
wprowadzania zmian w programach, ktre z niej korzystaj.
Z drugiej strony, jeli modyfikacjom poddawana jest stale warstwa abstrakcji, zaprzeczamy w ten
sposb jej idei. Przyjdzie co prawda taki moment, kiedy warstwa niszego poziomu (tutaj:
Windows) bdzie wymagaa gruntownej przerbki przestarzaego kodu, musimy jednak przyzna,
e warstwa abstrakcji zmienia si znacznie czciej.
Swego czasu autor ksiki uy czystego C do stworzenia interfejsu GDI dla 16-bitowych
kontrolek VBX. Nadesza era obiektw OLE i powstaa presja, aby zmodyfikowa kod GDI
(i nie tylko GDI) tak, aby korzysta z biblioteki MFC. W pewnym zakresie zmiany te zostay
dokonane. Po jakim czasie pojawia si biblioteka ATL i kolejna potrzeba modyfikacji kodu.
W wikszoci przypadkw powrcono wwczas do 16-bitowego kodu w C i poddano go konwersji. Kod ten by prostszy i atwiejszy w zastosowaniu ni kod wykorzystujcy MFC. W tej
postaci prawdopodobnie ju pozostanie, gdy nie przewiduje si jego kolejnej modyfikacji
w zwizku z pojawieniem si nowej technologii (.NET).
Uwaga
Termin .NET odnosi si do najnowszego rodowiska programistycznego firmy Microsoft.
Programy stworzone za pomoc tego systemu uruchamiane s we wsplnym rodowisku
uruchomieniowym CLR (Common Language Runtime). Wszystkie funkcje udostpniane
przez platform systemow zostay zawarte w bibliotekach klas utworzonych w dostpnych
jzykach (zwykle jest to C#, VB.NET lub C++), ktre wykorzystuj CLR.
Oczywicie postpujc w ten sposb, traci si moliwo uruchomienia kodu na wielu platformach. Co moe istotniejsze, rezygnuje si rwnie z zalet, jakie zapewnia mechanizm kodu
zarzdzanego (managed code) w technologii .NET. Naley wic rozway, czy korzyci, jakie
daoby zastosowanie najnowszych technologii, zrekompensuj koszt modyfikacji kodu.
Dziki rodowisku CLR programici maj z pewnoci wicej moliwoci programowania
wieloplatformowego, lecz nie naley chyba oczekiwa boomu wieloplatformowych aplikacji.
Programici bd prawdopodobnie nadal tworzy kod specyficzny dla konkretnej platformy
uruchomieniowej, aby mc w peni wykorzysta jej moliwoci. Tak wic wspomniane wyej
fragmenty kodu w C, skadajce si na kod rdowy 32-bitowych komponentw, pozostan
chyba bezpieczne.
Dziki Internetowi nastpi jednak zwrot w kwestii wieloplatformowoci. Wikszo kodu
aplikacji internetowych wykonywana jest bowiem przez przegldarki, ktre zapewniaj (lub
przynajmniej powinny zapewnia) niezaleno od platformy systemowej. Cz kodu znajdujca si natomiast po stronie serwera (odpowiedzialna za dostarczanie interfejsu aplikacji do
przegldarek uytkownikw) nie musi by przecie niezalena od platformy. Uruchamiana
jest bowiem na wydzielonym serwerze pod kontrol systemu NT, UNIX lub jego pochodnych.
Aplikacja stworzona dla konkretnej platformy systemowej generuje uniwersalny kod HTML
(w idealnym przypadku).
W praktyce, oczywicie, rzadko ograniczamy si do zwykego jzyka HTML. W celu uzyskania podanego efektu sigamy po jzyk DHTML, skrypty czy te wykorzystujemy obiekty
sterujce po stronie klienta. W wielu przypadkach ograniczamy w ten sposb liczb typw
przegldarek, ktre potrafi obsuy nasz witryn i zaoferowa uytkownikowi wszystkie jej
funkcje i moliwoci. atwo si w tej sieci zaplta.
19
rodowisko 16-bitowe
Nasz histori musimy rozpocz od systemw 16-bitowych, poniewa pocztki Visual Basica zwizane s wanie z takim rodowiskiem. Trzy pierwsze edycje VB przeznaczone byy
dla wersji 16-bitowych. Dopiero Visual Basic 4 by wersj 32-bitow.
Zwrot gee wiz (wac. gee whiz) w potocznej angielszczynie (USA) wyraa zaskoczenie lub entuzjazm,
w wolnym tumaczeniu odpowiadaj mu polskie: ojej!, rety! przyp. tum.
Z angielskiego: grzmot, grom przyp. tum.
20
Narodzia si bowiem koncepcja niestandardowych kontrolek (custom controls). Byy to pocztki programowania opartego na komponentach, w formie jak znamy obecnie.
W pierwszym zestawie firmy MicroHelp znalazo si kilka ciekawych i popularnych kontrolek.
Jednym z nich byo pole listy z moliwoci wielokrotnego wyboru, podczas gdy pierwsze
pole listy Visual Basica pozwalao na zaznaczenie tylko jednego elementu. Zestaw suwakw
cechowa si cig reakcj, natomiast oryginalne suwaki Visual Basica aktualizoway swoj
warto dopiero po zwolnieniu przycisku myszy. Jak te czasy si zmieniaj...
Idea programowania opartego na komponentach zapocztkowaa rozwj najwikszego rynku
dodatkw do kompilatorw, jaka kiedykolwiek istniaa.
Oprcz komponentw, w Visual Basicu 1 programici Basica zetknli si po raz pierwszy z ide
programowania przez zdarzenia (ang. event-driven programming). Do tej pory nie mieli raczej
takiej okazji, chyba e kto zajmowa si konstrukcj oprogramowania jzyka C/SDK.
Dla programistw przechodzcych z systemu DOS do Windows programowanie przez zdarzenia
byo zupen nowoci. I wanie dziki VB liczba przesiadajcych si na system Windows
bya pokana. Ni std, ni zowd programici, ktrzy do tej pory nie marzyli nawet o programowaniu w Windows, otrzymali tak szans i wielu z niej skorzystao. To dopiero rewolucja.
Pierwszymi komponentami byy obiekty VBX. Mimo e w porwnaniu do dzisiejszych komponentw byy nieco prymitywne, miay wiele zalet. Ich tworzenie przebiegao stosunkowo prosto.
Posiaday dane egzemplarza oraz dane wspdzielone. Byy pierwszymi elementami programowania, dla ktrych mona byo definiowa niestandardowe waciwoci i zdarzenia. Obiekty
VBX miay posta 16-bitowej biblioteki DLL wraz ze wszystkimi jej zaletami i wadami.
W rodowisku 32-bitowym biblioteki DLL umieszczane s w przestrzeni pamici programu
wykonywalnego. Biblioteki 16-bitowe adowane byy natomiast do pamici tylko przy pierwszym
wywoaniu. Co prawda zachodziy przy tym komplikacje z segmentem danych oraz stosem,
lecz waciwo ta miaa rwnie swoje zalety. Dziki niej 16-bitowe biblioteki DLL mogy
suy do realizacji szybkiej komunikacji midzyprocesowej. Mona byo bowiem wykorzysta fakt, e w pamici obecny jest tylko jeden egzemplarz biblioteki i wsplna dla programw przestrze danych, i odpowiednio dostosowa swj kod.
Okazuje si, e to wanie 16-bitowe biblioteki DLL byy najblisze pierwotnej koncepcji biblioteki doczanej dynamicznie. Przewodni ide, jaka przywiecaa jej twrcom, bya
oszczdno miejsca, zarwno w pamici, jak i na dysku. Z biegiem czasu mielimy do czynienia ze staym wzrostem poziomu zoonoci obsugi bibliotek DLL (niezalenie od tego,
czy nazywano je obiektami VBX, OCX, COM czy jeszcze inaczej). Obecnie inicjatywa firmy
Microsoft w postaci technologii .NET zdaje si by zwrotem ku czasom, kiedy biblioteki nie
byy rejestrowane, lecz umieszczane razem z plikami EXE.
Pod hasem rozwizywania problemu okrelanego mianem DLL Hell (Pieko DLL)
wprowadzano coraz to nowe innowacje, ktre pogbiay zoono mechanizmu DLL, a ktrych
wikszo bya zupenie niepotrzebna. Aby rozwiza ten problem, naleao przede wszystkim
instalowa prywatne biblioteki DLL we wsplnym katalogu z programem, ktry z nich korzysta. W przypadku rodowiska 16-bitowego nie rozwizao to jednak problemu pieka DLL,
gdy tylko jedna kopia biblioteki DLL moga znajdowa si w danej chwili w pamici. W efekcie
mielimy do czynienia z czstym zjawiskiem zawieszania si programw w obecnoci innych
dziaajcych aplikacji.
21
Rozwamy nastpujcy przykad: 16 bitowy program aduje bibliotek DLL wymagan przez
inn aplikacj. Moe to by wczeniejsza wersja biblioteki, ktra nie jest zgodna z tym drugim
programem. Jeli teraz uruchomiony zostanie program korzystajcy z nowszej wersji biblioteki,
w pamici obecna bdzie jej starsza, niewaciwa wersja zaadowana przez pierwsz aplikacj.
Problem ten nie dotyczy programw 32-bitowych, poniewa w ich przypadku biblioteki DLL
umieszczane s w przestrzeni kodu danego programu, mog wic ze sob wspistnie. Warunek jest tylko jeden musz zosta zapisanie na dysku w sposb gwarantujcy zaadowanie
odpowiedniej wersji biblioteki.
W rodowisku 32-bitowym umieszczenie biblioteki wraz z plikiem EXE daoby wic pozytywny
rezultat. Rne wersje bibliotek DLL mog bowiem zosta umieszczone w pamici i nie
przeszkadza sobie nawzajem. Wprowadzenie rejestru wraz z ca jego zoonoci i kopotami stanowio wic rozwizanie problemu, ktry ju nie istnia.
Lecz zanim przesidziemy si na platform 32-bitow, musimy jeszcze pozna kilka faktw
zwizanych z platform 16-bitow.
Visual Basic 2
Ulepszenia dokonane w drugiej wersji VB nie byy co prawda znaczne, lecz wprowadzona zostaa midzy innymi wyjtkowa moliwo amania obiektw sterujcych. Opisany wyej
problem pieka DLL coraz bardziej dawa si programistom we znaki. Prawdopodobnie to
wanie wtedy w firmie Microsoft zdecydowano, e wszystkie informacje naley przenie do
rejestru, a na dysku pozostanie tylko jedna kopia kadej biblioteki DLL umieszczona w katalogu systemowym. Sprawy przybray zy obrt.
Jako zalet Visual Basica 2 mona wskaza moliwo uycia kolorw w trybie high-color
w obrbie kontrolek. Wwczas okrelano to mianem obsugi trybu 256-kolorowego, lecz najwaniejszy by sposb obsugi palety dla kontrolki zawierajcej obraz. Oczywicie, zapewniaa
ona operacje na wikszej liczbie kolorw ni 256. Nadal mona byo jednak korzysta wycznie z bitmap, ikon oraz metaplikw. Sytuacja ta nieprdko miaa si zmieni.
Inn nowoci VB 2 byy kontrolki w wersji light (light controls). Wszystkie komunikaty
przeznaczone dla tych kontrolek docieray do nich za porednictwem formularza lub innego
obiektu, na ktrym owa lekka kontrolka zosta umieszczony. Poniewa kontrolki te nie posiaday uchwytu okna, zarzdzanie nimi byo nieco skomplikowane.
Wraz z jzykiem Visual Basic 2 pojawia si funkcja VBFormat, dostpna z poziomu kodu C
w obrbie obiektu VBX. Umoliwia ona formatowanie acuchw za pomoc procedur Visual
Basica. Cecha ta przydawaa si w przypadku wielu kontrolek, lecz jej dziaanie byo ograniczone
wycznie do Visual Basica.
Powrmy teraz do zmian, ktre day moliwo amania kontrolek. W przypadku gdy nasza
kontrolka korzystaa z funkcji Visual Basica 2, musiaa sprawdza wersj VB i ogranicza
w jaki sposb swoje moliwoci podczas pracy w Visual Basicu 1. Wydaje si to cakiem
oczywiste, lecz w zalenoci od funkcji danego obiektu nie zawsze takim byo.
22
Ponadto niektre waciwoci kontrolki mog by zwizane z funkcjami dostpnymi wycznie w VB 2. Problem pojawi si moe kilka miesicy po utworzeniu kontrolki, gdy zechcemy
doda do niego jak waciwo, ktra dziaa powinna w kadej wersji VB. Na drodze staj
wwczas waciwoci obsugiwane wycznie przez Visual Basic 2. W VB 1 naley zastpi
te waciwoci ich atrapami, aby umoliwi dziaanie kontrolki.
Visual C++ 1
Kontrolki dla Visual Basica 1 oraz 2 byy tworzone za pomoc DOS-owego edytora i DOSowego kompilatora C++ (przynajmniej tak postpowa autor niniejszej ksiki). Kompilowane
byy z linii polece i testowane przy uyciu programu CodeView. Wszystko ulego zmianie
wraz z pojawieniem si Visual C++ 1.5.
Warto przede wszystkim wspomnie o Visual C++1.52, ktry obsugiwa (chocia obsuga ta
bya bardzo skromna) niestandardowe kontrolki, poniewa ma to zwizek z nasz dyskusj na
temat programowania komponentw. Trzeba rwnie wymieni t wersj tylko z tego wzgldu,
e dziki niej zostaa zachowana do dzi pierwotna specyfikacja niestandardowych kontrolek
Visual Basica w wersji 1.0. W skadzie aktualnego pakietu dystrybucyjnego MSDN jzyk
C++1.52 wystpuje jako obowizujca realizacja 16-bitowego C++.
Z biegiem lat programici powoli zapominali o tym, e pewne procedury nie byy zgodne z pierwsz wersj Visual Basica. Niby nie ma si czym przejmowa, gdy Visual Basic 1.0 dawno ju
przeszed do historii, prawda? Niezupenie! W chwili pojawienia si Visual Basica 2.0 wersja
1.0 bya nadal bardzo rozpowszechniona. Mniej wicej w tym samym czasie Microsoft podj
decyzj o rozszerzeniu jzyka C++ o obsug standardu VBX. Zadecydowano, e obsuga ta
bdzie zgodna ze specyfikacj Visual Basica 1.0. Kto mg wtedy przewidzie, e bdzie to
ostatnia 16-bitowa wersja Visual C++. Tym samym specyfikacja kontrolek Visual Basica 1.0
przetrwaa nadal w VC++ 1.52. Tak wic pierwsza edycja Visual C++ okazaa si jednoczenie
jego ostatni 16-bitow wersj.
Visual Basic 3
Wersja ta bya wiadectwem postpu w tej dziedzinie. Wyposaono j bowiem w mechanizm
obsugi bazy danych. W porwnaniu do moliwoci systemu SQL Server lub innego zaawansowanego mechanizmu bazy danych nie bya to waciwie pena obsuga, lecz mimo to wielu
programistw z niej korzystao.
Innowacj w zakresie niestandardowych kontrolek byo pojawienie si po raz pierwszy moliwoci
wizania danych (data binding). Mechanizm ten by jednak stosunkowo prymitywny i nie wykorzystywano go w powanych projektach realizowanych w jzyku Visual Basic 3.
Wikszo osb programujcych w Visual Basic 3 nadal korzystaa ze znacznego wsparcia
w postaci narzdzi dostarczanych przez niezalene firmy. Przykadowo w 16-bitowej wersji
programu UnInstaller firmy MicroHelp zastosowano 13 niestandardowych kontrolek VBX
oraz kilka bibliotek DLL stworzonych w jzyku C. W przypadku wersji 32-bitowej sytuacja
bya cakiem inna, poniewa 32-bitowe rodowisko programistyczne oferowao znacznie wicej
standardowych narzdzi.
23
W opinii autora ksiki Visual Basic 3 jest najlepsz 16-bitow wersj tego jzyka. Jeli istnieje potrzeba stworzenia kodu 16-bitowego, to naley skorzysta wanie z tej wersji Visual
Basica. Do czasu pojawienia si Windows 2000 kod stworzony za jego pomoc spisywa si
nawet lepiej na wielu platformach (WIN9X/NT) ni niejeden 32-bitowy. Zawdziczano to
cakiem niezej emulacji rodowiska 16-bitowego, jak oferowa Windows NT, oraz istnieniu
do powanych rozbienoci pomidzy WIN9X a NT po stronie 32-bitowej, ktre byy przyczyn problemw ze zgodnoci w przypadku programw 32-bitowych.
Visual Basic 4
W zakresie programowania 16-bitowego Visual Basic 4 okaza si porak. Dodano wprawdzie obsug 16-bitowego standardu OLE, ale waciwie nie wiadomo, po co Microsoft zada
sobie cay ten trud. W owym czasie Microsoft opuszcza ju platform 16-bitow, wic 16bitowy Visual Basic 4, a szczeglnie jego dodatkowe narzdzia, nigdy nie zostay dokadnie
przetestowane.
Tak wic czwarta wersja VB nigdy nie staa si powanym narzdziem programistycznym dla
rodowiska 16-bitowego. Z powodu przerobienia kodu i zastosowania mechanizmu OLE, w wielu
przypadkach okazywaa si wolniejsza w porwnaniu do analogicznego kodu stworzonego
w Visual Basicu 3.
Visual Basic 4 w wersji 16-bitowej obsugiwa standard VBX. Obsugiwa rwnie 16-bitowe
kontrolki OLE (OLE Controls), czyli kontrolki OCX. Technologia ta narodzia si i nadal
umiera wraz z VB4-16. Specyfikacja VBX nie zostaa poddana modyfikacji w jzyku Visual Basic 4, wic ostatnia jej wersja dotyczy Visual Basica 3.
Z uwagi na fakt, e jest to najbardziej aktualna wersja 16-bitowego jzyka Visual Basic,
obowizujcymi do dzi standardami dla rodowiska 16-bitowego s: specyfikacja VBX z Visual
Basica 3 oraz specyfikacja 16-bitowych obiektw OCX z VB4. Tak wic jedyn 16-bitow
specyfikacj kontrolek Visual Basica, ktra zostaa cakowicie wycofana, jest wersja 2 standardu
VBX. Wszystkie pozostae przetrway do dzi VBX 1.0 w Visual C++ 1.52, VBX 3.0 oraz
16-bitowe OCX w Visual Basicu 4.
24
Microsoft jasno da do zrozumienia, e cieka dalszego rozwoju zwizana bdzie ze rodowiskiem 32-bitowym. Dziwi zatem fakt, e firma w ogle wzia pod uwag 16-bitow wersj tego
kompilatora. Visual Basic 3 by 16-bitowym rodowiskiem o cakiem sporych moliwociach.
Tylko nieliczne zadania wymagay uycia Visual Basica 4-16, gdy nie mona ich byo zrealizowa w VB 3. Jedynie w takich przypadkach warto byo sign po Visual Basica 4.
Jedn z takich nowoci by mechanizm automatyzacji OLE (OLE automation). Visual Basic 3 nie
posiada wbudowanej obsugi tej technologii. Jeli wymagane byo stworzenie 16-bitowego
serwera automatyzacji OLE, pomocny okazywa si VB 4. Jednym z zastosowa 16-bitowej
automatyzacji mogo by stworzenie swego rodzaju thunkera (thunking to metoda umoliwiajca wywoywanie procedur z 16-bitowych bibliotek DLL z poziomu 32-bitowego kodu3).
System nie dokonywa bowiem sprawdzenia, czy serwer automatyzacji OLE jest 16- czy 32bitowy, nie byo wic przeszkd do wykorzystania 16-bitowego serwera automatyzacji OLE
z poziomu programu 32-bitowego.
Mechanizm automatyzacji OLE Visual Basica 4 dawa zatem moliwo uycia 16-bitowego
kodu z poziomu 32-bitowego programu. Nie by to oczywicie najszybszy sposb wywoywania
procedur, wic w miar moliwoci lepiej byo stosowa prawdziwy thunking. Thunking jest
jednak silnie zaleny od platformy systemowej, natomiast automatyzacja OLE przeciwnie.
Mona oczywicie podawa powody, dla ktrych warto byo uy Visual Bascia 4-16, lecz
realna konieczno pojawiaa si bardzo rzadko, a sama platforma sprawiaa zbyt duo problemw. Nie warto byo si zatem przesiada na VB4-16 bez wyranego powodu. Znacznie
lepszym rozwizaniem dla programisty bya bezporednia migracja do wiata 32 bitw.
rodowisko 32-bitowe
rodowisko programowania WIN32 jest dzi miejscem pracy dla wikszoci z nas. Pozostao
niewiele zada realizowanych z wykorzystaniem 16-bitowych technologii jzyka Visual Basic.
Visual Basic 4
Jak ju wczeniej wspomniano, w czwartej wersji Visual Basica najwikszy nacisk pooono
na oprogramowanie dziaajce w rodowisku 32-bitowym. Ten kompilator nie by niczym
niezwykym w porwnaniu do postpw dokonanych w wersji 3.
Visual Basic 4 by pierwsz prb przeniesienia tego jzyka na platform 32-bitow. Kompilator
ten oferowa ponadto niewiele funkcji, aby warto byo z niego korzysta. Nadal by jedynie
kompilatorem pseudokodu.
25
Visual Studio 6
W Visual Basicu 6 wzbogacono moliwoci dostpu do danych. Dodano rwnie nowe kontrolki oraz narzdzia w formie kreatorw. Jednake rodowisko programistyczne nie ulego
zasadniczej zmianie w porwnaniu do jego pitej wersji.
26
W Visual Basicu 6 pojawia si funkcja raportowania. Trzeba przyzna, e nie bya to rewelacja,
o czym wiadczy chociaby fakt, e sam Microsoft w technologii .NET powrci do narzdzi
firmy Crystal4. Cakiem udan nowoci byo natomiast wprowadzenie struktury hierarchicznej
do zestawu rekordw oraz komponentu FlexGrid. Hierarchiczne zestawy rekordw zdobyy
wielu zwolennikw.
Inn przydatn innowacj bya moliwo tworzenia rde danych. Rozczone zestawy rekordw oraz moliwo przekazywania zestawu rekordw w wywoaniu procedury, nawet
pomidzy procesami, oznaczay wyrany postp. Umoliwiao to prost konstrukcj wielowarstwowego kodu (multi-tier code).
Z punktu widzenia autora tej ksiki najbardziej poyteczn zmian w Visual Studio 6 byo
pojawienie si trzeciej wersji biblioteki ATL. Od tej pory tworzenie kontrolek w tej technologii
stao si praktyczniejsze i atwiejsze w porwnaniu do wczeniejszych wersji ATL.
Mona by jeszcze wymieni kilka zmian, jakie dokonane zostay w Visual Studio 6, lecz adna
z nich z pewnoci nie okazaa si rewelacj. Po rekompilacji projektu stworzonego w Visual
Basicu 5 nie czekao nas nic szczeglnego. Ot, zwyka codzienno.
.NET
Najnowsza technologia pochodzca z firmy Microsoft burzy dotychczasowe reguy. Jedynie
jzyk Visual C/C++ funkcjonuje zasadniczo tak jak dawniej. Nie ma ju ani Visual J++, ani
Visual Interdev, a Visual Basic zosta oparty na modelu klas (tak jak wszystkie jzyki .NET).
To nie jest ju stary, poczciwy Visual Basic, znany nam do tej pory. Wymagany jest poziom
zaawansowania, jakiego VB nigdy dotd nie wymaga. Konieczne jest rwnie dostosowanie
lub wrcz ponowne napisanie wikszoci fragmentw kodu w celu uruchomienia ich na nowej
platformie.
Gdy Microsoft poinformowa, e Visual Basic korzysta bdzie z mechanizmu dziedziczenia
implementacji, wydawao si, e bdzie to opcjonalna moliwo (podobnie jak w Visual C++).
Mona przecie programowa zarwno w C, jak i w C++. Nic podobnego. Jzyki .NET oparte
zostay na klasach i jest to jedyna akceptowana metoda programowania.
Podobnie jest z jzykiem C#. Migracja ze rodowiska Visual Basic 6 do Visual Basic .NET moe by rwnie trudna, co bezporednie przejcie na jzyk C#. Wielce prawdopodobne jest, e wielu
programistw wanie tak postpi przesidzie si wprost na jzyk C#.
Jeli podnosimy kwesti programowania w jzykach, ktre korzystaj ze wsplnego rodowiska
uruchomieniowego CLR (Common Runtime Language), to poruszamy zagadnienie tworzenia
kodu zarzdzanego oraz kodu niezarzdzanego. Kod zarzdzany (managed code) dziaa pod
kontrol rodowiska CLR; nosi tak nazw, poniewa rodowisko zwalnia programist z obowizku odmiecania (ang. garbage) pamici z niepotrzebnych obiektw i wykonuje za niego
ca niewdziczn prac. Kod niezarzdzany natomiast to klasyczny kod wykonywany poza
4
Przypis: Crystal Reports jest obecnie najczciej uywanym narzdziem do tworzenia raportw, wiecej
mona znale na stronie http://www.crystaldecisions.com/
27
rodowiskiem CLR. W jzykach C oraz C++ tworzy mona kod niezarzdzany (chocia dostpne s rozszerzenia do C++ umoliwiajce tworzenie kodu dla CLR), natomiast w Visual
Basicu oraz w C#, ktre korzystaj z nowej technologii, tworzony jest kod zarzdzany.
28
W Visual Basicu moliwa jest natomiast konwersja typw. Automatyczna konwersja typu
zmiennej przeprowadzana jest wszdzie tam, gdzie kompilator uzna to za waciwe. Poniewa mechanizm taki stanowi potencjalne rdo niezamierzonych bdw, lepiej jest dokonywa jawnej konwersji zmiennych. Nie naley myli zmiennych typu Variant oraz mechanizmu
konwersji typw z tzw. lun kontrol typw (loose typing), poniewa jedno z drugim nie ma
nic wsplnego. Zarwno dla zmiennych typu Variant, jak i dla konwersji typw zdefiniowany
jest cisy zbir zasad dotyczcych konwersji, natomiast w przypadku lunej kontroli typw
takie reguy nie istniej.
Szybko i wydajno
Stale podejmuje si temat szybkoci kodu Basica. Jzyk ten nigdy nie pozby si etykiety zabawki, ktr przypito mu z powodu interpretowanego Basica, dziaajcego na oryginalnym
komputerze PC pod kontrol systemu DOS. Pierwsze wersje VB rzeczywicie potwierdzay
opini o maej szybkoci Basica. Swoje wolniejsze dziaanie Visual Basic zawdzicza tzw.
pseudokodowi (P-code), na ktry tumaczone byy programy (zamiast tego powinny zosta
poddane kompilacji do postaci wykonywalnej).
29
30
Dziedziczenie implementacji
Mechanizm dziedziczenia implementacji jest popularn strategi programistyczn, pozwalajc
na korzystanie ze wsplnych metod zaimplementowanych w klasie bazowej przez podklasy,
31
ktre si z niej wywodz. Dziki dziedziczeniu znacznie prociej jest ponownie wykorzysta
wasn prac.
Dziedziczenie implementacji zawsze dawao przewag Visual C nad Visual Basiciem. Przeom
nastpi wraz z wprowadzeniem technologii .NET, dziki ktrej programici Visual Basica po
raz pierwszy w historii otrzymali moliwo korzystania z dobrodziejstw tego mechanizmu.
32
G Waciwie nic nie jest proste to jest cena, ktr si paci za elastyczno jzyka.
Jzyk C#
Jzyk C# jest najnowsz propozycj firmy Microsoft z rodziny jzykw C. Poniewa analogicznie
do innych jzykw w technologii .NET bazuje on na wsplnym rodowisku uruchomieniowym
CLR, nie jest kolejn wersj C w tradycyjnym rozumieniu.
Nieco dziwnym wydaje si fakt, e Microsoft pozostawi moliwo tworzenia kodu niezarzdzanego w C oraz C++, a nie przewidzia takiej opcji dla Visual Basica. Wiele osb preferujcych
starego Basica moe zrezygnowa ze zmiany wersji Visual Studio wanie z powodu jego
braku wrd nowych jzykw.
W jaki sposb jzyk C# mieci si w ramach naszego celu, jakim jest nauka programowania w C
oraz C++? Jest wielce prawdopodobne, e programici, ktrzy przesid si z Visual Basica
na platform .NET, wybior wanie jzyk C#. Dlaczego? Poniewa wierno Visual Basicowi nie ma ju specjalnego uzasadnienia. Skadnia klas w C# jest prostsza i bardziej logiczna
w porwnaniu do VB.NET. Ponadto s zadania, ktrych realizacja jest moliwa w C#, przeciwnie ni w Visual Basic .NET.
Jzyk C# w porwnaniu do VB.NET ma podobne zalety. Wyposaony bdzie w ten sam modu projektanta co Visual Basic; rwnie rodowisko uruchomieniowe jest wsplne dla obu
jzykw. Najwiksze rnice pomidzy jzykami .NET dotyczy bd skadni.
Jzyk C# odziedziczy po C++ wiele zalet i wad. Najistotniejsz rnic jest fakt umieszczenia C# na szczycie wielkiego rodowiska uruchomieniowego (CLR). Bdzie to miao niewtpliwie wpyw na jego wydajno oraz na atwo dystrybucji.
Jzyk C# ma wielk szans, aby sta si przyszoci narzdzi programistycznych firmy
Microsoft. Bdzie to podstawowy jzyk technologii .NET, a take ten najczciej uywany
wewntrznie w firmie Microsoft.