[ Pobierz całość w formacie PDF ]
.Tego rodzaju metody nazywa siê wirtualnymi.Zauwa¿my, ¿e konstrukcja taka nie pozwala na zwi¹zanie wywo³ania operacji z jejmetod¹ w fazie kompilacji, poniewa¿ postaæ wywo³ania jest dok³adnie taka samadla ka¿dej operacji w ca³ej hierarchii klas.Dopiero w fazie wykonania, gdyzostanie utworzony obiekt odpowiedniej klasy, mo¿na wywo³aæ metodê wirtualn¹dla tego obiektu.Jêzyk C++ zawiera wszystkie wymienione cechy, a ponadto takie, które czyni¹ gobardzo efektywnym; dziêki temu staje siê de facto standardem przemys³owym.Defacto, poniewa¿ dotychczasowe prace komitetów normalizacyjnych ANSI X3J16 orazISO WG-21 doprowadzi³y jedynie do opublikowania w roku 1994 zarysu standardu.Tekstem Ÿród³owym dla obu komitetów by³a wyk³adnia jêzyka, opublikowana wksi¹¿ce Margaret Ellis i twórcy C++, Bjarne Stroustrupa, The Annotated C++Reference Manual [2].Pierwotnym zamys³em Stroustrupa by³o wyposa¿enie bardzo efektywnego jêzyka C wklasy, wzorowane na klasach Simuli.Zrealizowa³ go w roku 1980, konstruuj¹cpreprocesor rozszerzonego w ten sposób jêzyka C.Nowy jêzyk, nazwany “C withclasses”, by³ wtedy traktowany raczej jako dialekt jêzyka C, chocia¿ zawiera³ju¿ wiêkszoœæ cech jêzyka C++ (dziedziczenie, kontrola dostêpu, konstruktory idestruktory, klasy zaprzyjaŸnione, silna typizacja).W latach 80-tychStroustrup wraz z grup¹ wspó³pracowników wprowadza³ dalsze mechanizmy ikonstrukcje jêzykowe (funkcje rozwijalne, argumenty domyœlne, przeci¹¿anieoperatorów i funkcji, referencje, sta³e symboliczne, zarz¹dzanie pamiêci¹,dziedziczenie mnogie, funkcje wirtualne, szablony klas i funkcji, obs³ugawyj¹tków), co wraz ze œciœlejsz¹ kontrol¹ typów doprowadzi³o jêzyk C++ doobecnego kszta³tu.C++ jest jêzykiem wysoce modularnym; ka¿dy program mo¿na zdekomponowaæ naoddzielnie kompilowane modu³y z publicznym interfejsem i ukryt¹ implementacj¹.I odwrotnie: do ka¿dego programu mo¿na do³¹czaæ wczeœniej opracowane modu³y,przechowywane na dysku w postaci tzw.plików nag³Ã³wkowych.Kluczowym pojêciem w C++ jest klasa, traktowana jako typ definiowany przezu¿ytkownika.W definicji jêzyka nie przewidziano standardowej biblioteki klasjako czêœci œrodowiska programowego, chocia¿ opracowanie [4], sygnowane przezAT&T, zawiera opis i sposób korzystania z bibliotek wejœcia/wyjœcia.W praktycemo¿na wiêc spotkaæ wiele bibliotek klas, opracowanych niezale¿nie od standarduAT&T, jak np.– bibliotekê NIH (USA, National Institutes of Health), wzorowan¹ na bibliotecejêzyka Smalltalk;– bibliotekê Interviews, która pozwala na dogodne u¿ywanie systemu X Window zpoziomu C++;– bibliotekê GNU C++ (g++), opracowan¹ w ramach projektu GNU;– biblioteki dla tworzenia obiektów trwa³ych (POET, ObjectStore, ONTOS,Versant).– biblioteki specjalizowane, jak np.RHALE++ (dla obliczeñ matematycznych wfizyce), SIMLIB (dla symulacji sieci prze³¹czanych).Z bie¿¹cych informacji wynika, ¿e komitety ANSI/ISO przyjê³y ju¿ standardy dlanastêpuj¹cych klas bibliotecznych: array (szablon tablic), dynarray (szablontablic dynamicznych), string (szablon ³añcuchów), wstring (szablon ³añcuchów zrozszerzonym kodem znaków), bits (szablon zbioru bitowego o ustalonejlicznoœci), bitstring (szablon zbioru o zmiennej licznoœci) i complex (liczbyzespolone).W najbli¿szym czasie mo¿na siê spodziewaæ przyjêcia standardów dlaszablonów klas: vector, list i associative array (map).Ze wzglêdu na brak niektórych standardów, biblioteki klas s¹ u¿ywane wniniejszej ksi¹¿ce raczej oszczêdnie; prawie wy³¹cznie bêd¹ to bibliotekiwejœcia/wyjœcia z bardzo nielicznymi odstêpstwami.Dziêki temu zamieszczone wtekœcie przyk³ady (a jest ich ponad 160) by³y kompilowane i wykonywane zarównow œrodowisku Windows’95 (kompilator Borland C++, wersja 5.01, kompilator VisualC++ v.4.0), jak i w œrodowisku Unix (kompilatory CC, GNU gcc, GNU g++,v.2.8.1).Prezentowany tekst nale¿y traktowaæ raczej jako wstêp do programowania w jêzykuC++, a nie jako wyczerpuj¹cy podrêcznik (zarówno w sensie kompletnoœci wyk³adu,jak i znu¿enia potencjalnego czytelnika).W stwierdzeniu tym nie nale¿yupatrywaæ samokrytyki; w ksi¹¿ce o rozs¹dnej objêtoœci mo¿na dok³adnie opisaæsk³adniê i semantykê jêzyka C++, ale pragmatyka mo¿e mieæ potencjalnie (i ma)tak wiele kontekstów, ¿e nie jest praktycznie mo¿liwe opisanie wszystkichmo¿liwych wariantów i niuansów.Chocia¿ jêzyk C++ zosta³ “nadbudowany” nad jêzykiem C, zrozumienieprezentowanego tekstu, przyk³adów i programów, nie wymaga umiejêtnoœciprogramowania w jêzyku C.Tym niemniej za³o¿ono, ¿e czytelnik ma pewnedoœwiadczenia programistyczne w którymœ z jêzyków wysokiego poziomu, jak np.Pascal, Modula-2, czy wreszcie wspomniany jêzyk C.Bardzo polecam uwa¿neprzestudiowanie zamieszczonych przyk³adów; poniewa¿ zdecydowana wiêkszoœæ znich to kompletne programy, warto je skompilowaæ i wykonaæ w dostêpnymœrodowisku programowym.S¹dzê, ¿e towarzysz¹ce przyk³adom dyskusje i analizyprogramów oka¿¹ siê interesuj¹ce nie tylko dla pocz¹tkuj¹cych, ale i dlazaawansowanych programistów, których uwadze polecam rozdzia³y 10 i 11,poœwiêcone obs³udze wyj¹tków i dynamicznej kontroli typów.Zawarte w tychrozdzia³ach opisy i dyskusje oparto na ostatnich ustaleniach wspomnianychkomitetów ANSI/ISO, a kompilacja i wykonanie programów wymagaj¹ dostêpu donajnowszych kompilatorów, np.Borland C++ w wersji 5.01 lub CC w wersji 4.Gdañsk, w sierpniu 1998 W.M.Porêbski
[ Pobierz całość w formacie PDF ]
Darmowy hosting zapewnia PRV.PL