c++. inżynieria programowania cała książka.pdf

(86959 KB) Pobierz
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
IDZ DO
PRZYK£ADOW Y ROZDZIA£
C++. In¿ynieria
SPIS TRECI
programowania
Autor: Victor Shtern
T³umaczenie: Daniel Kaczmarek (rozdz. 1 – 6), Adam
Majczak (rozdz. 7 – 11), Rafa³ Szpoton (rozdz. 12 – 19)
ISBN: 83-7361-171-1
Format: B5, stron: 1084
KATALOG KSI¥¯EK
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
Naucz siê jêzyka C++ w najlepszy sposób: poznaj¹c go z punktu widzenia
in¿ynierii programowania
• Demonstruje praktyczne techniki stosowane przez zawodowych programistów
• Zawiera poprawny, gruntownie przetestowany przyk³adowy kod ród³owy
programów oraz przyk³ady zaczerpniête z praktyki
• Skoncentrowana na nowoczesnych technologiach, które musz¹ poznaæ programici
• Zawiera rady profesjonalistów, które pozwol¹ czytelnikowi tworzyæ
najlepsze programy
Ksi¹¿ka Wiktora Shterna zatytu³owana „C++. In¿ynieria programowania” stosuje wyj¹tkowy
sposób nauki jêzyka C++ przeznaczony dla programistów maj¹cych dowiadczenie
w dowolnym jêzyku programowania: prezentuje mo¿liwoæ zastosowania w C++
najlepszych technik programistycznych oraz metodologii in¿ynierii programowania.
Nawet je¿eli ju¿ wczeniej wykorzystywa³e jêzyk C++, ta wyczerpuj¹ca ksi¹¿ka przedstawi
sposób tworzenia poprawniejszego kodu, ³atwiejszego do utrzymania i modyfikacji. Ksi¹¿ka
niniejsza uczy zasad programowania obiektowego przed sam¹ nauk¹ jêzyka, co pozwala
wykorzystaæ wszystkie zalety OOP do tworzenia poprawnych aplikacji. Udoskonalisz
znajomoæ kluczowych sk³adników standardu ANSI/ISO C++ rozpatrywanych z punktu
widzenia in¿yniera: klas, metod, modyfikatorów const, dynamicznego zarz¹dzania pamiêci¹,
z³o¿eñ klas, dziedziczenia, polimorfizmu, operacji wejcia-wyjcia i wielu innych.
Je¿eli pragniesz tworzyæ w jêzyku C++ najlepsze programy, musisz projektowaæ, myleæ
i programowaæ stosuj¹c najlepsze obecnie praktyki in¿ynierii programowania.
Lektura ksi¹¿ki „C++. In¿ynieria programowania” pomo¿e Ci w tym.
Ksi¹¿ka „C++. In¿ynieria programowania” k³adzie nacisk na:
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
• Prezentacjê zastosowañ zasad in¿ynierii programowania w programach pisanych w C++
• Tworzenie kodu ³atwego do póniejszych modyfikacji
• Praktyczne zrozumienie zasad programowania obiektowego przed nauk¹
samego jêzyka
• Przedstawienie najnowszych cech standardu ANSI/ISO C++
• Zaprezentowanie setek realistycznych przyk³adów kodu programów
Wiktor Shtern jest profesorem wyk³adaj¹cym w college’u przy uniwersytecie w Bostonie,
uznawanym za jedn¹ z najlepszych w Stanach Zjednoczonych szkó³ dla osób pracuj¹cych
zawodowo. Oprócz wyk³adów z jêzyka C++ na poziomie uniwersyteckim, Shtern prowadzi
równie¿ zajêcia praktyczne dla dowiadczonych programistów.
Dan Costello jest in¿ynierem oprogramowania w firmie GE Marquette Medical Systems
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
864097253.014.png 864097253.015.png 864097253.016.png 864097253.017.png 864097253.001.png 864097253.002.png 864097253.003.png 864097253.004.png 864097253.005.png 864097253.006.png 864097253.007.png 864097253.008.png 864097253.009.png 864097253.010.png 864097253.011.png 864097253.012.png 864097253.013.png
 
