Jezyk C++ Efektywne programowanie obiektowe.pdf
(
667 KB
)
Pobierz
Język C++. Efektywne programowanie obiektowe
IDZ DO
PRZYK£ADOW
Y ROZDZIA£
Jêzyk C++. Efektywne
SPIS TRECI
programowanie obiektowe
KATALOG KSI¥¯EK
Autor: Kayshav Dattatri
T³umaczenie: Micha³ Grzegorczyk, Jaromir Senczyk,
Przemys³aw Steæ, Przemys³aw Szeremiota, Tomasz Walczak
ISBN: 83-7361-812-0
Tytu³ orygina
³u:
C++: Effective Object-Oriented
Software Construction
Format: B5, stron: 800
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Programowanie obiektowe jest nierozerwalnie zwi¹zane z jêzykiem C++. Koncepcje
i metody programowania obiektowego, niezbêdne do swobodnego pos³ugiwania siê
t¹ technik¹, pomimo pozornej prostoty s¹ stosunkowo trudne do opanowania.
Projektowanie aplikacji w jêzyku C++ wymaga jednak nie tylko znajomoci
podstawowych zasad programowania obiektowego, ale równie¿ wielu innych technik
programistycznych. Nale¿y prawid³owo zaplanowaæ strukturê aplikacji, poznaæ zasady
pisania poprawnego kodu i nauczyæ siê korzystaæ z notacji UML do modelowania
zale¿noci pomiêdzy elementami aplikacji.
„C++. Efektywne programowanie obiektowe” to podrêcznik przeznaczony zarówno
dla pocz¹tkuj¹cych, jak i zaawansowanych programistów C++. Przedstawia metody
programowania obiektowego stosowane przez profesjonalistów. Opisuje techniki
obiektowe w kontekcie rzeczywistych problemów, przed jakimi staj¹ twórcy
oprogramowania podczas codziennej pracy.
• Podstawowe pojêcia i koncepcje programowania obiektowego
• Abstrakcja danych
• Notacja UML
• Zarz¹dzanie pamiêci¹ w programowaniu obiektowym
• Dziedziczenie
• Zasady programowania generycznego
• Obs³uga wyj¹tków
• Zaawansowane aplikacje obiektowe
Dziêki zawartym w tej ksi¹¿ce wiadomociom wykonasz nawet najtrudniejsze zadania
programistyczne, wykorzystuj¹c techniki obiektowe.
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
Spis treci
Rekomendacje ................................................................................13
Przedmowa .....................................................................................15
Wstp ............................................................................................17
Cz I Pojcia, techniki i aplikacje ...........................................21
Rozdział 1. Czym jest programowanie obiektowe? .............................................23
Pochodzenie ................................................................................................................... 23
Przykład programowania proceduralnego ................................................................ 24
Reprezentacja konta bankowego .............................................................................. 25
Bezpiecze stwo konta bankowego ........................................................................... 26
Rozwi#zywanie problemów w programowaniu obiektowym ................................... 27
Wprowadzenie do modelu obiektowego .......................................................................... 28
Terminologia .................................................................................................................. 30
Poznajemy komunikaty, metody i zmienne egzemplarza ............................................... 30
Z czego składa si, obiekt? ........................................................................................ 31
Tworzenie obiektów ................................................................................................. 32
Co mo0na uzna1 za klas,? .............................................................................................. 33
Co nie jest klas#? ............................................................................................................ 34
Cel klasy ......................................................................................................................... 35
Wi,cej o obiektach ......................................................................................................... 36
Stan obiektu ............................................................................................................. 36
Dlaczego stan obiektu jest wa0ny? ........................................................................... 37
Kto kontroluje stan obiektu? .................................................................................... 38
Zachowanie obiektu ................................................................................................. 39
Etapy w konstruowaniu oprogramowania obiektowego ................................................. 40
Analiza obiektowa .................................................................................................... 40
Projektowanie obiektowe ......................................................................................... 41
Programowanie obiektowe ............................................................................................. 43
Kluczowe elementy modelu obiektowego ...................................................................... 43
Paradygmaty i j,zyki programowania obiektowego ....................................................... 45
Jakie wymagania musi spełnia1 j,zyk obiektowy? ......................................................... 46
Zalety modelu obiektowego ........................................................................................... 47
Podsumowanie ............................................................................................................... 48
6
Jzyk C++. Efektywne programowanie obiektowe
Rozdział 2. Czym jest abstrakcja danych? .........................................................49
Analiza projektu odtwarzacza ........................................................................................ 51
Oddzielanie interfejsu od implementacji ........................................................................ 52
Znaczenie interfejsu ................................................................................................. 52
Dlaczego interfejs obiektu jest tak wa0ny? ..................................................................... 53
Jaki interfejs jest wystarczaj#cy? .............................................................................. 53
Znaczenie implementacji ................................................................................................ 54
Ochrona implementacji .................................................................................................. 54
Jakie s# korzy;ci ukrywania danych? ............................................................................. 56
Relacje mi,dzy interfejsem, implementacj# i hermetyzacj# danych ............................... 57
<rodki ostro0no;ci przy hermetyzacji danych ................................................................ 58
Co i kiedy ukrywa1? ....................................................................................................... 58
Abstrakcyjne typy danych .............................................................................................. 59
Implementacja abstrakcyjnego typu danych — stosu ..................................................... 60
Abstrakcja danych w j,zyku C++ ................................................................................... 62
Regiony dost,pu klasy .................................................................................................... 63
Niektóre poj,cia zwi#zane z klasami .............................................................................. 69
Kto jest implementatorem klasy? ................................................................................... 70
Implementowanie funkcji składowych ........................................................................... 70
Identyfikacja obiektu docelowego w funkcjach składowych .......................................... 71
Przykładowy program .................................................................................................... 73
Uwaga skoncentrowana jest na obiekcie ........................................................................... 74
Drugi rzut oka na interfejs .............................................................................................. 75
Czym s# bezpieczne klasy wielow#tkowe? .................................................................... 76
Zapewnianie niezawodno;ci abstrakcji — niezmienniki i asercje klasy ......................... 78
Niezmienniki klasy ................................................................................................... 79
Warunki wst,pne i warunki ko cowe ...................................................................... 79
U0ywanie asercji do implementowania niezmienników i warunków ....................... 80
Efektywne korzystanie z asercji ............................................................................... 81
Sposoby reprezentacji projektów obiektowych .............................................................. 82
Notacja Boocha .............................................................................................................. 83
Relacje mi,dzy klasami .................................................................................................. 83
Asocjacja .................................................................................................................. 84
Agregacja (ma-co;) .................................................................................................. 84
Relacja korzystania .................................................................................................. 86
Relacja dziedziczenia (jest-czym;) ........................................................................... 87
Kategorie klas .......................................................................................................... 88
UML ............................................................................................................................... 88
Relacje mi,dzy klasami .................................................................................................. 90
Asocjacja ........................................................................................................................ 90
Asocjacja jako agregacja .......................................................................................... 92
Asocjacja typu OR ................................................................................................... 93
Kompozycja ................................................................................................................... 93
Relacja uogólniania (jest-czym;) .................................................................................... 94
Znaczenie relacji ma-co; ................................................................................................ 95
Podsumowanie ............................................................................................................... 97
Rozdział 3. Abstrakcja danych w jzyku C++ .....................................................99
Podstawowe informacje o klasie .................................................................................... 99
Elementy klasy ............................................................................................................. 100
Regiony dost,pu ..................................................................................................... 100
Konstruktor kopiuj#cy .................................................................................................. 103
Dost,p do danych składowych obiektu — model j,zyka C++ ............................... 106
Operacja przypisania .................................................................................................... 111
Wi,cej o wskaGniku this i dekorowaniu nazw .............................................................. 116
Metoda stała (const) ..................................................................................................... 118
Spis treci
7
Jak kompilator implementuje metody stałe? ................................................................. 120
Ró0nice mi,dzy klas# a struktur# w j,zyku C++ .......................................................... 120
Co mo0e zawiera1 klasa? .............................................................................................. 121
W czasie projektowania najwa0niejszy jest interfejs klasy ........................................... 122
Nazwy klas, nazwy metod, typy argumentów i dokumentacja ..................................... 123
Sposoby przekazywania argumentów z perspektywy klienta ....................................... 124
Semantyka własno;ci ................................................................................................... 128
Wybór odpowiedniego sposobu przekazywania argumentu ......................................... 130
Warto;ci zwracane przez funkcj, ................................................................................. 131
Zwracanie referencji ..................................................................................................... 133
Jak napisa1 bezpieczn# pod wzgl,dem pami,ci klas,? ................................................. 134
Optymalizacja kodu ............................................................................................... 134
Obowi#zki klienta w pracy z klasami i funkcjami ........................................................ 134
Podsumowanie ............................................................................................................. 136
Rozdział 4. Inicjalizacja i zwalnianie pamici w programowaniu obiektowym ......137
Co to jest inicjalizacja? ................................................................................................. 137
Inicjalizacja za pomoc# konstruktora ..................................................................... 139
Reguły pracy z obiektami zagnie0d0onymi ............................................................ 146
Zagadnienia zwi#zane z przywracaniem pami,ci ......................................................... 146
<mieci .................................................................................................................... 146
Wisz#ce referencje ................................................................................................. 147
Jak zapobiega1 powstawaniu ;mieci i wisz#cych referencji? ................................. 148
Przywracanie pami,ci a projektowanie j,zyka ....................................................... 149
Kiedy powstaj# ;mieci w j,zyku C++? .................................................................. 151
Kiedy obiekt zajmuje zasoby? ................................................................................ 152
Przywracanie pami,ci w j,zyku C++ ........................................................................... 152
To0samo;1 obiektów .................................................................................................... 154
Semantyka kopiowania obiektów ................................................................................. 157
Semantyka prostej operacji kopiowania ................................................................. 158
Semantyka przypisywania obiektów ............................................................................ 163
Przypisanie jako operacja na l-warto;ci ................................................................. 166
Semantyka porównywania obiektów ............................................................................ 166
Równo;1 obiektów a ekwiwalencja ........................................................................ 168
Dlaczego potrzebna jest kontrola kopiowania? ............................................................ 170
Przykład semafora .................................................................................................. 171
Przykład — serwer licencji .................................................................................... 173
Przykład — klasa String ......................................................................................... 174
Analiza ......................................................................................................................... 180
Kopiowanie przy zapisie .............................................................................................. 182
Kiedy u0ywa1 zliczania referencji? ........................................................................ 188
Podsumowanie kopiowania przy zapisywaniu ....................................................... 188
Klasy i typy .................................................................................................................. 189
Podsumowanie ............................................................................................................. 190
Rozdział 5. Dziedziczenie ................................................................................191
Podstawy dziedziczenia ................................................................................................ 191
Znaczenie relacji dziedziczenia .................................................................................... 205
Skutki relacji dziedziczenia .......................................................................................... 205
Bezpo;rednie i po;rednie klasy bazowe ................................................................. 206
Zasada podstawiania polimorficznego ......................................................................... 207
Inicjalizacja obiektów klasy bazowej ..................................................................... 210
Rozszerzanie hierarchii klas za pomoc# dziedziczenia ................................................. 213
Podstawowe zalety dziedziczenia ................................................................................. 215
Wi#zanie dynamiczne, funkcje wirtualne i polimorfizm .............................................. 216
Co oznacza wi#zanie dynamiczne? ........................................................................ 219
Obsługa wi#zania dynamicznego — funkcje wirtualne ......................................... 220
8
Jzyk C++. Efektywne programowanie obiektowe
Wpływ dziedziczenia na hermetyzacj, danych ............................................................ 222
Co oznacza polimorfizm? ............................................................................................. 224
Efektywne stosowanie funkcji wirtualnych .................................................................. 225
Przesłanianie .......................................................................................................... 225
Kiedy potrzeba wirtualnego destruktora? ..................................................................... 228
Konstruktory i funkcje wirtualne .................................................................................. 231
Uogólnianie-uszczegóławianie ..................................................................................... 233
Klasy abstrakcyjne ....................................................................................................... 233
Zastosowania klas abstrakcyjnych ................................................................................ 237
Zaawansowany przykład klasy abstrakcyjnej — gra w szachy .............................. 241
Waga dziedziczenia ...................................................................................................... 249
Efektywne wielokrotne u0ywanie kodu ........................................................................ 250
Klient abstrakcyjnej klasy bazowej .............................................................................. 253
Podsumowanie zalet dziedziczenia ............................................................................... 254
Zagro0enia zwi#zane z dziedziczeniem i wi#zaniem dynamicznym ............................ 256
Jak implementowane s# funkcje wirtualne w j,zyku C++? .................................... 257
Koszty funkcji wirtualnych .................................................................................... 258
Dynamiczne wi#zanie i sprawdzanie typu .............................................................. 259
Zb,dne u0ywanie dziedziczenia i wi#zania dynamicznego .......................................... 259
Wypo0yczanie zbiorów bibliotecznych .................................................................. 259
Ró0ne sposoby u0ywania funkcji wirtualnych ............................................................. 270
Podsumowanie ............................................................................................................. 272
Rozdział 6. Dziedziczenie wielokrotne .............................................................273
Prosta definicja dziedziczenia wielokrotnego ............................................................... 273
Abstrakcja uniwersytetu ............................................................................................... 274
Powtórne wykorzystanie kodu z ulepszeniami ....................................................... 278
Znaczenie wielokrotnego dziedziczenia ....................................................................... 280
Przykład dziedziczenia wielokrotnego ......................................................................... 281
Rozwi#zywanie konfliktów nazw w j,zyku C++ ................................................... 282
Problem z wieloznaczno;ci# klas bazowych .......................................................... 285
Podstawowe zalety dziedziczenia wielokrotnego ......................................................... 287
Rozwi#zania alternatywne dla dziedziczenia wielokrotnego ........................................ 287
Pierwsze rozwi#zanie alternatywne ........................................................................ 287
Drugie rozwi#zanie alternatywne ........................................................................... 290
Problem powtórnego dziedziczenia .............................................................................. 291
Rozwi#zanie problemu powtórnego dziedziczenia ....................................................... 295
Dzielenie obiektów za pomoc# wirtualnych klas bazowych .................................. 295
Zalety wirtualnych klas bazowych ......................................................................... 297
Nowe problemy wynikaj#ce z u0ycia wirtualnych klas bazowych ......................... 297
Porównanie dziedziczenia wielokrotnego w j,zykach Eiffel i C++ ....................... 302
Ogólne problemy z dziedziczeniem .............................................................................. 304
Dodawanie statycznych mo0liwo;ci za pomoc# klas mieszanych ................................ 306
Definicja klasy mieszanej ....................................................................................... 306
Kiedy nale0y u0ywa1 klas mieszanych? ................................................................. 310
Dynamicznie zmieniaj#ca si, sytuacja ......................................................................... 311
Elastyczno;1 projektu z klasami pełni#cymi ró0ne role ......................................... 316
Jak u0ywa1 klas pełni#cych ró0ne role? ................................................................. 316
Inne rozwi#zanie zarz#dzania rolami ..................................................................... 324
Polimorficzne u0ywanie obiektów TUniversityMember ........................................ 326
Wprowadzanie zmian w istniej#cych klasach ........................................................ 326
Klasy mieszane a obiekty pełni#ce role — mo0liwo;ci zastosowa ...................... 328
Wyprowadzenie prywatne w j,zyku C++ ..................................................................... 330
Kiedy u0ywa1 wyprowadzenia prywatnego? ......................................................... 332
Ponowne eksportowanie składowych prywatnej klasy bazowej ............................. 334
Alternatywne rozwi#zanie dla wyprowadzenia prywatnego — zawieranie ........... 335
Kiedy potrzebne jest prywatne wyprowadzenie? ................................................... 337
Plik z chomika:
janowiec
Inne pliki z tego folderu:
Asembler dla procesorow Intel Vademecum profesjonalisty.pdf
(400 KB)
Asembler cwiczenia praktyczne.pdf
(358 KB)
Architektura systemow zarzadzania przedsiebiorstwem Wzorce projektowe.pdf
(829 KB)
Architektura oprogramowania Metody oceny oraz analiza przypadkow.pdf
(429 KB)
Aplikacje w Visual C++ 2005 Przyklady.pdf
(296 KB)
Inne foldery tego chomika:
PHP
Zgłoś jeśli
naruszono regulamin