C++. Styl programowania - Helion
Tytuł oryginału: C++ Programming Style
TÅ‚umaczenie: Adam Majczak
ISBN: 83-7361-321-8
stron: 224, Format: B5, okładka: twarda
Data wydania: 2003-12-08
Księgarnia: Helion
Cena książki: 39,00 zł
C++ wspomaga programowanie w dużej skali, pozwalając na precyzyjne wyrażenie współzależności pomiędzy różnymi częściami programu. Dlatego zakres pojęciowy techniki i stylu programowania w C++ wykracza poza tradycyjne jego pojmowanie w odniesieniu do programowania w małej skali, sprowadzającego się do szczegółów kodowania wiersz po wierszu.
Autor dowodzi, że nieprzemyślane stosowanie złożonych i zaawansowanych technik programowania może prowadzić do tworzenia chaotycznych, niezrozumiałych i mętnych konstrukcji, stanowiących zarazem często rozwiązania mniej efektywne, niż prostsze i zrozumiałe konstrukcje alternatywne. Tom Cargill dokonuje przeredagowania licznych programów, stosując techniki pozwalające na udoskonalenie kodu, począwszy od poprawy spójności, po usunięcie zbędnego, nadmiarowego dziedziczenia. Sposób prezentacji zagadnień rozpoczyna się od przeglądu oryginalnego kodu, który możesz samodzielnie ocenić i przeanalizować, rozważając możliwe alternatywne podejścia do przedstawionych zagadnień programistycznych. Te własne przemyślenia możesz następnie porównać z analizami i wnioskami Autora.
Na podstawie przykładów formułowane są uniwersalne reguły i zasady tworzenia kodu i projektowania programów. Zrozumienie i umiejętne stosowanie tych reguł pomoże profesjonalnym programistom projektować i pisać lepsze programy w C++.
Kolejne rozdziały poświęcone są następującym zagadnieniom:- Abstrakcja -- pojęcia i modele abstrakcyjne
- Spójność
- Zbędne dziedziczenie
- Funkcje wirtualne
- Przeciążanie operatorów
- Nakładki typu "wrapper"
- Efektywność
Książka Toma Cargilla to nie tylko cenne źródło wiedzy dla zaawansowanych programistów -- przyda się ona również studentom informatyki i pokrewnych kierunków, zainteresowanych zdobyciem profesjonalnych umiejętności programistycznych.
Spis treści
C++. Styl programowania -- spis treści
Przedmowa (7)
Wprowadzenie (9)
Rozdział 1. Abstrakcja (15)
- Przykład techniki programowania: ceny komputerów (15)
- Poszukiwanie wspólnego pojęcia abstrakcyjnego (19)
- Różnice pomiędzy klasami (22)
- Powtórnie wprowadzamy do programu dziedziczenie (26)
- Wyeliminowanie typów wyliczeniowych (27)
- Podsumowanie (30)
- Bibliografia (31)
- Ćwiczenie (31)
Rozdział 2. Spójność kodu (35)
- Przykład techniki programowania: klasa string (36)
- Precyzyjnie zdefiniowany stan obiektu (37)
- Spójność fizycznego stanu obiektu (38)
- Niezmienne warunki, czyli inwariancja klas (39)
- Konsekwentne stosowanie dynamicznego zarządzania pamięcią (41)
- Zwolnienie dynamicznie przyporządkowanej pamięci (43)
- Przykład techniki programowania: drugie podejście do tego samego problemu (44)
- Podsumowanie (50)
- Bibliografia (51)
- Ćwiczenia (51)
Rozdział 3. Zbędne dziedziczenie (55)
- Przykład techniki programowania: stos (55)
- Reguły widoczności nazw w procesie dziedziczenia (59)
- Relacje tworzone poprzez dziedziczenie (60)
- Enkapsulacja (65)
- Interfejs a implementacja (67)
- Zastosowanie szablonów (71)
- Podsumowanie (73)
- Bibliografia (73)
- Ćwiczenie (74)
Rozdział 4. Funkcje wirtualne (75)
- Przykład techniki programowania: problem pojazdów i garaży (75)
- Spójność kodu (79)
- Destruktory klas bazowych (81)
- Dziedziczenie (82)
- Sprzężenie (85)
- Podsumowanie (91)
- Bibliografia (92)
- Ćwiczenie (92)
Rozdział 5. Przeciążanie operatorów (93)
- Przeciążanie operatorów - podstawy (93)
- Przykład techniki programowania: tablica plików FileArray (98)
- Dziedziczenie implementacji (105)
- Programistyczny dylemat - jak lepiej: przeciążone operatory czy metody (110)
- Podsumowanie (112)
- Bibliografia (112)
- Ćwiczenia (112)
Rozdział 6. Klasy otaczające (ang. wrappers) (113)
- Biblioteka C (113)
- Przykład techniki programowania: klasa otaczająca dla struktury dirent w C++ (114)
- Wiele obiektów klasy Directory (116)
- Gdy zawodzi konstruktor (119)
- Publiczny dostęp do stanu obiektu (121)
- Dodatkowy argument służący obsłudze błędów (123)
- Podsumowanie (127)
- Bibliografia (128)
- Ćwiczenie (128)
Rozdział 7. Efektywność (129)
- Przykład techniki programowania: klasa BigInt (130)
- Egzaminujemy klasÄ™ BigInt (136)
- Długość dynamicznych łańcuchów znaków (138)
- Liczba dynamicznie zapamiętywanych łańcuchów znaków (140)
- Kod klienta (144)
- Modyfikujemy klasÄ™ BigInt (145)
- Podsumowanie (151)
- Bibliografia (152)
- Ćwiczenia (152)
Rozdział 8. Studium praktyczne (153)
- Przykład techniki programowania: Finite State Machine, czyli automat stanów skończonych (153)
- Zainicjowanie (158)
- Sprzężenia (165)
- Spójność (169)
- Moduły kontra abstrakcyjne typy danych (172)
- Wartość kontra zachowanie (175)
- Uogólnienie (180)
- Bibliografia (184)
- Ćwiczenia (185)
Rozdział 9. Dziedziczenie wielokrotne (187)
- Niejednoznaczności w mechanizmie wielokrotnego dziedziczenia (187)
- Skierowane niecykliczne grafy hierarchii dziedziczenia (189)
- Eksplorujemy wirtualne klasy bazowe (193)
- Przykład techniki programowania: klasa Monitor (200)
- Przykład techniki programowania: wirtualna klasa bazowa (204)
- Protokół powiadomień zwrotnych i przydatne wielokrotne dziedziczenie (210)
- Podsumowanie (213)
- Bibliografia (213)
- Ćwiczenia (213)
Rozdział 10. Zbiorcza lista reguł (215)
- Rozdział 1.: "Abstrakcja" (215)
- Rozdział 2.: "Spójność kodu" (215)
- Rozdział 3.: "Zbędne dziedziczenie" (216)
- Rozdział 4.: "Funkcje wirtualne" (216)
- Rozdział 5.: "Przeciążanie operatorów" (216)
- Rozdział 6.: "Klasy otaczające (ang. wrappers)" (216)
- Rozdział 7.: "Efektywność" (217)
- Rozdział 8.: "Studium praktyczne" (217)
- Rozdział 9.: "Dziedziczenie wielokrotne" (217)
Skorowidz (219)