Spis treci
Wprowadzenie 15
Co odrónia t ksik od innych ksiek o C++?....................................................... 15
Dla kogo jest przeznaczona ta ksika? ..................................................................... 17
Jak korzysta! z tej ksiki? ....................................................................................... 17
Konwencje stosowane w ksice............................................................................... 18
Dostp do kodów %ródłowych .................................................................................... 19
Cz I Wprowadzenie do programowania w jzyku C++
21
Rozdział 1. Podejcie zorientowane obiektowo co je wyrónia? 23
(ródła kryzysu oprogramowania................................................................................. 24
Rozwizanie 1. wyeliminowanie programistów ........................................................ 28
Rozwizanie 2. ulepszone techniki zarzdzania ...................................................... 30
Metoda wodospadu ............................................................................................ 31
Szybkie tworzenie prototypu................................................................................. 32
Rozwizanie 3. projektowanie złoonego i rozwlekłego jzyka .................................. 33
Podej4cie zorientowane obiektowo czy dostaniemy co4 za nic?................................ 34
Na czym polega praca projektanta?...................................................................... 35
Jako4! projektu spójno4!................................................................................ 37
Jako4! projektu łczno4! ................................................................................ 37
Jako4! projektu wizanie danych i funkcji ......................................................... 38
Jako4! projektu ukrywanie informacji i kapsułkowanie ....................................... 40
Sprawa projektowania konflikty nazewnictwa .................................................... 41
Sprawa projektowania inicjalizacja obiektu ....................................................... 42
Czym jest obiekt? ............................................................................................... 43
Zalety stosowania obiektów................................................................................. 44
Charakterystyka jzyka C++ ...................................................................................... 45
Cele jzyka C wydajno4!, czytelno4!, pikno i przeno4no4!................................ 45
Cele jzyka C++ klasy ze wsteczn zgodno4ci z C............................................ 47
Podsumowanie ........................................................................................................ 50
Rozdział 2. Szybki start
krótki przegl#d j$zyka C++ 53
Podstawowa struktura programu ............................................................................... 54
Dyrektywy preprocesora............................................................................................ 56
Komentarze............................................................................................................. 60
Deklaracje i definicje................................................................................................ 63
Instrukcje i wyraenia ............................................................................................... 69
Funkcje i wywołania funkcji ....................................................................................... 77
6
C++. Inynieria programowania
Klasy ...................................................................................................................... 86
Praca z narzdziami programistycznymi...................................................................... 90
Podsumowanie ........................................................................................................ 94
Rozdział 3. Praca z danymi i wyraeniami w C++ 95
Warto4ci i ich typy.................................................................................................... 96
Typy całkowitoliczbowe ............................................................................................. 98
Kwalifikatory typu całkowitoliczbowego ............................................................... 100
Znaki ............................................................................................................... 104
Warto4ci logiczne.............................................................................................. 106
Typy liczb zmiennoprzecinkowych............................................................................. 107
Praca z wyraeniami C++........................................................................................ 109
Operatory o wysokim priorytecie......................................................................... 110
Operatory arytmetyczne..................................................................................... 111
Operatory przesunicia...................................................................................... 114
Bitowe operatory logiczne.................................................................................. 115
Operatory relacji i równo4ci................................................................................ 118
Operatory logiczne ............................................................................................ 120
Operatory przypisania........................................................................................ 122
Operator warunkowy.......................................................................................... 123
Operator przecinkowy........................................................................................ 124
Wyraenia mieszane ukryte zagroenia ................................................................ 125
Podsumowanie ...................................................................................................... 131
Rozdział 4. Sterowanie przebiegiem programu C++ 133
Instrukcje i wyraenia ............................................................................................. 134
Instrukcje warunkowe............................................................................................. 136
Standardowe formy instrukcji warunkowych......................................................... 136
Czste błdy w instrukcjach warunkowych........................................................... 140
Zagniedone instrukcje warunkowe i ich optymalizacja ....................................... 152
Iteracje ................................................................................................................. 158
Zastosowanie ptli WHILE ................................................................................. 159
Iteracje w ptli DO-WHILE .................................................................................. 167
Iteracje w ptli FOR........................................................................................... 170
Instrukcje skoków w C++........................................................................................ 173
Instrukcja BREAK.............................................................................................. 174
Instrukcja CONTINUE......................................................................................... 177
Instrukcja GOTO ............................................................................................... 178
Instrukcje skoków RETURN i EXIT....................................................................... 179
Instrukcja SWITCH ............................................................................................ 183
Podsumowanie ...................................................................................................... 186
Rozdział 5. Agregacja za pomoc# typów danych zdefiniowanych przez programist$ 187
Tablice jako agregaty homogeniczne........................................................................ 188
Tablice jako wektory warto4ci............................................................................. 188
Definiowanie tablic C++ .................................................................................... 190
Operacje na tablicach ....................................................................................... 193
Sprawdzanie poprawno4ci indeksów................................................................... 194
Tablice wielowymiarowe .................................................................................... 197
Definiowanie tablic znaków................................................................................ 200
Operacje na tablicach znaków............................................................................ 202
Funkcje łaHcuchowe a błdy pamici .................................................................. 204
Spis treci
7
Dwuwymiarowe tablice znaków........................................................................... 208
Przepełnienie tablic w algorytmach je wypełniajcych ........................................... 210
Definiowanie typów tablicowych ......................................................................... 214
Struktury jako agregaty heterogeniczne.................................................................... 216
Definiowanie struktur jako typów zdefiniowanych przez programist ...................... 216
Tworzenie i inicjalizowanie zmiennych strukturalnych ........................................... 217
Struktury hierarchiczne i ich komponenty ............................................................ 219
Operacje na zmiennych strukturalnych................................................................ 220
Definiowanie struktur w programach złoonych z wielu plików ............................... 222
Unie, typy wyliczeniowe i pola bitowe ....................................................................... 223
Unie ................................................................................................................ 223
Typy wyliczeniowe ............................................................................................. 227
Pola bitowe ...................................................................................................... 229
Podsumowanie ...................................................................................................... 233
Rozdział 6. Zarz#dzanie pami$ci#
stos i sterta 235
Zasig nazw jako narzdzie współpracy.................................................................... 236
Zasigi leksykalne C++ ..................................................................................... 236
Konflikty nazw w tym samym zasigu ................................................................. 237
Stosowanie takich samych nazw w zasigach niezalenych .................................. 241
Stosowanie takich samych nazw w zasigach zagniedonych .............................. 241
Zasig zmiennych ptli...................................................................................... 246
Zarzdzanie pamici klasy pamici.................................................................... 246
Zmienne automatyczne ..................................................................................... 248
Zmienne zewntrzne ......................................................................................... 251
Zmienne statyczne............................................................................................ 257
Zarzdzanie pamici zastosowanie sterty........................................................... 261
Wska%niki C++ jako zmienne o okre4lonym typie ................................................. 263
Alokowanie pamici na stercie........................................................................... 268
Tablice i wska%niki............................................................................................ 273
Tablice dynamiczne........................................................................................... 276
Struktury dynamiczne........................................................................................ 290
Operacje wej4cia i wyj4cia na plikach....................................................................... 300
Zapisywanie do pliku......................................................................................... 301
Odczyt z pliku ................................................................................................... 304
Plikowe obiekty wej4cia-wyj4cia.......................................................................... 308
Podsumowanie ...................................................................................................... 311
Cz II Programowanie obiektowe w C++
313
Rozdział 7. Programowanie w C++ z zastosowaniem funkcji 315
Funkcje w C++ jako narzdzie modularyzacji programu.............................................. 317
Deklaracje funkcji ............................................................................................. 318
Definicje funkcji................................................................................................ 319
Wywołania funkcji ............................................................................................. 320
Promocja i konwersja argumentów funkcji ................................................................ 323
Przekazywanie parametrów do funkcji w C++............................................................ 326
Przekazanie parametru przez warto4! ................................................................. 326
Przekazanie parametrów poprzez wska%nik ......................................................... 328
Przekazanie parametrów do funkcji charakterystycznej dla C++
poprzez referencj................................................................................... 336
Struktury.......................................................................................................... 341
8
C++. Inynieria programowania
Tablice............................................................................................................. 348
Wicej o konwersjach typów .............................................................................. 352
Zwracanie warto4ci z funkcji .............................................................................. 355
Funkcje wplecione inline..................................................................................... 361
Parametry funkcji z warto4ciami domy4lnymi ............................................................ 364
Przecianie nazw funkcji........................................................................................ 370
Podsumowanie ...................................................................................................... 377
Rozdział 8. Programowanie obiektowe z zastosowaniem funkcji 381
Kohezja................................................................................................................. 385
Sprzganie ............................................................................................................ 386
Niejawne sprzenie ......................................................................................... 386
Jawne sprzenie.............................................................................................. 390
Jak zredukowa! intensywno4! sprzgania? ......................................................... 395
Hermetyzacja danych.............................................................................................. 400
Ukrywanie danych .................................................................................................. 407
Wikszy przykład hermetyzacji danych...................................................................... 413
Wady hermetyzacji danych przy uyciu funkcji ........................................................... 422
Podsumowanie ...................................................................................................... 425
Rozdział 9. Klasy w C++ jako jednostki modularyzacji 427
Podstawowa składnia definicji klasy ........................................................................ 430
Połczenie danych i operacji .............................................................................. 430
Eliminowanie konfliktów nazw ............................................................................ 435
Implementacja kodów metod poza definicj klasy................................................ 439
Definiowane obiektów przechowywanych w pamici rónych kategorii.................... 443
Kontrolowanie dostpu do komponentów klasy ........................................................ 444
Inicjowanie obiektów danej klasy............................................................................. 451
Konstruktory jako metody.............................................................................. 452
Konstruktory domy4lne...................................................................................... 455
Konstruktory kopiujce...................................................................................... 457
Konstruktory konwersji...................................................................................... 461
Destruktory ...................................................................................................... 463
Co i kiedy, czyli co naprawd robi konstruktory i destruktory ............................... 468
Widoczno4! nazw w obrbie klasy i przesłanianie nazw przy zagniedaniu ............ 469
Zarzdzanie pamici za pomoc operatorów i wywołaH funkcji ............................ 472
Zastosowanie w kodzie klienta obiektów zwracanych przez funkcje............................. 476
Zwrot wska%ników i referencji............................................................................. 476
Zwrot obiektów z funkcji .................................................................................... 479
Wicej o stosowaniu słowa kluczowego const .......................................................... 482
Statyczne komponenty klas .................................................................................... 488
Zastosowanie zmiennych globalnych jako charakterystyk klas .............................. 489
Czwarte znaczenie słowa kluczowego static ........................................................ 491
Inicjowanie statycznych pól danych..................................................................... 492
Statyczne metody ............................................................................................. 493
Podsumowanie ...................................................................................................... 497
Rozdział 10. Funkcje operatorowe
jeszcze jeden dobry pomysł 499
Przecianie operatorów ......................................................................................... 501
Ograniczenia w przecianiu operatorów .................................................................. 510
Które operatory nie mog by! poddane przecianiu? .......................................... 510
Ograniczenia typów warto4ci zwracanych przez funkcje operatorowe...................... 512
Zgłoś jeśli naruszono regulamin