Badanie struktur danych, elementarnych składników wykorzystywanych w informatyce, jest podstawą, w oparciu o którą możesz zdobywać cenne umiejętności. Znajomość struktur danych jest niezbędna studentom, którzy chcą programować czy też testować oprogramowanie.
W niniejszej książce zwrócono uwagę na trzy ważne aspekty struktur danych: po pierwsze, na związek struktur danych z algorytmami, między innymi na złożoność obliczeniową algorytmów. Po drugie, struktury te prezentowane są w sposób zgodny z zasadami projektowania obiektowego i obiektowym paradygmatem programowania. Po trzecie, ważną częścią książki są implementacje struktur danych w języku C++.
Książka prezentuje:
* Podstawy projektowania obiektowego w C++
* Analizę złożoności
* Listy powiązane
* Stosy i kolejki
* Rekurencję
* Drzewa binarne
* Sterty
* Drzewa wielokrotne
* Grafy
* Sortowanie i mieszanie
* Kompresja danych
* Zarządzanie pamięcią
Książka ta dostarcza studentom informatyki nie tylko niezbędnej wiedzy na temat algorytmów i struktur danych, ale prezentuje jednocześnie sposoby ich implementacji w języku C++, obecnie jednym z wiodących języków programowania. Dostarcza ona więc nie tylko wiedzy teoretycznej, ale również pozwala rozwinąć praktyczne umiejętności przydatnych w przyszłej pracy zawodowej.
Bazy danych to podstawa większości złożonych systemów informatycznych. W oparciu o dane czerpane z tabel w bazie działają portale i sklepy internetowe, aplikacje biznesowe i informacyjne, a nawet multimedialne witryny, coraz częściej spotykane w urzędach, muzeach i innych budynkach użyteczności publicznej. Na rynku dostępnych jest wiele systemów zarządzania bazami danych, oferowanych przez różnych producentów i na różnych zasadach licencjonowania. Pomimo istotnych różnic, wszystkie opierają się na podobnych założeniach, a projektowanie wydajnych baz danych odbywa się w niemal identyczny sposób, niezależnie od docelowego systemu zarządzania nimi. Opanowanie wiadomości leżących u podstaw projektowania i wykorzystywania baz danych jest więc niezbędne do stworzenia efektywnego i bezpiecznego zaplecza bazodanowego dla systemu informatycznego.
Książka "Wprowadzenie do systemów baz danych" to szczegółowe omówienie wszystkich aspektów projektowania i stosowania baz danych. Szczególny nacisk położono w niej na podstawy modelowania danych i definiowania tabel. Opisano języki i mechanizmy udostępniane przez systemy zarządzania bazami danych oraz techniki implementacji samych systemów. Książka może pełnić rolę podręcznika pomocnego przy poznawaniu zagadnień związanych z bazami danych lub źródła informacji dla projektantów i administratorów systemów bazodanowych.
* Rozwiązania oparte na bazach danych
* Użytkownicy baz danych
* Architektury systemów zarządzania bazami danych
* Modelowanie danych oparte na związkach encji
* Zastosowanie języka UML w modelowaniu danych
* Relacyjny model danych
* Język SQL-99
* Normalizacja danych
* Składowanie danych na dysku
* Indeksy i klucze
* Algorytmy przetwarzania zapytań
* Mechanizmy transakcyjne
* Obiektowe bazy danych
* Bezpieczeństwo danych
* Język XML w bazach danych
* Technologie eksploracji danych
* Hurtownie danych, systemy GIS i bazy danych dla urządzeń mobilnych
Książka stanowi źródło wiedzy dla projektantów baz danychi oprogramowania bazodanowego.
Książka "Algorytmy w C" jest doskonałą pomocą dla programistów, którym w codziennej pracy potrzebne są sprawdzone rozwiązania. Nie ma tu teoretycznych dywagacji tak charakterystycznych dla większości książek o strukturach danych i algorytmach. Znajdziesz w niej za to przystępnie podane informacje i praktyczne techniki programowania.
Wyjątkowo elegancki styl programowania i pisania autora, Kyle’a Loudona, ułatwia poznanie najważniejszych struktur danych, takich jak listy, stosy, kolejki, zbiory, sterty, kolejki priorytetowe i grafy. Autor prezentuje użycie algorytmów sortujących, wyszukiwania, analiz numerycznych, kompresji danych, szyfrowania danych, typowych algorytmów obsługi grafów oraz geometrii analitycznej. W rozdziałach poświęconych kompresji i szyfrowaniu czytelnik znajdzie nie tylko gotowy, szybki w działaniu kod, ale też informacje przydatne dla osób, które nigdy nie miały czasu ani chęci zagłębiać się w omawiane zagadnienia.
W tekście umieszczono także kody wraz z przykładami zastosowania poszczególnych struktur danych i algorytmów. Komplet kodów źródłowych znajduje się na płycie CD-ROM. Kod ten został napisany w taki sposób, byś łatwo mógł go wykorzystać we własnych aplikacjach.
W książce omówiono:
* Wskaźniki
* Rekurencję
* Analizę algorytmów
* Struktury danych (listy, stosy, kolejki, zbiory, tablice asocjacyjne, drzewa, sterty, kolejki priorytetowe i grafy)
* Sortowanie i wyszukiwanie
* Metody numeryczne
* Kompresję danych
* Szyfrowanie danych
* Algorytmy operujące na grafach
* Algorytmy przydatne do obliczeń geometrycznych.
W niniejszej książce przedstawiono struktury danych i algorytmy stanowiące podstawę współczesnego programowania komputerów. Algorytmy są niczym przepis na rozwiązanie postawionego przed programistę problemu. Są one nierozerwalnie związane ze strukturami danych - listami, rekordami, tablicami, kolejkami, drzewami... podstawowymi elementami wiedzy każdego programisty.
Książka obejmuje szeroki zakres materiału, a do jej lektury wystarczy znajomość dowolnego języka programowania strukturalnego (np. Pascala). Opis klasycznych algorytmów uzupełniono o algorytmy związane z zarządzaniem pamięcią operacyjną i pamięciami zewnętrznymi.
Książka przedstawia algorytmy i struktury danych w kontekście rozwiązywania problemów za pomocą komputera. Z tematyką rozwiązywania problemów powiązano zagadnienie zliczania kroków oraz złożoności czasowej - wynika to z głębokiego przekonania autorów tej książki, iż wraz z pojawianiem się coraz szybszych komputerów, pojawiać się będą także coraz bardziej złożone problemy do rozwiązywania i - paradoksalnie - złożoność obliczeniowa używanych algorytmów zyskiwać będzie na znaczeniu.
W książce omówiono m.in.:
* Tradycyjne struktury danych: listy, kolejki, stosy
* Drzewa i operacje na strukturach drzew
* Typy danych oparte na zbiorach, słowniki i kolejki priorytetowe wraz ze sposobami ich implementacji
* Grafy zorientowane i niezorientowane
* Algorytmy sortowania i poszukiwania mediany
* Asymptotyczne zachowanie się procedur rekurencyjnych
* Techniki projektowania algorytmów: "dziel i rządź", wyszukiwanie lokalne i programowanie dynamiczne
* Zarządzanie pamięcią, B-drzewa i struktury indeksowe
Każdemu rozdziałowi towarzyszy zestaw ćwiczeń, o zróżnicowanym stopniu trudności, pomagających sprawdzić swoją wiedzę. "Algorytmy i struktury danych" to doskonały podręcznik dla studentów informatyki i pokrewnych kierunków, a także dla wszystkich zainteresowanych tą tematyką.
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ć programiści
* 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 doświadczenie w dowolnym języku programowania: prezentuje możliwość zastosowania w C++ najlepszych technik programistycznych oraz metodologii inżynierii programowania. Nawet jeżeli już wcześniej 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 wejścia-wyjścia i wielu innych. Jeżeli pragniesz tworzyć w języku C++ najlepsze programy, musisz projektować, myśleć 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:
* 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
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
Przy tworzeniu systemów informatycznych najważniejsze zadania wykonuje się, zanim powstanie pierwszy fragment kodu źródłowego. Wymogi stawiane współczesnym aplikacjom powodują, że inżynieria oprogramowania staje się kwestią kluczową. Opracowanie odpowiedniego projektu oraz właściwy dobór technologii i metodologii zapewniają szybką i efektywną pracę nad systemem. Niezwykle ważne jest poznanie dostępnych w języku Java struktur danych i umiejętność ich wykorzystania. Prawidłowo dobrana struktura danych znacznie przyspiesza nie tylko implementację aplikacji, ale również działanie gotowego systemu.
Książka "Struktury danych i techniki obiektowe na przykładzie Javy 5.0" przedstawia podstawowe struktury danych i sposoby ich wykorzystania podczas programowania obiektowego. Wszystkie wiadomości zostały zaprezentowane z uwzględnieniem reguł nowoczesnej inżynierii oprogramowania. Czytając kolejne rozdziały książki, poznasz najlepsze zastosowania różnych struktur danych oraz wady i zalety ich implementacji. Przede wszystkim jednak zrozumiesz potrzebę stosowania tak wielu struktur danych.
* Cykl życia oprogramowania
* Zastosowanie języka UML w projektowaniu systemów
* Obsługa błędów i wyjątków
* Testowanie oprogramowania
* Dziedziczenie i hierarchia klas
* Listy jedno- i dwukierunkowe
* Interfejs Collection
* Stosy i kolejki
* Algorytmy rekurencyjne
* Sortowanie danych
* Drzewa wyszukiwania
* Grafy
Po przeczytaniu tej książki zrozumiesz zasadę:
"Pomyśl, a dopiero potem pisz kod".
Modelowanie danych to umiejętność stosunkowo rzadko poszukiwana na rynku. Firmy chętniej zatrudniają programistów i administratorów baz danych. Jednak zaprojektowanie efektywnych mechanizmów przechowywania danych ma duże znaczenie przy tworzeniu korporacyjnych aplikacji bazodanowych. Dopiero w sytuacji, gdy systemy zaczynają działać niewłaściwie, okazuje się, że przyczyną jest niepoprawny projekt bazy danych. Odpowiednio przeprowadzony proces modelowania danych może ułatwić rozwiązywanie problemów z aplikacją.
Książka "Modelowanie danych" to wyczerpujące omówienie tego procesu i niezbędne źródło wiedzy dla każdego projektanta baz danych, który chce opracować wydajny i niezawodny system. Przedstawia modelowanie oparte na modelu relacyjnym, jego matematyczne podstawy i praktyczne wdrożenia. Czytając tę książkę, poznasz różne typy modeli. Dowiesz się, jaki poziom szczegółowości reprezentuje każdy z nich i jak je zaimplementować w konkretnych projektach informatycznych.
W książce omówiono także:
* Cykl istnienia danych
* Podstawowe pojęcia modelowania relacyjnego
* Reguły Codda dotyczące relacyjnych baz danych
* Normalizacja danych
* Analiza logiczna i fizyczna
* Modelowanie procesów biznesowych
* Tworzenie modelu logicznego
* Przekształcanie modelu logicznego w fizyczny
* Stosowanie metadanych
* Praktyki modelowania danych
Dzięki wiadomościom z tej książki staniesz się specjalistą w zakresie modelowania danych.
Wykorzystaj pełnię możliwości baz danych
* Na czym polega model relacyjny?
* W jaki sposób pobierać dane z bazy?
* Jak projektować bazy danych i tabele?
Systemy zarządzania bazami danych to aplikacje, które spotkać można praktycznie w każdej firmie.
Na rynku dostępnych jest wiele takich narzędzi, różniących się od siebie wydajnością, wymaganiami sprzętowymi, potencjalnymi zastosowaniami i - przede wszystkim — ceną. Użytkownicy mogą wybierać zarówno wśród rozwiązań komercyjnych, jak i nieustępujących im rozwiązań bezpłatnych. Cechą łączącą wszystkie systemy zarządzania bazami danych jest język, na którym opiera się praca z nimi - SQL. To ustandaryzowany zbiór poleceń pozwalających na niemal dowolne manipulacje danymi zgromadzonymi w bazach, tworzenie nowych baz oraz administrowanie serwerami baz danych. Bez jego znajomości wykorzystanie pełni możliwości bazy danych jest praktycznie niemożliwe.
„Praktyczny kurs SQL” to książka, dzięki której poznasz ten język. Czytając ją, dowiesz się, czym jest relacyjność w bazach danych, jak skonstruowane są takie bazy i czym są postaci normalne. Nauczysz się pobierać dane w oparciu o różne kryteria, przetwarzać uzyskane wyniki i wyświetlać je na ekranie w odpowiedni sposób. Poznasz funkcje pozwalające na modyfikację istniejących i dodawanie nowych danych, zastosujesz zapytania złożone i podzapytania oraz wykorzystasz mechanizmy transakcji. Przeczytasz także o projektowaniu baz danych oraz definiowaniu i nadawaniu uprawnień do korzystania z nich.
* Modele baz danych
* Postaci normalne w modelu relacyjnym
* Historia języka SQL
* Pobieranie danych za pomocą instrukcji SELECT
* Dobór kryteriów wybierania
* Przetwarzanie wyników zapytań
* Zapytania złożone i podzapytania
* Transakcje
* Modyfikowanie i dodawanie danych
* Projektowanie baz danych
* Uprawnienia
Uzupełnieniem do książki jest udostępniona tutaj baza danych.
Poznaj w praktyce język będący podstawą wszystkich nowoczesnych systemów zarządzania bazami danych.
Algorytmy, struktury danych i techniki programowania. Wydanie IIIWydawnictwo Helion
Algorytmika stanowi gałąź wiedzy, która w ciągu ostatnich kilkudziesięciu lat dostarczyła wielu efektywnych narzędzi wspomagających rozwiązywanie różnorodnych problemów za pomocą komputera. Teoria algorytmów i struktur danych jest jednym z podstawowych przedmiotów wykładanych na studiach informatycznych i pokrewnych.
To już trzecie, poprawione wydanie książki, która od wielu lat stanowi podstawowy podręcznik z dziedziny algorytmiki. Różni się od klasycznych podręczników akademickich: skierowana jest nie tylko do adeptów informatyki. Dzięki naciskowi na praktyczną stronę prezentowanych zagadnień powinna zainteresować także osoby programujące hobbystycznie, jak również tych wszystkich, dla których programowanie jest działalnością ważną, lecz nie podstawową w pracy zawodowej. Jest to nowoczesny podręcznik dla wszystkich, którzy w codziennej pracy programistycznej odczuwają potrzebę szybkiego odszukania pewnych informacji z dziedziny algorytmiki w celu zastosowania ich w swoich programach.
W książce opisano m.in.:
* Techniki rekurencyjne: co to jest rekurencja i jak ją stosować w praktyce?
* Sortowanie danych: najpopularniejsze procedury sortujące.
* Struktury danych: listy, kolejki, zbiory i drzewa w ujęciu praktycznym.
* Derekursywacja: jak zmienić program rekurencyjny (czasami bardzo czasochłonny) na wersję iteracyjną?
* Algorytmy przeszukiwania: przeszukiwanie liniowe, binarne i transformacja liniowa (ang. hashing).
* Przeszukiwanie tekstów: opis najbardziej znanych metod przeszukiwania tekstów (Boyera i Moore"a, Rabina i Karpa, brute-force, K-M-P).
* Zaawansowane techniki programowania: dziel i rządź, programowanie dynamiczne, algorytmy żarłoczne (ang. greedy).
* Algorytmika grafów: opis jednej z najciekawszych struktur danych występujących w informatyce.
* Sztuczna inteligencja: czy komputery mogą myśleć?
* Kodowanie i kompresja danych: opis najpopularniejszych metod kodowania i kompresji danych -- systemu kryptograficznego z kluczem publicznym i metody Huffmana
W książce znajdziesz również liczne przykłady i zadania, które pomogą Ci sprawdzić swoją wiedzę. Kod źródłowy znajdziesz na dołączonej dyskietce.
Bazy danych to podstawa większości złożonych systemów informatycznych. W oparciu o dane czerpane z tabel w bazie działają portale i sklepy internetowe, aplikacje biznesowe i informacyjne, a nawet multimedialne witryny, coraz częściej spotykane w urzędach, muzeach i innych budynkach użyteczności publicznej. Na rynku dostępnych jest wiele systemów zarządzania bazami danych, oferowanych przez różnych producentów i na różnych zasadach licencjonowania. Pomimo istotnych różnic, wszystkie opierają się na podobnych założeniach, a projektowanie wydajnych baz danych odbywa się w niemal identyczny sposób, niezależnie od docelowego systemu zarządzania nimi. Opanowanie wiadomości leżących u podstaw projektowania i wykorzystywania baz danych jest więc niezbędne do stworzenia efektywnego i bezpiecznego zaplecza bazodanowego dla systemu informatycznego.
Książka "Wprowadzenie do systemów baz danych" to szczegółowe omówienie wszystkich aspektów projektowania i stosowania baz danych. Szczególny nacisk położono w niej na podstawy modelowania danych i definiowania tabel. Opisano języki i mechanizmy udostępniane przez systemy zarządzania bazami danych oraz techniki implementacji samych systemów. Książka może pełnić rolę podręcznika pomocnego przy poznawaniu zagadnień związanych z bazami danych lub źródła informacji dla projektantów i administratorów systemów bazodanowych.
* Rozwiązania oparte na bazach danych
* Użytkownicy baz danych
* Architektury systemów zarządzania bazami danych
* Modelowanie danych oparte na związkach encji
* Zastosowanie języka UML w modelowaniu danych
* Relacyjny model danych
* Język SQL-99
* Normalizacja danych
* Składowanie danych na dysku
* Indeksy i klucze
* Algorytmy przetwarzania zapytań
* Mechanizmy transakcyjne
* Obiektowe bazy danych
* Bezpieczeństwo danych
* Język XML w bazach danych
* Technologie eksploracji danych
* Hurtownie danych, systemy GIS i bazy danych dla urządzeń mobilnych
Książka stanowi źródło wiedzy dla projektantów baz danychi oprogramowania bazodanowego.
Książka "Algorytmy w C" jest doskonałą pomocą dla programistów, którym w codziennej pracy potrzebne są sprawdzone rozwiązania. Nie ma tu teoretycznych dywagacji tak charakterystycznych dla większości książek o strukturach danych i algorytmach. Znajdziesz w niej za to przystępnie podane informacje i praktyczne techniki programowania.
Wyjątkowo elegancki styl programowania i pisania autora, Kyle’a Loudona, ułatwia poznanie najważniejszych struktur danych, takich jak listy, stosy, kolejki, zbiory, sterty, kolejki priorytetowe i grafy. Autor prezentuje użycie algorytmów sortujących, wyszukiwania, analiz numerycznych, kompresji danych, szyfrowania danych, typowych algorytmów obsługi grafów oraz geometrii analitycznej. W rozdziałach poświęconych kompresji i szyfrowaniu czytelnik znajdzie nie tylko gotowy, szybki w działaniu kod, ale też informacje przydatne dla osób, które nigdy nie miały czasu ani chęci zagłębiać się w omawiane zagadnienia.
W tekście umieszczono także kody wraz z przykładami zastosowania poszczególnych struktur danych i algorytmów. Komplet kodów źródłowych znajduje się na płycie CD-ROM. Kod ten został napisany w taki sposób, byś łatwo mógł go wykorzystać we własnych aplikacjach.
W książce omówiono:
* Wskaźniki
* Rekurencję
* Analizę algorytmów
* Struktury danych (listy, stosy, kolejki, zbiory, tablice asocjacyjne, drzewa, sterty, kolejki priorytetowe i grafy)
* Sortowanie i wyszukiwanie
* Metody numeryczne
* Kompresję danych
* Szyfrowanie danych
* Algorytmy operujące na grafach
* Algorytmy przydatne do obliczeń geometrycznych.
W niniejszej książce przedstawiono struktury danych i algorytmy stanowiące podstawę współczesnego programowania komputerów. Algorytmy są niczym przepis na rozwiązanie postawionego przed programistę problemu. Są one nierozerwalnie związane ze strukturami danych - listami, rekordami, tablicami, kolejkami, drzewami... podstawowymi elementami wiedzy każdego programisty.
Książka obejmuje szeroki zakres materiału, a do jej lektury wystarczy znajomość dowolnego języka programowania strukturalnego (np. Pascala). Opis klasycznych algorytmów uzupełniono o algorytmy związane z zarządzaniem pamięcią operacyjną i pamięciami zewnętrznymi.
Książka przedstawia algorytmy i struktury danych w kontekście rozwiązywania problemów za pomocą komputera. Z tematyką rozwiązywania problemów powiązano zagadnienie zliczania kroków oraz złożoności czasowej - wynika to z głębokiego przekonania autorów tej książki, iż wraz z pojawianiem się coraz szybszych komputerów, pojawiać się będą także coraz bardziej złożone problemy do rozwiązywania i - paradoksalnie - złożoność obliczeniowa używanych algorytmów zyskiwać będzie na znaczeniu.
W książce omówiono m.in.:
* Tradycyjne struktury danych: listy, kolejki, stosy
* Drzewa i operacje na strukturach drzew
* Typy danych oparte na zbiorach, słowniki i kolejki priorytetowe wraz ze sposobami ich implementacji
* Grafy zorientowane i niezorientowane
* Algorytmy sortowania i poszukiwania mediany
* Asymptotyczne zachowanie się procedur rekurencyjnych
* Techniki projektowania algorytmów: "dziel i rządź", wyszukiwanie lokalne i programowanie dynamiczne
* Zarządzanie pamięcią, B-drzewa i struktury indeksowe
Każdemu rozdziałowi towarzyszy zestaw ćwiczeń, o zróżnicowanym stopniu trudności, pomagających sprawdzić swoją wiedzę. "Algorytmy i struktury danych" to doskonały podręcznik dla studentów informatyki i pokrewnych kierunków, a także dla wszystkich zainteresowanych tą tematyką.
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ć programiści
* 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 doświadczenie w dowolnym języku programowania: prezentuje możliwość zastosowania w C++ najlepszych technik programistycznych oraz metodologii inżynierii programowania. Nawet jeżeli już wcześniej 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 wejścia-wyjścia i wielu innych. Jeżeli pragniesz tworzyć w języku C++ najlepsze programy, musisz projektować, myśleć 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:
* 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
Struktury danych i techniki obiektowe na przykładzie Javy 5.0Wydawnictwo Helion
Przy tworzeniu systemów informatycznych najważniejsze zadania wykonuje się, zanim powstanie pierwszy fragment kodu źródłowego. Wymogi stawiane współczesnym aplikacjom powodują, że inżynieria oprogramowania staje się kwestią kluczową. Opracowanie odpowiedniego projektu oraz właściwy dobór technologii i metodologii zapewniają szybką i efektywną pracę nad systemem. Niezwykle ważne jest poznanie dostępnych w języku Java struktur danych i umiejętność ich wykorzystania. Prawidłowo dobrana struktura danych znacznie przyspiesza nie tylko implementację aplikacji, ale również działanie gotowego systemu.
Książka "Struktury danych i techniki obiektowe na przykładzie Javy 5.0" przedstawia podstawowe struktury danych i sposoby ich wykorzystania podczas programowania obiektowego. Wszystkie wiadomości zostały zaprezentowane z uwzględnieniem reguł nowoczesnej inżynierii oprogramowania. Czytając kolejne rozdziały książki, poznasz najlepsze zastosowania różnych struktur danych oraz wady i zalety ich implementacji. Przede wszystkim jednak zrozumiesz potrzebę stosowania tak wielu struktur danych.
* Cykl życia oprogramowania
* Zastosowanie języka UML w projektowaniu systemów
* Obsługa błędów i wyjątków
* Testowanie oprogramowania
* Dziedziczenie i hierarchia klas
* Listy jedno- i dwukierunkowe
* Interfejs Collection
* Stosy i kolejki
* Algorytmy rekurencyjne
* Sortowanie danych
* Drzewa wyszukiwania
* Grafy
Po przeczytaniu tej książki zrozumiesz zasadę:
"Pomyśl, a dopiero potem pisz kod".
Modelowanie danych to umiejętność stosunkowo rzadko poszukiwana na rynku. Firmy chętniej zatrudniają programistów i administratorów baz danych. Jednak zaprojektowanie efektywnych mechanizmów przechowywania danych ma duże znaczenie przy tworzeniu korporacyjnych aplikacji bazodanowych. Dopiero w sytuacji, gdy systemy zaczynają działać niewłaściwie, okazuje się, że przyczyną jest niepoprawny projekt bazy danych. Odpowiednio przeprowadzony proces modelowania danych może ułatwić rozwiązywanie problemów z aplikacją.
Książka "Modelowanie danych" to wyczerpujące omówienie tego procesu i niezbędne źródło wiedzy dla każdego projektanta baz danych, który chce opracować wydajny i niezawodny system. Przedstawia modelowanie oparte na modelu relacyjnym, jego matematyczne podstawy i praktyczne wdrożenia. Czytając tę książkę, poznasz różne typy modeli. Dowiesz się, jaki poziom szczegółowości reprezentuje każdy z nich i jak je zaimplementować w konkretnych projektach informatycznych.
W książce omówiono także:
* Cykl istnienia danych
* Podstawowe pojęcia modelowania relacyjnego
* Reguły Codda dotyczące relacyjnych baz danych
* Normalizacja danych
* Analiza logiczna i fizyczna
* Modelowanie procesów biznesowych
* Tworzenie modelu logicznego
* Przekształcanie modelu logicznego w fizyczny
* Stosowanie metadanych
* Praktyki modelowania danych
Dzięki wiadomościom z tej książki staniesz się specjalistą w zakresie modelowania danych.
Wykorzystaj pełnię możliwości baz danych
* Na czym polega model relacyjny?
* W jaki sposób pobierać dane z bazy?
* Jak projektować bazy danych i tabele?
Systemy zarządzania bazami danych to aplikacje, które spotkać można praktycznie w każdej firmie.
Na rynku dostępnych jest wiele takich narzędzi, różniących się od siebie wydajnością, wymaganiami sprzętowymi, potencjalnymi zastosowaniami i - przede wszystkim — ceną. Użytkownicy mogą wybierać zarówno wśród rozwiązań komercyjnych, jak i nieustępujących im rozwiązań bezpłatnych. Cechą łączącą wszystkie systemy zarządzania bazami danych jest język, na którym opiera się praca z nimi - SQL. To ustandaryzowany zbiór poleceń pozwalających na niemal dowolne manipulacje danymi zgromadzonymi w bazach, tworzenie nowych baz oraz administrowanie serwerami baz danych. Bez jego znajomości wykorzystanie pełni możliwości bazy danych jest praktycznie niemożliwe.
„Praktyczny kurs SQL” to książka, dzięki której poznasz ten język. Czytając ją, dowiesz się, czym jest relacyjność w bazach danych, jak skonstruowane są takie bazy i czym są postaci normalne. Nauczysz się pobierać dane w oparciu o różne kryteria, przetwarzać uzyskane wyniki i wyświetlać je na ekranie w odpowiedni sposób. Poznasz funkcje pozwalające na modyfikację istniejących i dodawanie nowych danych, zastosujesz zapytania złożone i podzapytania oraz wykorzystasz mechanizmy transakcji. Przeczytasz także o projektowaniu baz danych oraz definiowaniu i nadawaniu uprawnień do korzystania z nich.
* Modele baz danych
* Postaci normalne w modelu relacyjnym
* Historia języka SQL
* Pobieranie danych za pomocą instrukcji SELECT
* Dobór kryteriów wybierania
* Przetwarzanie wyników zapytań
* Zapytania złożone i podzapytania
* Transakcje
* Modyfikowanie i dodawanie danych
* Projektowanie baz danych
* Uprawnienia
Uzupełnieniem do książki jest udostępniona tutaj baza danych.
Poznaj w praktyce język będący podstawą wszystkich nowoczesnych systemów zarządzania bazami danych.
Algorytmy, struktury danych i techniki programowania. Wydanie IIIWydawnictwo Helion
Algorytmika stanowi gałąź wiedzy, która w ciągu ostatnich kilkudziesięciu lat dostarczyła wielu efektywnych narzędzi wspomagających rozwiązywanie różnorodnych problemów za pomocą komputera. Teoria algorytmów i struktur danych jest jednym z podstawowych przedmiotów wykładanych na studiach informatycznych i pokrewnych.
To już trzecie, poprawione wydanie książki, która od wielu lat stanowi podstawowy podręcznik z dziedziny algorytmiki. Różni się od klasycznych podręczników akademickich: skierowana jest nie tylko do adeptów informatyki. Dzięki naciskowi na praktyczną stronę prezentowanych zagadnień powinna zainteresować także osoby programujące hobbystycznie, jak również tych wszystkich, dla których programowanie jest działalnością ważną, lecz nie podstawową w pracy zawodowej. Jest to nowoczesny podręcznik dla wszystkich, którzy w codziennej pracy programistycznej odczuwają potrzebę szybkiego odszukania pewnych informacji z dziedziny algorytmiki w celu zastosowania ich w swoich programach.
W książce opisano m.in.:
* Techniki rekurencyjne: co to jest rekurencja i jak ją stosować w praktyce?
* Sortowanie danych: najpopularniejsze procedury sortujące.
* Struktury danych: listy, kolejki, zbiory i drzewa w ujęciu praktycznym.
* Derekursywacja: jak zmienić program rekurencyjny (czasami bardzo czasochłonny) na wersję iteracyjną?
* Algorytmy przeszukiwania: przeszukiwanie liniowe, binarne i transformacja liniowa (ang. hashing).
* Przeszukiwanie tekstów: opis najbardziej znanych metod przeszukiwania tekstów (Boyera i Moore"a, Rabina i Karpa, brute-force, K-M-P).
* Zaawansowane techniki programowania: dziel i rządź, programowanie dynamiczne, algorytmy żarłoczne (ang. greedy).
* Algorytmika grafów: opis jednej z najciekawszych struktur danych występujących w informatyce.
* Sztuczna inteligencja: czy komputery mogą myśleć?
* Kodowanie i kompresja danych: opis najpopularniejszych metod kodowania i kompresji danych -- systemu kryptograficznego z kluczem publicznym i metody Huffmana
W książce znajdziesz również liczne przykłady i zadania, które pomogą Ci sprawdzić swoją wiedzę. Kod źródłowy znajdziesz na dołączonej dyskietce.
Projektowanie oprogramowania. Wstęp do programowania i techniki komputerowejWydawnictwo Helion
Umiejętność programowania nie ma już charakteru czysto zawodowego. Księgowi muszą się posługiwać arkuszami kalkulacyjnymi i edytorami tekstu, fotografowie korzystają z edytorów zdjęć, muzycy programują syntezatory, zaś profesjonalni programiści tworzą skomplikowane aplikacje. Programowanie jest więc bardzo pożądaną umiejętnością, potrzebną nie tylko informatykom.
Projektowanie oprogramowania wymaga takich samych zdolności analitycznych, jak matematyka. Jednak, w przeciwieństwie do matematyki, praca z programami jest aktywnym sposobem zdobywania wiedzy. Obcowanie z oprogramowaniem daje możliwość stałej interakcji, co pozwala na zgłębianie wiedzy, eksperymentowanie z nią oraz na stałą samoocenę.
Autorzy tej klasycznej publikacji stawiają tezę, iż "każdy powinien nauczyć się, jak projektować oprogramowanie" i właśnie nauka podstaw projektowania jest jej tematem głównym. W książce znajdziesz wiele podstawowych algorytmów, wyjaśnienia takich pojęć, jak akumulacja wiedzy czy równość ekstensjonalna i intensjonalna, słowem wszystko to, co stanowi teoretyczną podstawę wiedzy programistycznej.
Poznasz między innymi:
* Podstawowe struktury, z których składają się programy komputerowe
* Proste i złożony typy danych
* Metody przetwarzania danych
* Programowanie z użyciem rekurencji, algorytmy z nawracaniem
* Projektowanie abstrakcyjne
* Sposoby gromadzenia wiedzy
* Wykorzystanie wektorów
Z lektury książki "Projektowanie oprogramowania. Wstęp do programowania i techniki komputerowej" skorzystają zarówno studenci informatyki, jak też i słuchacze innych kierunków oraz wszystkie osoby, które chcą podbudować swoją wiedzę praktyczną solidnymi i przydatnymi podstawami teoretycznymi.
Struktura organizacyjna i architektura systemów komputerowychWydawnictwo Helion
Komputery już dawno stały się zjawiskiem powszechnym i nie są już traktowane jak magiczne skrzynki. Praktycznie wszyscy znają już możliwości ich praktycznego wykorzystania. W dobie intuicyjnych systemów operacyjnych, technologii plug-and-play i postępującego uproszczenia wszelkich operacji związanych z komputerami wiedza o architekturze i organizacji systemów komputerowych może wydawać się potrzebna jedynie wąskiej grupie specjalistów-sprzętowców. Jest jednak inaczej. Ogólna znajomość tego, co kryje się pod "maską" komputera potrzebna jest każdemu użytkownikowi komputera. Dzięki niej programista zrozumie, z czego wynikają błędy w działaniu programu, twórca systemów czasu rzeczywistego zoptymalizuje wykorzystanie procesora przez system, a osoba decydująca się na zakup nowego sprzętu we właściwy sposób zinterpretuje "obiektywne" testy przytaczane przez producentów w materiałach reklamowych.
Struktura organizacyjna i architektura systemów komputerowych to przystępne omówienie organizacji i architektury współczesnych komputerów. Książka, stworzona zgodnie z założeniami komitetu ACM-IEEE Computing Curricula 2001, nadaje się idealnie jako podręcznik dla kursu wprowadzającego w tą tematykę. Zawarte w niej zagadnienia zilustrowane są licznymi przykładami zaczerpniętymi z rzeczywistego świata, co dodatkowo ułatwia ich zrozumienie.
* Historia rozwoju komputerów.
* Sposoby przedstawiania danych, notacje i kody.
* Logika binarna i algebra Boole’a.
* Organizacja pracy systemu komputerowego, cykle maszynowe, magistrala, lista rozkazów, asembler.
* Tryby adresowania.
* Przechowywanie danych w pamięci komputera.
* Narzędzia programistyczne i systemy operacyjne.
* Alternatywne architektury komputerów.
* Analiza wydajności systemów komputerowych.
* Sieci komputerowe.
Doskonale dobrane proporcje pomiędzy objętością tekstu i poziomem szczegółowości oraz opisywanie wyłącznie istotnych aspektów zagadnienia powodują, że książka stanowi doskonałe źródło naprawdę przydatnej wiedzy.
Instrukcje SQL są kluczowymi elementami typowych aplikacji bazodanowych, a więc efektywność ich wykonywania decyduje w głównym stopniu o wydajności samych aplikacji. Twórcy aplikacji bazodanowych i administratorzy baz danych często spędzają długie godziny w celu upewnienia się, że dostęp do danych istotnie odbywa się po najszybszych ścieżkach, czyli że plany wykonywania wyrażeń SQL są optymalne. Wiąże się z tym między innymi rozważanie wzajemnego związku między strukturą wyrażeń SQL a planami ich wykonywania.
Książka ta poświęcona jest jednemu z kluczowych aspektów tego związku, często niedocenianemu, aczkolwiek niezmiernie istotnemu -- wyborowi odpowiedniego planu wykorzystywanego przez określone zapytanie. Autor prezentuje matematyczną metodą optymalizacji wyrażeń SQL, opierającą się na dobrze zdefiniowanym algorytmie postępowania i prowadzącą do znajdowania optymalnych (lub niemal optymalnych) planów wykonania dla określonych wyrażeń; jest to naprawdę atrakcyjna alternatywa dla poszukiwań metodą prób i błędów, rzadko dającą optymalne rezultaty. Czytelnik znajdzie w niniejszej książce opis wielu szczegółowych zagadnień związanych z optymalizacją wyrażeń SQL i baz danych w ogólności, między innymi takich jak:
* Buforowanie danych i zarządzanie tabelami
* Indeksowanie, implementowanie indeksów i związane z tym koszty
* Filtrowanie zawartości tabel i jego związek z indeksowaniem
* Złączenia tabel i metody ich realizacji
* Analiza planów wykonywania zapytań i zarządzanie tymi planami w bazach danych Oracle, MS SQL Server i DB2
* Sporządzanie diagramów zapytań i wykorzystywanie ich do celów optymalizacji złożonych zapytań oraz do wyznaczania najlepszych planów wykonywania
* Specjalne metody optymalizacji szczególnych przypadków, w których standardowe postępowanie okazuje się niewystarczające: buforowanie wielokrotnie wydawanych zapytań, łączenie i upodobnianie zapytań itp.
Treści poszczególnych rozdziałów towarzyszą ćwiczenia kontrolne, a całość wieńczy prezentacja zastosowania opisywanych koncepcji w (kompletnie opisanym) procesie optymalizowania konkretnej aplikacji.
Przyśpiesz działanie aplikacji -- zoptymalizuj dostęp do danych
Wprowadzenie do problematyki algorytmów i struktur danych
* Badanie złożoności algorytmów
* Analiza i implementacja algorytmów
* Zasady testowania kodu
Algorytmy leżą u podstaw programowania. Zasady rozwiązywania typowych problemów programistycznych, opisane w postaci blokowej lub za pomocą uniwersalnego "pseudokodu", są wykorzystywane codziennie przez tysiące informatyków na całym świecie. Właściwe zrozumienie zarówno samych algorytmów, jak i zasad ich stosowania w praktyce, jest kluczem do tworzenia wydajnych aplikacji. Umiejętność oceny efektywności i złożoności algorytmów przyda się również przy wyborze najlepszego rozwiązania określonego problemu.
Książka "Algorytmy. Od podstaw" przedstawia podstawowe zagadnienia związane z algorytmami. Dzięki niej nauczysz się wyznaczać złożoność obliczeniową algorytmów i implementować algorytmy w programach. Poznasz algorytmy sortowania, przeszukiwania i przetwarzania danych. Dowiesz się, czym są testy jednostkowe i dlaczego ich stosowanie jest tak ważne podczas tworzenia oprogramowania.
W książce omówiono m.in. następujące zagadnienia:
* Testy jednostkowe i biblioteka JUnit
* Iteracja i rekurencja
* Kolejki FIFO
* Listy i stosy
* Algorytmy sortowania
* Binarne wyszukiwanie i zastępowanie
* Zbiory, mapy i drzewa wyszukiwawcze
* Wyszukiwanie tekstu
Poznaj sprawdzone i powszechnie używane algorytmy
i zastosuj je w swoich aplikacjach.
Badanie algorytmów leży w samym sercu nauk komputerowych. W ostatnich latach dokonano znaczących postępów w tej dziedzinie. Opracowano m.in. wiele efektywniejszych algorytmów (szybkie przekształcenie Fouriera), odkryto także istnienie pewnych naturalnych zadań, dla których wszystkie algorytmy są nieefektywne. Wyniki te powodują wzrost zainteresowania badaniami algorytmów, co przyczynia się do intensywnego rozwoju tej dziedziny wiedzy.
Książka jest podręcznikiem wstępnego kursu projektowania i analizy algorytmów. Autorzy położyli nacisk raczej na prezentacji najważniejszych idei i przystępności wykładu, niż na szczegółach realizacji i sztuczkach programistycznych. Autorzy przedstawiają na ogół nieformalne, intuicyjne objaśnienia zamiast długich i pracochłonnych dowodów. Książka nie wymaga żadnego szczególnego przygotowania z zakresu matematyki, czy języków programowania. Pożądana jest jednak pewna dojrzałość w stosowaniu pojęć matematycznych, ogólne obycie w językach programowania wysokiego poziomu, takich jak FORTRAN lub ALGOL, a także podstawowa znajomość algebry liniowej.
W książce omówiono m.in.:
* Podstawowe pojęcia i modele (w tym maszynę Turniga)
* Najważniejsze struktury danych, rekurencję, programowanie dynamiczne
* Algorytmy sortowania, operacje na zbiorach, drzewach i grafach
* Szybkie przekształcenie Fouriera z zastosowaniami
* Algorytmy arytmetyczne, operacje na wielomianach
* Algorytmy dopasowania wzorców
* Problemy NP-zupełne
* Dolne ograniczenia złożoności obliczeniowej
Ważnym uzupełnieniem treści książki są ćwiczenia o zróżnicowanych poziomach trudności. "Projektowanie i analiza algorytmów" to doskonały podręcznik dla studentów informatyki i kierunków pokrewnych, a także wspaniała pomoc dla osób prowadzących wykłady i ćwiczenia na tych kierunkach.
Zakładając znajomość podstaw języka C++ książka ta umożliwia programistom rozwinięcie zaawansowanych umiejętności programowania poprzez stosowanie styli i idiomów języka C++. Struktura książki zorganizowana jest wokół abstrakcji wspieranych przez język C++: abstrakcyjnych typów danych, kombinacji typów w strukturach dziedziczenia, programowania obiektowego i dziedziczenia wielokrotnego. W książce przedstawione zostają także te idiomy, które nie znajdują bezpośredniego wsparcia w języku C++, takie jak wirtualne konstruktory, obiekty prototypów i zaawansowane techniki odzyskiwania nieużytków.
Książka:
* Przedstawia zalety i potencjalne pułapki zaawansowanych technik programowania w języku C++.
* Sposoby efektywnego łączenia abstrakcji języka C++ ilustruje szeregiem krótkich, ale stanowiących wystarczający instruktaż przykładów.
* Dostarcza wielu praktycznych zasad wykorzystania języka C++ do implementacji rezultatów projektowania obiektowego.
* Omawia wszystkie właściwości edycji 3.0 języka C++, w tym zastosowanie szablonów w celu wielokrotnego wykorzystania kodu.
* Przedstawia istotne aspekty rozwoju złożonych systemów, w tym projektowanie bibliotek, obsługę wyjątków i przetwarzanie rozproszone.
Książka ta jest ważnym podręcznikiem dla każdego programisty aplikacji lub programisty systemowego posługującego się językiem C++.
O autorze:
James Coplien pracuje w departamencie związanym z badaniami nad produkcją oprogramowania w firmie AT&T Bell Laboratories. Jest także konsultantem przy dużych projektach wykorzystujących technologie obiektowe.
[więcej...]
Relacyjne bazy danych stanowią podstawę większości współczesnych systemów informatycznych. Choć poszczególne systemy zarządzania bazami danych różnią się między sobą w wielu aspektach, są jednak oparte na wspólnych podstawach teoretycznych. Jeśli zrozumiesz ten wspólny fundament, będziesz mógł z łatwością budować na nim własne aplikacje, niezależnie od tego, czy jako systemu bazodanowego użyjesz komercyjnego Oracle"a lub MS SQL-a, czy też bezpłatnego PostgreSQL.
Książka "Relacyjne bazy danych" została napisana w celu jak najbardziej przystępnego objaśnienia zagadnień relacyjnego modelu danych oraz jego znaczenia dla projektantów i twórców baz danych. Objaśnienia tych, często skomplikowanych zagadnień, przybliżają tajniki relacyjnego modelu danych wykorzystując przykłady, a nie wzory matematyczne. Dzięki ich zrozumieniu będziesz mógł projektować bazy danych szybsze, bardziej elastyczne i lepiej dopasowane do zadań, jakie mają realizować. Poznasz:
* Podstawowe pojęcia związane z bazami danych: tabele, rekordy, pola
* Sposoby pobierania danych za pomocą zapytań
* Tworzenie raportów z wyselekcjonowanych danych
* Projektowanie baz z uwzględnieniem związków między danymi, klucze i indeksy
* Sposoby przestrzegania reguł integralności danych
* Tworzenie zaawansowanych wielowarstwowych aplikacji opartych o bazy danych
* Programowanie wyzwalaczy, procedur zapisanych, użycie perspektyw
* Zastosowania transakcji
* Teorię baz danych: reguły Codda, normalizację
* Język SQL
Dr Mark Whitehorn dysponuje ogromną wiedzą w dziedzinie teorii relacyjnych baz danych. Dzięki cyklowi artykułów w brytyjskim magazynie Personal Computer World udało mu się przybliżyć ją tysiącom użytkowników.
"Po prostu doskonała. Wyjaśniając tajniki zagadnień związanych z relacyjnymi bazami danych, Mark Whitehorn oraz Bill Marklyn osiągnęli o wiele więcej niż inni autorzy. Uczynili ten temat ciekawym, a nawet wręcz zabawnym, co stawia ich poza zasięgiem jakiejkolwiek konkurencji”.
Neil Fawcett, Edytor techniczny, VNU Business Publications
Poznanie ruchów figur szachowych to dopiero pierwszy krok w nauce tej gry. Aby ją opanować, trzeba zrozumieć strategie i taktyki, które wpływają na każdy ruch. To samo dotyczy języka C++. Znajomość właściwych strategii pomaga unikać pułapek i pracować o wiele skuteczniej. Rob Murray dzieląc się swoim doświadczeniem pomaga programistom C++ wykonać następny krok w kierunku tworzenia wydajnych aplikacji.
Licznie występujące w całej książce przykłady kodu mają na celu zilustrowanie przydatnych strategii programistycznych i ostrzec przed nabyciem niebezpiecznych nawyków. Aby dodatkowo ułatwić przyswajanie nowych umiejętności, każdy rozdział kończy się listą poruszonych w nim kluczowych zagadnień oraz pytaniami mającymi spowodować przemyślenia i dyskusje.
Książka przedstawia między innymi:
* Tworzenie właściwych abstrakcji dla projektu i przekształcanie abstrakcji w klasy C++
* Mechanizmy dziedziczenia pojedynczego i wielokrotnego
* Metody tworzenia klas
* Szczegółowy opis mechanizmu szablonów
* Wskazówki dotyczące stosowania wyjątków
* Metody tworzenia kodu nadającego się do wielokrotnego wykorzystania
* Przenoszenie programów z języka C do C++
Robert B. Murray jest wicedyrektorem ds. inżynierii oprogramowania w firmie Quantitative Data Systems dostarczającej niestandardowych rozwiązań z zakresu oprogramowania dla czołowych firm. [więcej...]
Dane i informacje to dziś najcenniejszy towar. Systemy zarządzania bazami danych to potężne narzędzia, pozwalające nie tylko na przechowywanie danych, ale także na ich przetwarzanie, modyfikowanie i wydobywanie w oparciu o przeróżne kryteria. Podstawą wszystkich operacji na danych zgromadzonych w bazach jest język SQL -- narzędzie służące do manipulowania zbiorami informacji. SQL, przyjęty i zatwierdzony przez międzynarodowe organizacje i komitety standaryzacyjne, jest wykorzystywany w niemal wszystkich systemach zarządzania bazami danych. Każdy z producentów dodaje do niego "własne" elementy, ale rdzeń języka pozostaje taki sam niezależnie od platformy.
Książka "SQL. Od podstaw" to podręcznik języka SQL i omówienie zagadnień związanych z projektowaniem baz danych przeznaczone dla osób wkraczających dopiero w świat baz danych. Przedstawia podstawowe wyrażenia języka SQL, służące do wprowadzania danych do bazy, wyciągania ich oraz manipulowania nimi. Czytając tą tę książkę, dowiesz się, czym są złączenia i podzapytania, postaci normalne baz danych oraz transakcje i perspektywy. Poznasz sposoby projektowania tabel, zabezpieczania zgromadzonych w nich informacji oraz metody podnoszenia wydajności i szybkości działania baz danych.
* Struktura relacyjnych baz danych
* Wpisywanie danych do bazy
* Wydobywanie i porządkowanie danych
* Normalizacja i postaci normalne
* Projektowanie baz danych
* Operacje matematyczne, grupujące i agregujące
* Stosowanie złączeń i podzapytań
* Tworzenie i wykorzystywanie perspektyw
* Mechanizmy transakcyjne
* Podnoszenie wydajności bazy danych i optymalizowanie zapytań
Dzięki tej książce poznasz wszystko -- znajdziesz omówienie tego, co może okazać się potrzebne podczas projektowania i korzystania z baz danych.
Bazy danych to aplikacje, z których korzystają niemal wszyscy użytkownicy komputerów, czasem nawet nie zdając sobie z tego sprawy. W bazach danych przechowywane są informacje o użytkownikach witryny WWW, kontrahentach firmy czy numerach telefonów abonentów operatora telekomunikacyjnego. Bazą danych jest również rejestr systemu Windows i książka telefoniczna w telefonie komórkowym. Jednak aby zapisać dane w formacie odpowiednim dla aplikacji niezbędne są standardy. Współcześnie wykorzystywany relacyjny model przechowywania danych sprawdza się znakomicie. Do manipulowania danymi zapisanymi w bazach stosowany jest inny standard: język SQL.
Książka "Bazy danych SQL. Teoria i praktyka" przedstawia wszystkie zagadnienia związane z przechowywaniem i przetwarzaniem danych we współczesnych aplikacjach. Przeczytasz w niej o relacyjnym i obiektowym modelu danych oraz najczęściej stosowanych systemach zarządzania bazami danych. Dowiesz się, jakie instrukcje języka SQL wykorzystywane są do wprowadzania danych, przetwarzania ich i wybierania z bazy. Nauczysz się optymalizować zapytania oraz stosować indeksy i procedury składowane. W książce znajdziesz również praktyczne wskazówki dotyczące konfigurowania serwerów baz danych i administrowania nimi.
* Przechowywanie prostych danych
* Relacyjny i obiektowy model danych
* Typy danych w języku SQL
* Instrukcje języka SQL
* Indeksy, wyzwalacze i procedury składowane
* Manipulowanie danymi
* Optymalizacja zapytań
* Charakterystyka najpopularniejszych systemów zarządzania bazami danych
Poznaj tajniki współczesnych mechanizmów przechowywania informacji.
Microsoft Access 2003 -- składnik pakietu Microsoft Office 2003 -- to niezwykle popularny program służący do tworzenia i obsługi baz danych. Możesz go używać do przechowywania, porządkowania i analizowania informacji o ludziach, miejscach i zdarzeniach dotyczących Twojego życia. Jest on wykorzystywany przez ludzi biznesu, naukowców, handlowców i tych wszystkich, którzy w swojej pracy potrzebują dostępu do dużych zbiorów danych. Access ułatwia ich wprowadzanie, wyszukiwanie potrzebnych informacji; potrafi też przedstawić wybrany zestaw informacji w formie atrakcyjnych raportów wzbogaconych o różnego rodzaju wykresy.
Dla osoby pragnącej w krótkim czasie opanować obsługę popularnego Accessa nie ma lepszej książki niż "Po prostu Access 2003 PL". Access różni się od innych systemów bazodanowych wizualnym projektowaniem tabel, kwerend i raportów. Książkę z serii "Po prostu" wyróżniają podobne cechy: przystępność oraz wizualny, opierający się na licznych ilustracjach i zrzutach ekranowych sposób przedstawiania materiału.
Książka omawia:
* Podstawowe pojęcia związane z bazami danych
* Interfejs Accessa
* Tworzenie nowej bazy danych
* Tworzenie tabel
* Projektowanie formularzy
* Wyszukiwanie danych za pomocą kwerend
* Tworzenie raportów i zestawień
* Zaawansowane techniki przeszukiwania bazy danych
* Pracę z tabelami i wykresami przestawnymi
* Wymianę danych z innymi programami
* Korzystanie z Accessa w internecie
* Zarządzanie prawami użytkowników Accessa
* Tworzenie własnych menu i pasków narzędziowych
* Pisanie makrodefinicji i zapytań w języku SQL
Książka przeznaczona jest dla osób swobodnie posługujących się systemem Windows, ale nie mających do tej pory styczności z tematyką baz danych. "Po prostu Access 2003 PL" to ograniczona do niezbędnego minimum dawka teorii i mnóstwo praktycznych wskazówek, dzięki którym wykonasz swoją pracę szybko i bez kłopotów.
C++ to popularny i uniwersalny język programowania. Jednak po dłuższym stosowaniu programiści zaczynają zauważać pewne jego niedoskonałości i ograniczenia. System typów, sposób działania niektórych kompilatorów, związki pomiędzy wskaźnikami i tablicami, nieprzewidziane w standardzie zachowania obiektów statycznych i bibliotek dynamicznych to tylko niektóre z nich. Aby je obejść, należy wykorzystywać wiele bardzo zaawansowanych i nieznanych wielu programistom metod.
Książka "Język C++. Gotowe rozwiązania dla programistów" to podręcznik dla tych programistów C++, którzy zaczęli już dostrzegać ograniczenia tego języka i zastanawiają się, jak sobie z nimi poradzić. Autor pokazuje sposoby ujarzmienia złożoności języka i uzyskania pełnej kontroli nad kodem. Przedstawia najpoważniejsze wady C++ i sposoby rozwiązywania powodowanych przez nie problemów. Opisuje również metody tworzenia stabilniejszego, bardziej uniwersalnego, wydajniejszego i łatwiejszego w pielęgnacji kodu.
* Wymuszanie założeń projektowych
* Cykl życia obiektów
* Hermetyzacja zasobów, danych i typów
* Modele dostępu do obiektów
* Obsługa wątków
* Korzystanie z obiektów statycznych
* Konwersja danych i typów
* Zarządzanie pamięcią
* Sterowanie działaniem kompilatora
Wszyscy programiści, niezależnie od stopnia zaawansowania, znajdą w tej książce wiadomości, które usprawnią i przyspieszą ich pracę.
Wzorce projektowe są modelami gotowych rozwiązań problemów programistycznych, przed jakimi często stają twórcy oprogramowania. Dzięki nim nie musimy ponownie "wymyślać koła". Dysponując wzorcami projektowymi, jesteśmy w stanie szybciej i efektywniej zbudować aplikację, ponieważ koncentrujemy się na samej implementacji algorytmu, a nie na jego opracowaniu. Najczęściej stosowane, klasyczne już, 23 wzorce projektowe opracowane przez twórców notacji UML implementowano już w wielu językach programowania. Jak sprawdzą się w połączeniu z jedną z najnowszych technologii, jaką jest .NET?
"C#. Wzorce projektowe" to kompletny przewodnik po wzorcach projektowych w C# i środowisku .NET. Przedstawia sposoby wykorzystania obiektowych cech języka C# i tworzenia eleganckiego kodu poprzez zastosowanie wzorców projektowych oraz korzystanie z ogromnych możliwości oferowanych przez biblioteki klas FCL dla środowiska Microsoft .NET. Wszystkie przedstawione w książce wzorce projektowe zostały zilustrowane przykładami kodu oraz diagramami UML, co ułatwia ich zrozumienie oraz zastosowanie w praktyce.
* Podstawowe wiadomości o wzorcach projektowych
* Interfejsy i klasy abstrakcyjne
* Wzorce interfejsów
* Wzorce odpowiedzialności
* Wzorce konstrukcyjne
* Wprowadzenie do operacji
* Wzorce operacji
* Wzorce rozszerzeń
* Wzorce rozszerzające
Poznaj zastosowanie wzorców projektowych
i wykorzystaj je w swojej pracy.
Przysłowie "kto pyta, nie błądzi" nie zawiera całej prawdy. Nie wystarczy pytać, trzeba jeszcze znajdować odpowiedzi. Książka "Programowanie w języku C. FAQ" to zbiór kilkuset odpowiedzi na najczęściej zadawane pytania na temat tego języka programowania. Z pewnością część z przedstawionych tu pytań już pojawiła się w Twojej praktyce programistycznej (pamiętasz, ile czasu straciłeś poszukując odpowiedzi?). Inne problemy dopiero się pojawią i jeśli na Twojej półce będzie ta książka, szybko znajdziesz w niej zwięzłe, ale wyczerpujące rozwiązanie często wzbogacone przykładem kodu źródłowego.
Chociaż książka żadną miarą nie powinna być traktowana jako podręcznik, z którego można nauczyć się programowania w C, z pewnością przyda się każdej osobie używającej tego języka w codziennej praktyce. Autor porusza wiele przydatnych zagadnień obejmujących szeroki zestaw tematów.
Omówiono między innymi:
* Deklaracje
* Struktury i unie
* Puste wskaźniki
* Wyrażenia
* Makroprocesor
* Alokację pamięci
* Różnice między standardami C
* Standardową bibliotekę wejścia-wyjścia
* Kwestie związane z systemami operacyjnymi
Zamiast długich tekstów -- rysunki z dokładnymi objaśnieniami.Samodzielna nauka nigdy nie była tak prosta
Znaczenie baz danych trudno przecenić. Służą one nie tylko jako magazyny informacji, ale co ważniejsze, pozwalają na niezwykle szybkie ich przeszukiwanie. W ciągu kilku sekund w tysiącach danych odnajdziesz te, których właśnie potrzebujesz i zaprezentujesz je w formie rozmaitych zestawień, a nawet wykresów. Baza danych pozwoli Ci gromadzić szczegółowe dane o kontrahentach czy produktach i przeprowadzać na nich dowolne operacje. Trudno dziś sobie wyobrazić nowoczesne przedsiębiorstwo, które nie korzystałoby z rozbudowanych baz danych. Program Microsoft Access to jeden z najprostszych w obsłudze i zarazem najpopularniejszy system bazodanowy powszechnie stosowany w firmach i instytucjach na całym świecie.
Książka "Access 2003 PL. Kurs" to nowoczesny podręcznik, dzięki któremu w krótkim czasie poznasz tę aplikację i nauczysz się używać jej w praktyce. Przystępny język, liczne ilustracje, ćwiczenia pokazujące jak krok po kroku realizować najczęstsze zadania -- to wszystko sprawi, że bez pomocy nauczyciela poznasz Accessa i powiększysz swoje kompetencje stając się bardziej cenionym i poszukiwanym pracownikiem.
Nauczysz się:
* Instalować Accessa i pakiet Office
* Tworzyć nowe bazy danych
* Projektować i modyfikować tabele przechowujące dane
* Wprowadzać dane do baz danych
* Wiązać ze sobą tabele za pomocą relacji
* Pisać własne kwerendy przeszukujące bazy danych
* Tworzyć wygodne formularze do wprowadzania danych
* Tworzyć eleganckie raporty na podstawie wybranych danych
* Zarządzać bazami danych
Książki wydawnictwa Helion z serii "Kurs" adresowane są do początkujących użytkowników komputerów, którzy chcą w krótkim czasie nabyć praktycznych umiejętności przydatnych w karierze zawodowej i codziennej pracy. Napisane przystępnym językiem i bogato ilustrowane są wspaniałą pomocą w samodzielnej nauce.
* Przeznaczony dla początkujących
* Praktyczne zadania omówione krok po kroku
* Przystępny i zrozumiały język
* Liczne ilustracje
* Idealny do samodzielnej nauki
Poznaj najpopularniejszą bazę danych dla Windows
Wykorzystanie wbudowanego w system Oracle języka PL/SQL w znaczący sposób powiększa potencjał programisty systemów bazodanowych. PL/SQL łączy w sobie duże możliwości i elastyczność języka czwartej generacji (4GL) SQL z konstrukcjami proceduralnymi języka trzeciej generacji (3GL). Programy napisane w tym języku umożliwiają obsługę danych zarówno w samym systemie Oracle, jak i w zewnętrznych aplikacjach.
Książka "Oracle8. Programowanie w języku PL/SQL" to wyczerpujące omówienie języka PL/SQL. To doskonała pozycja ułatwiająca naukę tego języka, świetnie też sprawdza się jako podręczne kompendium wiedzy o PL/SQL, pomocne w codziennej pracy. Liczne przykłady uzupełniają informacje zawarte w książce pokazując sprawdzone metody rozwiązywania problemów, napotykanych przez programistów.
W książce omówiono między innymi:
* Podstawy języka PL/SQL: struktura programu, zmienne, typy, wyrażenia i operatory oraz instrukcje sterujące
* Korzystanie z rekordów i tabel
* Korzystanie z SQL z poziomu PL/SQL, funkcje SQL dostępne w PL/SQL
* Tworzenie i używanie kursorów
* Bloki w PL/SQL: podprogramy (procedury i funkcje), pakiety i wyzwalacze
* Metody obsługi błędów w PL/SQL
* Obiekty w PL/SQL, kolekcje
* Testowanie i wykrywanie błędów
* Zagadnienia zaawansowane: dynamiczny PL/SQL, komunikacja między sesjami, kolejkowanie, obsługa zadań, procedury zewnętrzne
* Optymalizacja aplikacji PL/SQL i metody zapewnienia maksymalnej wydajności
Książka jest przeznaczona zarówno dla doświadczonych programistów, jak i tych, którzy jeszcze nie poznali innych języków trzeciej generacji. Przydatna, choć niekonieczna, jest ogólna znajomość systemu Oracle (łączenie się i korzystanie z bazy danych, podstawy języka SQL, itp.).
Poznaj język PL/SQL i wykorzystaj wszystkie możliwości systemu Oracle.
Poznaj najnowszą edycję bazy danych Oracle
Systemy baz danych Oracle, będące podstawą współczesnego e-biznesu, to złożone i skomplikowane rozwiązania. Jeśli chcesz poznać ich ogromny potencjał, to jest to właściwy podręcznik, autoryzowany przez firmę Oracle.
Książka "Oracle9i. Przewodnik dla początkujących", wypełniona jest do ostatniej strony użytecznymi wskazówkami i przykładami. Poznasz język proceduralny PL/SQL i podstawowe zagadnienia związane z administracją bazy danych, po czym następuje omówienie zaawansowanych technik zarządzania i manipulowania danymi. To kompletny podręcznik -- prowadzi Cię od konfiguracji bazy danych, tworzenia tabel i wykonywania zapytań, przez tworzenie formularzy i raportów, aż po partycjonowanie danych i zarządzanie uprawnieniami użytkowników. Dodatkowo książka zawiera omówienie narzędzi SQL*Plus, Oracle Enterprise Manager i Oracle Summary Machine.
* Poznaj bazy danych Oracle9i i serwer aplikacji Oracle9iAS
* Korzystaj z pomocy Oracle Support Services i z zasobów Oracle Technology Network, twórz zgłoszenia TAR, iTAR, korzystaj z serwisu MetaLink
* Twórz tabele i raporty, projektuj i uruchamiaj aplikacje korzystające z języków SQL i PL/SQL
* Poznaj przeznaczenie plików danych, dzienników odtwarzania i plików kontrolnych
* Połącz komputery w sieć Oracle Net i korzystaj z możliwości oferowanych przez przetwarzanie rozproszone
* Zarządzaj olbrzymimi tabelami, gromadź dane w hurtowni danych i przeprowadzaj zaawansowane analizy zbiorcze za pomocą narzędzi i funkcji Oracle Summary Engine
* Buduj bazy danych za pomocą zapytań DDL i DML
* Obejmuje wydania Oracle 7.x, 8i, 9i
Wykorzystaj w pełni ogromne możliwości Accessa 2003 PL
* Poznaj podstawy relacyjnych baz danych i programu Access 2003
* Wykorzystaj w pracy istniejące bazy danych i obiekty lub stwórz własne
* Zastosuj zaawansowane funkcje tworzenia i modyfikowania obiektów w bazach
* Dowiedz się, jak można połączyć Accessa 2003 z innymi aplikacjami
* Stwórz własne aplikacje dla Accessa za pomocą języka VBA
Microsoft Access 2003 to jeden z najpopularniejszych systemów do zarządzania bazami danych wykorzystywanych w przedsiębiorstwach i przez użytkowników prywatnych. Pozwala zarówno na prowadzenie domowej kartoteki płyt CD, jak i zarządzanie danymi klientów i kontrahentów. Łatwość obsługi, rozbudowany system pomocy, wykonywanie większości zadań za pomocą kreatorów i spore możliwości czynią z Accessa doskonałe narzędzie dla tych, którzy chcą korzystać z baz danych, a nie mają okazji lub czasu na naukę potężnych systemów, takich jak Oracle czy MS SQL Server.
Książka "Access 2003 PL dla każdego" przedstawia wszystko, co jest niezbędne do korzystania z tej aplikacji w domu lub w pracy. Opisuje podstawy relacyjnych baz danych, zasady tworzenia i modyfikowania baz oraz obiektów, możliwości wykorzystania Accessa w połączeniu z innymi aplikacjami, wykorzystywanie języka VBA.
* Podstawowe wiadomości o relacyjnych bazach danych
* Otwieranie istniejących baz danych
* Uruchamianie kwerend i raportów
* Wykorzystywanie istniejących obiektów
* Tworzenie nowej bazy danych
* Tworzenie własnych formularzy, raportów i kwerend
* Współużytkowanie danych z innymi aplikacjami
* Administrowanie danymi
* Podstawy tworzenia aplikacji w języku VBA
Nie ucz się C++ -- naucz się programować w C++
* C++ od najprzydatniejszych elementów, a nie od elementów najprostszych
* Rzeczywiste zadania i ich rozwiązania
* Opis C++ i biblioteki standardowej
* Książka sprawdzona w praktyce na Uniwersytecie Stanford
Książka ta ma pomóc Czytelnikowi w szybkim nauczeniu się języka C++ poprzez pisanie w nim przydatnych programów. Ta strategia wydaje się oczywista, jednak jest odmienna od powszechnie przyjętej metodologii nauczania. Autorzy nie będą uczyć Cię języka C, choć wielu uważa, że jest to niezbędne. W prezentowanych przykładach od razu wykorzystane zostaną wysokopoziomowe struktury, a prezentacja sposobu ich zastosowania będzie często wyprzedzać omówienie ich fundamentów. Dzięki takiemu podejściu zaczniesz szybko pisać programy wykorzystujące idiomy C++.
Zastosowany w książce schemat autorzy wypróbowali podczas kursów prowadzonych na Uniwersytecie Stanforda, na których studenci uczą się pisać programy już na pierwszych zajęciach.
Poznaj:
* Podstawowe cechy C++
* Operacje na ciągach
* Pętle i liczniki
* Przetwarzanie danych "porcja po porcji"
* Organizację programów i danych
* Kontenery sekwencyjne i analiza ciągów tekstowych
* Algorytmy biblioteki standardowej
* Kontenery asocjacyjne
* Funkcje uogólnione i definiowanie własnych typów
* Zarządzanie pamięcią i niskopoziomowymi strukturami danych
* Półautomatyczne zarządzanie pamięcią
* Programowanie zorientowane obiektowo
O autorach:
Andrew Koenig jest członkiem działu badającego systemy oprogramowania w Shannon Laboratory firmy AT&T oraz redaktorem projektu komitetów standaryzacyjnych języka C++. [więcej...]
Barbara Moo jest konsultantką z dwudziestoletnim doświadczeniem programistycznym, zarządzała projektem pierwszego kompilatora C++. [więcej...]
Napisz własną aplikację bazodanową
* Zaprojektuj tabele i zdefiniuj relacje pomiędzy nimi
* Utwórz formularze i kwerendy
* Wygeneruj raporty z bazy
Microsoft Access to jedna z najpopularniejszych baz danych wykorzystywanych w przedsiębiorstwach. Od innych systemów zarządzania bazami danych różni się tym, że zawiera zintegrowane środowisko programistyczne, za pomocą którego można zbudować własną aplikację służącą do manipulowania danymi zgromadzonymi w bazie. Dzięki kreatorom i narzędziom pomocniczym samodzielne utworzenie bazy danych oraz takiej aplikacji jest stosunkowo łatwe nawet dla użytkowników, którzy nigdy wcześniej nie pracowali z bazami danych.
"Access 2003 PL. Ćwiczenia praktyczne. Wydanie II" to podręcznik przedstawiający podstawowe zasady korzystania z Accessa i tworzenia własnej aplikacji bazodanowej. Przeczytasz w nim o projektowaniu i tworzeniu tabel, wiązaniu ich relacjami oraz wprowadzaniu danych. Zbudujesz kwerendy różnego typu i wykorzystasz je do modyfikowania oraz wybierania informacji z tabel. W kolejnych ćwiczeniach nauczysz się projektować formularze i raporty oraz dzielić aplikację na moduły.
* Praca z plikami baz danych
* Tworzenie tabel
* Relacje
* Operacje na danych z zastosowaniem kwerend
* Projektowanie formularzy
* Tworzenie raportów
* Makropolecenia
* Korzystanie z plików w formacie XML
Poznaj możliwości baz danych i
zapomnij o notesach oraz żółtych karteczkach.
Windows Movie Maker dołączany do systemu Windows XP to doskonałe narzędzie do domowego montażu cyfrowych filmów wideo. Jest prosty w obsłudze, posiada spore możliwości, a montaż filmów za jego pomocą jest przyjemną zabawą. Movie Maker pozwala na przeniesienie klipów z kamery cyfrowej, zaimportowanie materiałów z dysku, rozmieszczenie ujęć i połączenie ich przejściami, a także udźwiękowienie i dodanie efektów specjalnych. Gotowy film można wysłać pocztą elektroniczną, zapisać na dysku lub płycie CD albo opublikować w internecie.
Książka "Tworzenie filmów w Windows XP. Projekty" przedstawia proces tworzenia filmu wideo. Opisuje kolejne kroki prowadzące do zmontowania cyfrowego filmu wideo z przechwyconych ujęć i zaimportowanych materiałów. Nie znajdziesz w niej jednak długich opisów i dziesiątek parametrów. Każde zagadnienie jest przedstawione za pomocą zrzutów ekranu i krótkich instrukcji. Dzięki temu w ciągu kilku godzin zrealizujesz swój pierwszy projekt w Movie Makerze.
* Elementy interfejsu użytkownika
* Przechwytywanie klipów z kamery wideo
* Import materiałów źródłowych
* Tworzenie wstępnego montażu
* Dodawanie przejść i efektów specjalnych
* Nakładanie plansz tytułowych i napisów
* Udźwiękowienie filmu
* Korzystanie z funkcji Autofilm
* Eksport zmontowanego filmu
Przekonaj się, jak proste może być tworzenie własnych filmów wideo.
Przedstaw się światu!
* Jak zbudować elegancką stronę z blogiem?
* Jak tworzyć wyspecjalizowane przeglądarki bloga?
* Jak dodawać do własnego serwisu blogowego kanał RSS?
Prowadzenie bloga to nowy sposób na zwiększenie aktywności społecznej - szansa na zaistnienie w rzeczywistości wirtualnej, mająca swoje odbicie w tak zwanym „prawdziwym życiu”. Dlatego blogi piszą dziś niemal wszyscy: politycy, marketingowcy, celebryci, biznesmeni. Forma publicznie dostępnego pamiętnika pozwala na szeroką prezentację własnych poglądów, przekonań czy wartości. Z tego powodu blogi wykorzystywane są też jako wortale poświęcone określonej tematyce, promujące idee lub produkty. Ich użytkownicy stworzyli nawet własną społeczność, która 31 sierpnia obchodzi swoje święto - Dzień Bloga. Już dziś możesz do nich dołączyć!
„Blog, więcej niż internetowy pamiętnik” to książka, która pokaże Ci, jak założyć i prowadzić własny blog, a także aktywnie korzystać z innych blogów. Dowiesz się z niej, jak skorzystać z oprogramowania obsługującego serwisy blogowe, jak zintegrować języki PHP, HTML, CSS i SQL, aby stworzyć elegancką stronę prezentującą Twój blog. Nauczysz się budować własną bazę danych, przeznaczoną do przechowywania wpisów, a także zabezpieczać ją przed niepowołanymi modyfikacjami. I wreszcie poznasz sposób na dodanie do własnego serwisu kanału RSS, aby czytelnicy na bieżąco mogli obserwować pojawianie się nowych wpisów. Znajdziesz tu wszystko, czego potrzebujesz, aby zaprezentować światu swój blog!
* Obsługa okna tworzenia bloga
* Modyfikowanie wyglądu bloga
* Publikowanie w określonym terminie
* Rozbudowa bloga
* Instalacja czytnika RSS
* Subskrybowanie blogów za pomocą RSS
* Instalacja oprogramowania własnego serwera
* Baza danych i modyfikacja danych
* Projektowanie struktury bloga
* Zakładanie konta użytkownika
* Zakładanie bazy danych i tabeli danych
* Nadawanie uprawnień do korzystania z tabeli
* Przygotowanie szablonu i tworzenie strony www
* Automatyzowanie, blokowanie i trwałe usuwanie wpisu
* Tworzenie formularza wyszukiwania
* Tworzenie kanału RSS i wypełnianie go treścią
* Pobieranie programu Weber
Blog to prosty i fascynujący sposób, aby świat dowiedział się o Twoim istnieniu!
Projektowanie oprogramowania. Wstęp do programowania i techniki komputerowejWydawnictwo Helion
Umiejętność programowania nie ma już charakteru czysto zawodowego. Księgowi muszą się posługiwać arkuszami kalkulacyjnymi i edytorami tekstu, fotografowie korzystają z edytorów zdjęć, muzycy programują syntezatory, zaś profesjonalni programiści tworzą skomplikowane aplikacje. Programowanie jest więc bardzo pożądaną umiejętnością, potrzebną nie tylko informatykom.
Projektowanie oprogramowania wymaga takich samych zdolności analitycznych, jak matematyka. Jednak, w przeciwieństwie do matematyki, praca z programami jest aktywnym sposobem zdobywania wiedzy. Obcowanie z oprogramowaniem daje możliwość stałej interakcji, co pozwala na zgłębianie wiedzy, eksperymentowanie z nią oraz na stałą samoocenę.
Autorzy tej klasycznej publikacji stawiają tezę, iż "każdy powinien nauczyć się, jak projektować oprogramowanie" i właśnie nauka podstaw projektowania jest jej tematem głównym. W książce znajdziesz wiele podstawowych algorytmów, wyjaśnienia takich pojęć, jak akumulacja wiedzy czy równość ekstensjonalna i intensjonalna, słowem wszystko to, co stanowi teoretyczną podstawę wiedzy programistycznej.
Poznasz między innymi:
* Podstawowe struktury, z których składają się programy komputerowe
* Proste i złożony typy danych
* Metody przetwarzania danych
* Programowanie z użyciem rekurencji, algorytmy z nawracaniem
* Projektowanie abstrakcyjne
* Sposoby gromadzenia wiedzy
* Wykorzystanie wektorów
Z lektury książki "Projektowanie oprogramowania. Wstęp do programowania i techniki komputerowej" skorzystają zarówno studenci informatyki, jak też i słuchacze innych kierunków oraz wszystkie osoby, które chcą podbudować swoją wiedzę praktyczną solidnymi i przydatnymi podstawami teoretycznymi.
Struktura organizacyjna i architektura systemów komputerowychWydawnictwo Helion
Komputery już dawno stały się zjawiskiem powszechnym i nie są już traktowane jak magiczne skrzynki. Praktycznie wszyscy znają już możliwości ich praktycznego wykorzystania. W dobie intuicyjnych systemów operacyjnych, technologii plug-and-play i postępującego uproszczenia wszelkich operacji związanych z komputerami wiedza o architekturze i organizacji systemów komputerowych może wydawać się potrzebna jedynie wąskiej grupie specjalistów-sprzętowców. Jest jednak inaczej. Ogólna znajomość tego, co kryje się pod "maską" komputera potrzebna jest każdemu użytkownikowi komputera. Dzięki niej programista zrozumie, z czego wynikają błędy w działaniu programu, twórca systemów czasu rzeczywistego zoptymalizuje wykorzystanie procesora przez system, a osoba decydująca się na zakup nowego sprzętu we właściwy sposób zinterpretuje "obiektywne" testy przytaczane przez producentów w materiałach reklamowych.
Struktura organizacyjna i architektura systemów komputerowych to przystępne omówienie organizacji i architektury współczesnych komputerów. Książka, stworzona zgodnie z założeniami komitetu ACM-IEEE Computing Curricula 2001, nadaje się idealnie jako podręcznik dla kursu wprowadzającego w tą tematykę. Zawarte w niej zagadnienia zilustrowane są licznymi przykładami zaczerpniętymi z rzeczywistego świata, co dodatkowo ułatwia ich zrozumienie.
* Historia rozwoju komputerów.
* Sposoby przedstawiania danych, notacje i kody.
* Logika binarna i algebra Boole’a.
* Organizacja pracy systemu komputerowego, cykle maszynowe, magistrala, lista rozkazów, asembler.
* Tryby adresowania.
* Przechowywanie danych w pamięci komputera.
* Narzędzia programistyczne i systemy operacyjne.
* Alternatywne architektury komputerów.
* Analiza wydajności systemów komputerowych.
* Sieci komputerowe.
Doskonale dobrane proporcje pomiędzy objętością tekstu i poziomem szczegółowości oraz opisywanie wyłącznie istotnych aspektów zagadnienia powodują, że książka stanowi doskonałe źródło naprawdę przydatnej wiedzy.
Instrukcje SQL są kluczowymi elementami typowych aplikacji bazodanowych, a więc efektywność ich wykonywania decyduje w głównym stopniu o wydajności samych aplikacji. Twórcy aplikacji bazodanowych i administratorzy baz danych często spędzają długie godziny w celu upewnienia się, że dostęp do danych istotnie odbywa się po najszybszych ścieżkach, czyli że plany wykonywania wyrażeń SQL są optymalne. Wiąże się z tym między innymi rozważanie wzajemnego związku między strukturą wyrażeń SQL a planami ich wykonywania.
Książka ta poświęcona jest jednemu z kluczowych aspektów tego związku, często niedocenianemu, aczkolwiek niezmiernie istotnemu -- wyborowi odpowiedniego planu wykorzystywanego przez określone zapytanie. Autor prezentuje matematyczną metodą optymalizacji wyrażeń SQL, opierającą się na dobrze zdefiniowanym algorytmie postępowania i prowadzącą do znajdowania optymalnych (lub niemal optymalnych) planów wykonania dla określonych wyrażeń; jest to naprawdę atrakcyjna alternatywa dla poszukiwań metodą prób i błędów, rzadko dającą optymalne rezultaty. Czytelnik znajdzie w niniejszej książce opis wielu szczegółowych zagadnień związanych z optymalizacją wyrażeń SQL i baz danych w ogólności, między innymi takich jak:
* Buforowanie danych i zarządzanie tabelami
* Indeksowanie, implementowanie indeksów i związane z tym koszty
* Filtrowanie zawartości tabel i jego związek z indeksowaniem
* Złączenia tabel i metody ich realizacji
* Analiza planów wykonywania zapytań i zarządzanie tymi planami w bazach danych Oracle, MS SQL Server i DB2
* Sporządzanie diagramów zapytań i wykorzystywanie ich do celów optymalizacji złożonych zapytań oraz do wyznaczania najlepszych planów wykonywania
* Specjalne metody optymalizacji szczególnych przypadków, w których standardowe postępowanie okazuje się niewystarczające: buforowanie wielokrotnie wydawanych zapytań, łączenie i upodobnianie zapytań itp.
Treści poszczególnych rozdziałów towarzyszą ćwiczenia kontrolne, a całość wieńczy prezentacja zastosowania opisywanych koncepcji w (kompletnie opisanym) procesie optymalizowania konkretnej aplikacji.
Przyśpiesz działanie aplikacji -- zoptymalizuj dostęp do danych
Wprowadzenie do problematyki algorytmów i struktur danych
* Badanie złożoności algorytmów
* Analiza i implementacja algorytmów
* Zasady testowania kodu
Algorytmy leżą u podstaw programowania. Zasady rozwiązywania typowych problemów programistycznych, opisane w postaci blokowej lub za pomocą uniwersalnego "pseudokodu", są wykorzystywane codziennie przez tysiące informatyków na całym świecie. Właściwe zrozumienie zarówno samych algorytmów, jak i zasad ich stosowania w praktyce, jest kluczem do tworzenia wydajnych aplikacji. Umiejętność oceny efektywności i złożoności algorytmów przyda się również przy wyborze najlepszego rozwiązania określonego problemu.
Książka "Algorytmy. Od podstaw" przedstawia podstawowe zagadnienia związane z algorytmami. Dzięki niej nauczysz się wyznaczać złożoność obliczeniową algorytmów i implementować algorytmy w programach. Poznasz algorytmy sortowania, przeszukiwania i przetwarzania danych. Dowiesz się, czym są testy jednostkowe i dlaczego ich stosowanie jest tak ważne podczas tworzenia oprogramowania.
W książce omówiono m.in. następujące zagadnienia:
* Testy jednostkowe i biblioteka JUnit
* Iteracja i rekurencja
* Kolejki FIFO
* Listy i stosy
* Algorytmy sortowania
* Binarne wyszukiwanie i zastępowanie
* Zbiory, mapy i drzewa wyszukiwawcze
* Wyszukiwanie tekstu
Poznaj sprawdzone i powszechnie używane algorytmy
i zastosuj je w swoich aplikacjach.
Badanie algorytmów leży w samym sercu nauk komputerowych. W ostatnich latach dokonano znaczących postępów w tej dziedzinie. Opracowano m.in. wiele efektywniejszych algorytmów (szybkie przekształcenie Fouriera), odkryto także istnienie pewnych naturalnych zadań, dla których wszystkie algorytmy są nieefektywne. Wyniki te powodują wzrost zainteresowania badaniami algorytmów, co przyczynia się do intensywnego rozwoju tej dziedziny wiedzy.
Książka jest podręcznikiem wstępnego kursu projektowania i analizy algorytmów. Autorzy położyli nacisk raczej na prezentacji najważniejszych idei i przystępności wykładu, niż na szczegółach realizacji i sztuczkach programistycznych. Autorzy przedstawiają na ogół nieformalne, intuicyjne objaśnienia zamiast długich i pracochłonnych dowodów. Książka nie wymaga żadnego szczególnego przygotowania z zakresu matematyki, czy języków programowania. Pożądana jest jednak pewna dojrzałość w stosowaniu pojęć matematycznych, ogólne obycie w językach programowania wysokiego poziomu, takich jak FORTRAN lub ALGOL, a także podstawowa znajomość algebry liniowej.
W książce omówiono m.in.:
* Podstawowe pojęcia i modele (w tym maszynę Turniga)
* Najważniejsze struktury danych, rekurencję, programowanie dynamiczne
* Algorytmy sortowania, operacje na zbiorach, drzewach i grafach
* Szybkie przekształcenie Fouriera z zastosowaniami
* Algorytmy arytmetyczne, operacje na wielomianach
* Algorytmy dopasowania wzorców
* Problemy NP-zupełne
* Dolne ograniczenia złożoności obliczeniowej
Ważnym uzupełnieniem treści książki są ćwiczenia o zróżnicowanych poziomach trudności. "Projektowanie i analiza algorytmów" to doskonały podręcznik dla studentów informatyki i kierunków pokrewnych, a także wspaniała pomoc dla osób prowadzących wykłady i ćwiczenia na tych kierunkach.
Zakładając znajomość podstaw języka C++ książka ta umożliwia programistom rozwinięcie zaawansowanych umiejętności programowania poprzez stosowanie styli i idiomów języka C++. Struktura książki zorganizowana jest wokół abstrakcji wspieranych przez język C++: abstrakcyjnych typów danych, kombinacji typów w strukturach dziedziczenia, programowania obiektowego i dziedziczenia wielokrotnego. W książce przedstawione zostają także te idiomy, które nie znajdują bezpośredniego wsparcia w języku C++, takie jak wirtualne konstruktory, obiekty prototypów i zaawansowane techniki odzyskiwania nieużytków.
Książka:
* Przedstawia zalety i potencjalne pułapki zaawansowanych technik programowania w języku C++.
* Sposoby efektywnego łączenia abstrakcji języka C++ ilustruje szeregiem krótkich, ale stanowiących wystarczający instruktaż przykładów.
* Dostarcza wielu praktycznych zasad wykorzystania języka C++ do implementacji rezultatów projektowania obiektowego.
* Omawia wszystkie właściwości edycji 3.0 języka C++, w tym zastosowanie szablonów w celu wielokrotnego wykorzystania kodu.
* Przedstawia istotne aspekty rozwoju złożonych systemów, w tym projektowanie bibliotek, obsługę wyjątków i przetwarzanie rozproszone.
Książka ta jest ważnym podręcznikiem dla każdego programisty aplikacji lub programisty systemowego posługującego się językiem C++.
O autorze:
James Coplien pracuje w departamencie związanym z badaniami nad produkcją oprogramowania w firmie AT&T Bell Laboratories. Jest także konsultantem przy dużych projektach wykorzystujących technologie obiektowe.
[więcej...]
Relacyjne bazy danych stanowią podstawę większości współczesnych systemów informatycznych. Choć poszczególne systemy zarządzania bazami danych różnią się między sobą w wielu aspektach, są jednak oparte na wspólnych podstawach teoretycznych. Jeśli zrozumiesz ten wspólny fundament, będziesz mógł z łatwością budować na nim własne aplikacje, niezależnie od tego, czy jako systemu bazodanowego użyjesz komercyjnego Oracle"a lub MS SQL-a, czy też bezpłatnego PostgreSQL.
Książka "Relacyjne bazy danych" została napisana w celu jak najbardziej przystępnego objaśnienia zagadnień relacyjnego modelu danych oraz jego znaczenia dla projektantów i twórców baz danych. Objaśnienia tych, często skomplikowanych zagadnień, przybliżają tajniki relacyjnego modelu danych wykorzystując przykłady, a nie wzory matematyczne. Dzięki ich zrozumieniu będziesz mógł projektować bazy danych szybsze, bardziej elastyczne i lepiej dopasowane do zadań, jakie mają realizować. Poznasz:
* Podstawowe pojęcia związane z bazami danych: tabele, rekordy, pola
* Sposoby pobierania danych za pomocą zapytań
* Tworzenie raportów z wyselekcjonowanych danych
* Projektowanie baz z uwzględnieniem związków między danymi, klucze i indeksy
* Sposoby przestrzegania reguł integralności danych
* Tworzenie zaawansowanych wielowarstwowych aplikacji opartych o bazy danych
* Programowanie wyzwalaczy, procedur zapisanych, użycie perspektyw
* Zastosowania transakcji
* Teorię baz danych: reguły Codda, normalizację
* Język SQL
Dr Mark Whitehorn dysponuje ogromną wiedzą w dziedzinie teorii relacyjnych baz danych. Dzięki cyklowi artykułów w brytyjskim magazynie Personal Computer World udało mu się przybliżyć ją tysiącom użytkowników.
"Po prostu doskonała. Wyjaśniając tajniki zagadnień związanych z relacyjnymi bazami danych, Mark Whitehorn oraz Bill Marklyn osiągnęli o wiele więcej niż inni autorzy. Uczynili ten temat ciekawym, a nawet wręcz zabawnym, co stawia ich poza zasięgiem jakiejkolwiek konkurencji”.
Neil Fawcett, Edytor techniczny, VNU Business Publications
Poznanie ruchów figur szachowych to dopiero pierwszy krok w nauce tej gry. Aby ją opanować, trzeba zrozumieć strategie i taktyki, które wpływają na każdy ruch. To samo dotyczy języka C++. Znajomość właściwych strategii pomaga unikać pułapek i pracować o wiele skuteczniej. Rob Murray dzieląc się swoim doświadczeniem pomaga programistom C++ wykonać następny krok w kierunku tworzenia wydajnych aplikacji.
Licznie występujące w całej książce przykłady kodu mają na celu zilustrowanie przydatnych strategii programistycznych i ostrzec przed nabyciem niebezpiecznych nawyków. Aby dodatkowo ułatwić przyswajanie nowych umiejętności, każdy rozdział kończy się listą poruszonych w nim kluczowych zagadnień oraz pytaniami mającymi spowodować przemyślenia i dyskusje.
Książka przedstawia między innymi:
* Tworzenie właściwych abstrakcji dla projektu i przekształcanie abstrakcji w klasy C++
* Mechanizmy dziedziczenia pojedynczego i wielokrotnego
* Metody tworzenia klas
* Szczegółowy opis mechanizmu szablonów
* Wskazówki dotyczące stosowania wyjątków
* Metody tworzenia kodu nadającego się do wielokrotnego wykorzystania
* Przenoszenie programów z języka C do C++
Robert B. Murray jest wicedyrektorem ds. inżynierii oprogramowania w firmie Quantitative Data Systems dostarczającej niestandardowych rozwiązań z zakresu oprogramowania dla czołowych firm. [więcej...]
Dane i informacje to dziś najcenniejszy towar. Systemy zarządzania bazami danych to potężne narzędzia, pozwalające nie tylko na przechowywanie danych, ale także na ich przetwarzanie, modyfikowanie i wydobywanie w oparciu o przeróżne kryteria. Podstawą wszystkich operacji na danych zgromadzonych w bazach jest język SQL -- narzędzie służące do manipulowania zbiorami informacji. SQL, przyjęty i zatwierdzony przez międzynarodowe organizacje i komitety standaryzacyjne, jest wykorzystywany w niemal wszystkich systemach zarządzania bazami danych. Każdy z producentów dodaje do niego "własne" elementy, ale rdzeń języka pozostaje taki sam niezależnie od platformy.
Książka "SQL. Od podstaw" to podręcznik języka SQL i omówienie zagadnień związanych z projektowaniem baz danych przeznaczone dla osób wkraczających dopiero w świat baz danych. Przedstawia podstawowe wyrażenia języka SQL, służące do wprowadzania danych do bazy, wyciągania ich oraz manipulowania nimi. Czytając tą tę książkę, dowiesz się, czym są złączenia i podzapytania, postaci normalne baz danych oraz transakcje i perspektywy. Poznasz sposoby projektowania tabel, zabezpieczania zgromadzonych w nich informacji oraz metody podnoszenia wydajności i szybkości działania baz danych.
* Struktura relacyjnych baz danych
* Wpisywanie danych do bazy
* Wydobywanie i porządkowanie danych
* Normalizacja i postaci normalne
* Projektowanie baz danych
* Operacje matematyczne, grupujące i agregujące
* Stosowanie złączeń i podzapytań
* Tworzenie i wykorzystywanie perspektyw
* Mechanizmy transakcyjne
* Podnoszenie wydajności bazy danych i optymalizowanie zapytań
Dzięki tej książce poznasz wszystko -- znajdziesz omówienie tego, co może okazać się potrzebne podczas projektowania i korzystania z baz danych.
Bazy danych to aplikacje, z których korzystają niemal wszyscy użytkownicy komputerów, czasem nawet nie zdając sobie z tego sprawy. W bazach danych przechowywane są informacje o użytkownikach witryny WWW, kontrahentach firmy czy numerach telefonów abonentów operatora telekomunikacyjnego. Bazą danych jest również rejestr systemu Windows i książka telefoniczna w telefonie komórkowym. Jednak aby zapisać dane w formacie odpowiednim dla aplikacji niezbędne są standardy. Współcześnie wykorzystywany relacyjny model przechowywania danych sprawdza się znakomicie. Do manipulowania danymi zapisanymi w bazach stosowany jest inny standard: język SQL.
Książka "Bazy danych SQL. Teoria i praktyka" przedstawia wszystkie zagadnienia związane z przechowywaniem i przetwarzaniem danych we współczesnych aplikacjach. Przeczytasz w niej o relacyjnym i obiektowym modelu danych oraz najczęściej stosowanych systemach zarządzania bazami danych. Dowiesz się, jakie instrukcje języka SQL wykorzystywane są do wprowadzania danych, przetwarzania ich i wybierania z bazy. Nauczysz się optymalizować zapytania oraz stosować indeksy i procedury składowane. W książce znajdziesz również praktyczne wskazówki dotyczące konfigurowania serwerów baz danych i administrowania nimi.
* Przechowywanie prostych danych
* Relacyjny i obiektowy model danych
* Typy danych w języku SQL
* Instrukcje języka SQL
* Indeksy, wyzwalacze i procedury składowane
* Manipulowanie danymi
* Optymalizacja zapytań
* Charakterystyka najpopularniejszych systemów zarządzania bazami danych
Poznaj tajniki współczesnych mechanizmów przechowywania informacji.
Microsoft Access 2003 -- składnik pakietu Microsoft Office 2003 -- to niezwykle popularny program służący do tworzenia i obsługi baz danych. Możesz go używać do przechowywania, porządkowania i analizowania informacji o ludziach, miejscach i zdarzeniach dotyczących Twojego życia. Jest on wykorzystywany przez ludzi biznesu, naukowców, handlowców i tych wszystkich, którzy w swojej pracy potrzebują dostępu do dużych zbiorów danych. Access ułatwia ich wprowadzanie, wyszukiwanie potrzebnych informacji; potrafi też przedstawić wybrany zestaw informacji w formie atrakcyjnych raportów wzbogaconych o różnego rodzaju wykresy.
Dla osoby pragnącej w krótkim czasie opanować obsługę popularnego Accessa nie ma lepszej książki niż "Po prostu Access 2003 PL". Access różni się od innych systemów bazodanowych wizualnym projektowaniem tabel, kwerend i raportów. Książkę z serii "Po prostu" wyróżniają podobne cechy: przystępność oraz wizualny, opierający się na licznych ilustracjach i zrzutach ekranowych sposób przedstawiania materiału.
Książka omawia:
* Podstawowe pojęcia związane z bazami danych
* Interfejs Accessa
* Tworzenie nowej bazy danych
* Tworzenie tabel
* Projektowanie formularzy
* Wyszukiwanie danych za pomocą kwerend
* Tworzenie raportów i zestawień
* Zaawansowane techniki przeszukiwania bazy danych
* Pracę z tabelami i wykresami przestawnymi
* Wymianę danych z innymi programami
* Korzystanie z Accessa w internecie
* Zarządzanie prawami użytkowników Accessa
* Tworzenie własnych menu i pasków narzędziowych
* Pisanie makrodefinicji i zapytań w języku SQL
Książka przeznaczona jest dla osób swobodnie posługujących się systemem Windows, ale nie mających do tej pory styczności z tematyką baz danych. "Po prostu Access 2003 PL" to ograniczona do niezbędnego minimum dawka teorii i mnóstwo praktycznych wskazówek, dzięki którym wykonasz swoją pracę szybko i bez kłopotów.
C++ to popularny i uniwersalny język programowania. Jednak po dłuższym stosowaniu programiści zaczynają zauważać pewne jego niedoskonałości i ograniczenia. System typów, sposób działania niektórych kompilatorów, związki pomiędzy wskaźnikami i tablicami, nieprzewidziane w standardzie zachowania obiektów statycznych i bibliotek dynamicznych to tylko niektóre z nich. Aby je obejść, należy wykorzystywać wiele bardzo zaawansowanych i nieznanych wielu programistom metod.
Książka "Język C++. Gotowe rozwiązania dla programistów" to podręcznik dla tych programistów C++, którzy zaczęli już dostrzegać ograniczenia tego języka i zastanawiają się, jak sobie z nimi poradzić. Autor pokazuje sposoby ujarzmienia złożoności języka i uzyskania pełnej kontroli nad kodem. Przedstawia najpoważniejsze wady C++ i sposoby rozwiązywania powodowanych przez nie problemów. Opisuje również metody tworzenia stabilniejszego, bardziej uniwersalnego, wydajniejszego i łatwiejszego w pielęgnacji kodu.
* Wymuszanie założeń projektowych
* Cykl życia obiektów
* Hermetyzacja zasobów, danych i typów
* Modele dostępu do obiektów
* Obsługa wątków
* Korzystanie z obiektów statycznych
* Konwersja danych i typów
* Zarządzanie pamięcią
* Sterowanie działaniem kompilatora
Wszyscy programiści, niezależnie od stopnia zaawansowania, znajdą w tej książce wiadomości, które usprawnią i przyspieszą ich pracę.
Wzorce projektowe są modelami gotowych rozwiązań problemów programistycznych, przed jakimi często stają twórcy oprogramowania. Dzięki nim nie musimy ponownie "wymyślać koła". Dysponując wzorcami projektowymi, jesteśmy w stanie szybciej i efektywniej zbudować aplikację, ponieważ koncentrujemy się na samej implementacji algorytmu, a nie na jego opracowaniu. Najczęściej stosowane, klasyczne już, 23 wzorce projektowe opracowane przez twórców notacji UML implementowano już w wielu językach programowania. Jak sprawdzą się w połączeniu z jedną z najnowszych technologii, jaką jest .NET?
"C#. Wzorce projektowe" to kompletny przewodnik po wzorcach projektowych w C# i środowisku .NET. Przedstawia sposoby wykorzystania obiektowych cech języka C# i tworzenia eleganckiego kodu poprzez zastosowanie wzorców projektowych oraz korzystanie z ogromnych możliwości oferowanych przez biblioteki klas FCL dla środowiska Microsoft .NET. Wszystkie przedstawione w książce wzorce projektowe zostały zilustrowane przykładami kodu oraz diagramami UML, co ułatwia ich zrozumienie oraz zastosowanie w praktyce.
* Podstawowe wiadomości o wzorcach projektowych
* Interfejsy i klasy abstrakcyjne
* Wzorce interfejsów
* Wzorce odpowiedzialności
* Wzorce konstrukcyjne
* Wprowadzenie do operacji
* Wzorce operacji
* Wzorce rozszerzeń
* Wzorce rozszerzające
Poznaj zastosowanie wzorców projektowych
i wykorzystaj je w swojej pracy.
Przysłowie "kto pyta, nie błądzi" nie zawiera całej prawdy. Nie wystarczy pytać, trzeba jeszcze znajdować odpowiedzi. Książka "Programowanie w języku C. FAQ" to zbiór kilkuset odpowiedzi na najczęściej zadawane pytania na temat tego języka programowania. Z pewnością część z przedstawionych tu pytań już pojawiła się w Twojej praktyce programistycznej (pamiętasz, ile czasu straciłeś poszukując odpowiedzi?). Inne problemy dopiero się pojawią i jeśli na Twojej półce będzie ta książka, szybko znajdziesz w niej zwięzłe, ale wyczerpujące rozwiązanie często wzbogacone przykładem kodu źródłowego.
Chociaż książka żadną miarą nie powinna być traktowana jako podręcznik, z którego można nauczyć się programowania w C, z pewnością przyda się każdej osobie używającej tego języka w codziennej praktyce. Autor porusza wiele przydatnych zagadnień obejmujących szeroki zestaw tematów.
Omówiono między innymi:
* Deklaracje
* Struktury i unie
* Puste wskaźniki
* Wyrażenia
* Makroprocesor
* Alokację pamięci
* Różnice między standardami C
* Standardową bibliotekę wejścia-wyjścia
* Kwestie związane z systemami operacyjnymi
Zamiast długich tekstów -- rysunki z dokładnymi objaśnieniami.Samodzielna nauka nigdy nie była tak prosta
Znaczenie baz danych trudno przecenić. Służą one nie tylko jako magazyny informacji, ale co ważniejsze, pozwalają na niezwykle szybkie ich przeszukiwanie. W ciągu kilku sekund w tysiącach danych odnajdziesz te, których właśnie potrzebujesz i zaprezentujesz je w formie rozmaitych zestawień, a nawet wykresów. Baza danych pozwoli Ci gromadzić szczegółowe dane o kontrahentach czy produktach i przeprowadzać na nich dowolne operacje. Trudno dziś sobie wyobrazić nowoczesne przedsiębiorstwo, które nie korzystałoby z rozbudowanych baz danych. Program Microsoft Access to jeden z najprostszych w obsłudze i zarazem najpopularniejszy system bazodanowy powszechnie stosowany w firmach i instytucjach na całym świecie.
Książka "Access 2003 PL. Kurs" to nowoczesny podręcznik, dzięki któremu w krótkim czasie poznasz tę aplikację i nauczysz się używać jej w praktyce. Przystępny język, liczne ilustracje, ćwiczenia pokazujące jak krok po kroku realizować najczęstsze zadania -- to wszystko sprawi, że bez pomocy nauczyciela poznasz Accessa i powiększysz swoje kompetencje stając się bardziej cenionym i poszukiwanym pracownikiem.
Nauczysz się:
* Instalować Accessa i pakiet Office
* Tworzyć nowe bazy danych
* Projektować i modyfikować tabele przechowujące dane
* Wprowadzać dane do baz danych
* Wiązać ze sobą tabele za pomocą relacji
* Pisać własne kwerendy przeszukujące bazy danych
* Tworzyć wygodne formularze do wprowadzania danych
* Tworzyć eleganckie raporty na podstawie wybranych danych
* Zarządzać bazami danych
Książki wydawnictwa Helion z serii "Kurs" adresowane są do początkujących użytkowników komputerów, którzy chcą w krótkim czasie nabyć praktycznych umiejętności przydatnych w karierze zawodowej i codziennej pracy. Napisane przystępnym językiem i bogato ilustrowane są wspaniałą pomocą w samodzielnej nauce.
* Przeznaczony dla początkujących
* Praktyczne zadania omówione krok po kroku
* Przystępny i zrozumiały język
* Liczne ilustracje
* Idealny do samodzielnej nauki
Poznaj najpopularniejszą bazę danych dla Windows
Wykorzystanie wbudowanego w system Oracle języka PL/SQL w znaczący sposób powiększa potencjał programisty systemów bazodanowych. PL/SQL łączy w sobie duże możliwości i elastyczność języka czwartej generacji (4GL) SQL z konstrukcjami proceduralnymi języka trzeciej generacji (3GL). Programy napisane w tym języku umożliwiają obsługę danych zarówno w samym systemie Oracle, jak i w zewnętrznych aplikacjach.
Książka "Oracle8. Programowanie w języku PL/SQL" to wyczerpujące omówienie języka PL/SQL. To doskonała pozycja ułatwiająca naukę tego języka, świetnie też sprawdza się jako podręczne kompendium wiedzy o PL/SQL, pomocne w codziennej pracy. Liczne przykłady uzupełniają informacje zawarte w książce pokazując sprawdzone metody rozwiązywania problemów, napotykanych przez programistów.
W książce omówiono między innymi:
* Podstawy języka PL/SQL: struktura programu, zmienne, typy, wyrażenia i operatory oraz instrukcje sterujące
* Korzystanie z rekordów i tabel
* Korzystanie z SQL z poziomu PL/SQL, funkcje SQL dostępne w PL/SQL
* Tworzenie i używanie kursorów
* Bloki w PL/SQL: podprogramy (procedury i funkcje), pakiety i wyzwalacze
* Metody obsługi błędów w PL/SQL
* Obiekty w PL/SQL, kolekcje
* Testowanie i wykrywanie błędów
* Zagadnienia zaawansowane: dynamiczny PL/SQL, komunikacja między sesjami, kolejkowanie, obsługa zadań, procedury zewnętrzne
* Optymalizacja aplikacji PL/SQL i metody zapewnienia maksymalnej wydajności
Książka jest przeznaczona zarówno dla doświadczonych programistów, jak i tych, którzy jeszcze nie poznali innych języków trzeciej generacji. Przydatna, choć niekonieczna, jest ogólna znajomość systemu Oracle (łączenie się i korzystanie z bazy danych, podstawy języka SQL, itp.).
Poznaj język PL/SQL i wykorzystaj wszystkie możliwości systemu Oracle.
Poznaj najnowszą edycję bazy danych Oracle
Systemy baz danych Oracle, będące podstawą współczesnego e-biznesu, to złożone i skomplikowane rozwiązania. Jeśli chcesz poznać ich ogromny potencjał, to jest to właściwy podręcznik, autoryzowany przez firmę Oracle.
Książka "Oracle9i. Przewodnik dla początkujących", wypełniona jest do ostatniej strony użytecznymi wskazówkami i przykładami. Poznasz język proceduralny PL/SQL i podstawowe zagadnienia związane z administracją bazy danych, po czym następuje omówienie zaawansowanych technik zarządzania i manipulowania danymi. To kompletny podręcznik -- prowadzi Cię od konfiguracji bazy danych, tworzenia tabel i wykonywania zapytań, przez tworzenie formularzy i raportów, aż po partycjonowanie danych i zarządzanie uprawnieniami użytkowników. Dodatkowo książka zawiera omówienie narzędzi SQL*Plus, Oracle Enterprise Manager i Oracle Summary Machine.
* Poznaj bazy danych Oracle9i i serwer aplikacji Oracle9iAS
* Korzystaj z pomocy Oracle Support Services i z zasobów Oracle Technology Network, twórz zgłoszenia TAR, iTAR, korzystaj z serwisu MetaLink
* Twórz tabele i raporty, projektuj i uruchamiaj aplikacje korzystające z języków SQL i PL/SQL
* Poznaj przeznaczenie plików danych, dzienników odtwarzania i plików kontrolnych
* Połącz komputery w sieć Oracle Net i korzystaj z możliwości oferowanych przez przetwarzanie rozproszone
* Zarządzaj olbrzymimi tabelami, gromadź dane w hurtowni danych i przeprowadzaj zaawansowane analizy zbiorcze za pomocą narzędzi i funkcji Oracle Summary Engine
* Buduj bazy danych za pomocą zapytań DDL i DML
* Obejmuje wydania Oracle 7.x, 8i, 9i
Wykorzystaj w pełni ogromne możliwości Accessa 2003 PL
* Poznaj podstawy relacyjnych baz danych i programu Access 2003
* Wykorzystaj w pracy istniejące bazy danych i obiekty lub stwórz własne
* Zastosuj zaawansowane funkcje tworzenia i modyfikowania obiektów w bazach
* Dowiedz się, jak można połączyć Accessa 2003 z innymi aplikacjami
* Stwórz własne aplikacje dla Accessa za pomocą języka VBA
Microsoft Access 2003 to jeden z najpopularniejszych systemów do zarządzania bazami danych wykorzystywanych w przedsiębiorstwach i przez użytkowników prywatnych. Pozwala zarówno na prowadzenie domowej kartoteki płyt CD, jak i zarządzanie danymi klientów i kontrahentów. Łatwość obsługi, rozbudowany system pomocy, wykonywanie większości zadań za pomocą kreatorów i spore możliwości czynią z Accessa doskonałe narzędzie dla tych, którzy chcą korzystać z baz danych, a nie mają okazji lub czasu na naukę potężnych systemów, takich jak Oracle czy MS SQL Server.
Książka "Access 2003 PL dla każdego" przedstawia wszystko, co jest niezbędne do korzystania z tej aplikacji w domu lub w pracy. Opisuje podstawy relacyjnych baz danych, zasady tworzenia i modyfikowania baz oraz obiektów, możliwości wykorzystania Accessa w połączeniu z innymi aplikacjami, wykorzystywanie języka VBA.
* Podstawowe wiadomości o relacyjnych bazach danych
* Otwieranie istniejących baz danych
* Uruchamianie kwerend i raportów
* Wykorzystywanie istniejących obiektów
* Tworzenie nowej bazy danych
* Tworzenie własnych formularzy, raportów i kwerend
* Współużytkowanie danych z innymi aplikacjami
* Administrowanie danymi
* Podstawy tworzenia aplikacji w języku VBA
Nie ucz się C++ -- naucz się programować w C++
* C++ od najprzydatniejszych elementów, a nie od elementów najprostszych
* Rzeczywiste zadania i ich rozwiązania
* Opis C++ i biblioteki standardowej
* Książka sprawdzona w praktyce na Uniwersytecie Stanford
Książka ta ma pomóc Czytelnikowi w szybkim nauczeniu się języka C++ poprzez pisanie w nim przydatnych programów. Ta strategia wydaje się oczywista, jednak jest odmienna od powszechnie przyjętej metodologii nauczania. Autorzy nie będą uczyć Cię języka C, choć wielu uważa, że jest to niezbędne. W prezentowanych przykładach od razu wykorzystane zostaną wysokopoziomowe struktury, a prezentacja sposobu ich zastosowania będzie często wyprzedzać omówienie ich fundamentów. Dzięki takiemu podejściu zaczniesz szybko pisać programy wykorzystujące idiomy C++.
Zastosowany w książce schemat autorzy wypróbowali podczas kursów prowadzonych na Uniwersytecie Stanforda, na których studenci uczą się pisać programy już na pierwszych zajęciach.
Poznaj:
* Podstawowe cechy C++
* Operacje na ciągach
* Pętle i liczniki
* Przetwarzanie danych "porcja po porcji"
* Organizację programów i danych
* Kontenery sekwencyjne i analiza ciągów tekstowych
* Algorytmy biblioteki standardowej
* Kontenery asocjacyjne
* Funkcje uogólnione i definiowanie własnych typów
* Zarządzanie pamięcią i niskopoziomowymi strukturami danych
* Półautomatyczne zarządzanie pamięcią
* Programowanie zorientowane obiektowo
O autorach:
Andrew Koenig jest członkiem działu badającego systemy oprogramowania w Shannon Laboratory firmy AT&T oraz redaktorem projektu komitetów standaryzacyjnych języka C++. [więcej...]
Barbara Moo jest konsultantką z dwudziestoletnim doświadczeniem programistycznym, zarządzała projektem pierwszego kompilatora C++. [więcej...]
Napisz własną aplikację bazodanową
* Zaprojektuj tabele i zdefiniuj relacje pomiędzy nimi
* Utwórz formularze i kwerendy
* Wygeneruj raporty z bazy
Microsoft Access to jedna z najpopularniejszych baz danych wykorzystywanych w przedsiębiorstwach. Od innych systemów zarządzania bazami danych różni się tym, że zawiera zintegrowane środowisko programistyczne, za pomocą którego można zbudować własną aplikację służącą do manipulowania danymi zgromadzonymi w bazie. Dzięki kreatorom i narzędziom pomocniczym samodzielne utworzenie bazy danych oraz takiej aplikacji jest stosunkowo łatwe nawet dla użytkowników, którzy nigdy wcześniej nie pracowali z bazami danych.
"Access 2003 PL. Ćwiczenia praktyczne. Wydanie II" to podręcznik przedstawiający podstawowe zasady korzystania z Accessa i tworzenia własnej aplikacji bazodanowej. Przeczytasz w nim o projektowaniu i tworzeniu tabel, wiązaniu ich relacjami oraz wprowadzaniu danych. Zbudujesz kwerendy różnego typu i wykorzystasz je do modyfikowania oraz wybierania informacji z tabel. W kolejnych ćwiczeniach nauczysz się projektować formularze i raporty oraz dzielić aplikację na moduły.
* Praca z plikami baz danych
* Tworzenie tabel
* Relacje
* Operacje na danych z zastosowaniem kwerend
* Projektowanie formularzy
* Tworzenie raportów
* Makropolecenia
* Korzystanie z plików w formacie XML
Poznaj możliwości baz danych i
zapomnij o notesach oraz żółtych karteczkach.
Windows Movie Maker dołączany do systemu Windows XP to doskonałe narzędzie do domowego montażu cyfrowych filmów wideo. Jest prosty w obsłudze, posiada spore możliwości, a montaż filmów za jego pomocą jest przyjemną zabawą. Movie Maker pozwala na przeniesienie klipów z kamery cyfrowej, zaimportowanie materiałów z dysku, rozmieszczenie ujęć i połączenie ich przejściami, a także udźwiękowienie i dodanie efektów specjalnych. Gotowy film można wysłać pocztą elektroniczną, zapisać na dysku lub płycie CD albo opublikować w internecie.
Książka "Tworzenie filmów w Windows XP. Projekty" przedstawia proces tworzenia filmu wideo. Opisuje kolejne kroki prowadzące do zmontowania cyfrowego filmu wideo z przechwyconych ujęć i zaimportowanych materiałów. Nie znajdziesz w niej jednak długich opisów i dziesiątek parametrów. Każde zagadnienie jest przedstawione za pomocą zrzutów ekranu i krótkich instrukcji. Dzięki temu w ciągu kilku godzin zrealizujesz swój pierwszy projekt w Movie Makerze.
* Elementy interfejsu użytkownika
* Przechwytywanie klipów z kamery wideo
* Import materiałów źródłowych
* Tworzenie wstępnego montażu
* Dodawanie przejść i efektów specjalnych
* Nakładanie plansz tytułowych i napisów
* Udźwiękowienie filmu
* Korzystanie z funkcji Autofilm
* Eksport zmontowanego filmu
Przekonaj się, jak proste może być tworzenie własnych filmów wideo.
Przedstaw się światu!
* Jak zbudować elegancką stronę z blogiem?
* Jak tworzyć wyspecjalizowane przeglądarki bloga?
* Jak dodawać do własnego serwisu blogowego kanał RSS?
Prowadzenie bloga to nowy sposób na zwiększenie aktywności społecznej - szansa na zaistnienie w rzeczywistości wirtualnej, mająca swoje odbicie w tak zwanym „prawdziwym życiu”. Dlatego blogi piszą dziś niemal wszyscy: politycy, marketingowcy, celebryci, biznesmeni. Forma publicznie dostępnego pamiętnika pozwala na szeroką prezentację własnych poglądów, przekonań czy wartości. Z tego powodu blogi wykorzystywane są też jako wortale poświęcone określonej tematyce, promujące idee lub produkty. Ich użytkownicy stworzyli nawet własną społeczność, która 31 sierpnia obchodzi swoje święto - Dzień Bloga. Już dziś możesz do nich dołączyć!
„Blog, więcej niż internetowy pamiętnik” to książka, która pokaże Ci, jak założyć i prowadzić własny blog, a także aktywnie korzystać z innych blogów. Dowiesz się z niej, jak skorzystać z oprogramowania obsługującego serwisy blogowe, jak zintegrować języki PHP, HTML, CSS i SQL, aby stworzyć elegancką stronę prezentującą Twój blog. Nauczysz się budować własną bazę danych, przeznaczoną do przechowywania wpisów, a także zabezpieczać ją przed niepowołanymi modyfikacjami. I wreszcie poznasz sposób na dodanie do własnego serwisu kanału RSS, aby czytelnicy na bieżąco mogli obserwować pojawianie się nowych wpisów. Znajdziesz tu wszystko, czego potrzebujesz, aby zaprezentować światu swój blog!
* Obsługa okna tworzenia bloga
* Modyfikowanie wyglądu bloga
* Publikowanie w określonym terminie
* Rozbudowa bloga
* Instalacja czytnika RSS
* Subskrybowanie blogów za pomocą RSS
* Instalacja oprogramowania własnego serwera
* Baza danych i modyfikacja danych
* Projektowanie struktury bloga
* Zakładanie konta użytkownika
* Zakładanie bazy danych i tabeli danych
* Nadawanie uprawnień do korzystania z tabeli
* Przygotowanie szablonu i tworzenie strony www
* Automatyzowanie, blokowanie i trwałe usuwanie wpisu
* Tworzenie formularza wyszukiwania
* Tworzenie kanału RSS i wypełnianie go treścią
* Pobieranie programu Weber
Blog to prosty i fascynujący sposób, aby świat dowiedział się o Twoim istnieniu!
Pakiet biurowy MS Office jest jednym z podstawowych narzędzi wykorzystywanych we współczesnych firmach. Zawarty w nim system zarządzania bazami danych Access to wygodna w obsłudze aplikacja służąca do operowania na zbiorach danych. Dzięki prostocie obsługi, sporym możliwościom i wizualnym narzędziom stanowi doskonałe rozwiązanie dla przedsiębiorstw, w których duże znaczenie ma czas poświęcany na opanowanie nowych programów. Kreatory i rozbudowany system pomocy oferowane przez Accessa niezwykle upraszczają proces tworzenia bazy oraz aplikacji przeznaczonych do obsługi zgromadzonych w niej danych.
W książce "Access w biurze i nie tylko" znajdziesz omówienie podstawowych możliwości tego systemu. Nauczysz się tworzyć i otwierać istniejące bazy danych oraz tworzyć nowe. Dowiesz się, w jaki sposób projektować tabele i jak dobierać typy danych dla poszczególnych kolumn tabeli. Przeczytasz o relacjach, poznasz sposoby wybierania i wstawiania danych, a także manipulowania nimi za pomocą kwerend. W kolejnych rozdziałach znajdziesz informacje o tworzeniu formularzy i raportów oraz wyświetlaniu wykresów na podstawie danych zgromadzonych w bazie. Nauczysz się także pisać własne makra i poznasz podstawy języka Visual Basic for Applications.
* Otwieranie istniejących baz danych
* Tworzenie tabel
* Typy danych
* Tworzenie i modyfikowanie relacji
* Manipulowanie danymi za pomocą kwerend
* Konstruowanie formularzy
* Budowanie raportów
* Automatyzacja pracy za pomocą makropoleceń
* Tworzenie i wyświetlanie wykresów
Dane to dziś najcenniejszy towar. Naucz się nim zarządzać.
Pozycjonowanie i optymalizacja stron WWW. Ćwiczenia praktyczneWydawnictwo Helion
Zapewnij swojej witrynie miejsce w pierwszej dziesiątce!
* Jak działają wyszukiwarki?
* Jaki wpływ na pozycję serwisu mają linki przychodzące i wychodzące?
* Czy istnieją zagrożenia związane z niewłaściwym pozycjonowaniem?
Stworzenie serwisu WWW to dopiero połowa sukcesu w Internecie. Druga połowa to zapewnienie witrynie odpowiedniej popularności. A tę popularność może zagwarantować przede wszystkim wysokie miejsce w wynikach wyszukiwarek. Jak to osiągnąć? Od czego zacząć i jak monitorować skuteczność prowadzonych działań? Wszystkie odpowiedzi znajdziesz właśnie w tej książce!
Poprzez liczne przykłady i ćwiczenia autorzy zapoznają Cię ze sposobem działania wyszukiwarki Google i zasadami doboru właściwych słów kluczowych. Pokażą, jak najlepiej rozmieścić je na stronie. Ponadto dowiesz się, jaki wpływ na pozycję strony mają linki wychodzące oraz przychodzące, jak przebiega proces indeksowania strony, jak działają systemy wymiany linków oraz jak wykorzystać statystyki do obserwacji ruchu na stronie. Przeczytasz także o tym, jakie zagrożenia niesie ze sobą niewłaściwa procedura pozycjonowania.
* Sposób działania Google oraz innych wyszukiwarek
* Definiowanie fraz i słów kluczowych
* Wpływ linków przychodzących i wychodzących na pozycję strony
* Korzystanie z systemów wymiany linków
* Proces indeksacji witryny
* Zagrożenia związane z niewłaściwym pozycjonowaniem
* Wykorzystanie statystyk do śledzenia ruchu na stronie
* Sposoby reklamowania serwisu
Zwiększ oglądalność swojej witryny WWW!
E-wizerunek. Internet jako narzędzie kreowania image'u w biznesieWydawnictwo Helion
Lustereczko, powiedz przecie,
kto jest najwspanialszy w necie?
* Tworzenie i wykorzystywanie odpowiedniego wizerunku oraz zarabianie na nim
* Budowanie pożądanych marek bez wielkich nakładów finansowych
* Interaktywne relacje z klientami
* Wykorzystanie Internetu do rozwoju biznesu
* Narzędzia kreowania wizerunku w sieci
Jak Cię widzą (w sieci), tak Cię piszą
Internet jest nie tylko rewolucyjnym medium, pierwszym o naprawdę masowym zasięgu działania. Stanowi on przede wszystkim fascynujący alternatywny świat. Działa jak magnes, co roku przyciągając nowych użytkowników. Niczym używka, wciąż odnotowuje wydłużenie czasu kontaktu z odbiorcą. I last but not least — Internet to niekończący się pasaż handlowy, wymarzone miejsce spotkań podaży i popytu.
Poznaj specyfikę światowej sieci WWW i znajdź w niej właściwe miejsce dla Twojej marki. E-marketing rządzi się własnymi prawami — z jednej strony bezustannie stawia firmy przed nowymi wyzwaniami, z drugiej zaś stale kreuje nowe narzędzia dotarcia do klienta. A są one naprawdę fascynujące: możliwość dowolnej personalizacji przekazu, olbrzymia ilość kanałów, a przede wszystkim atrakcyjne społeczności — ludzie młodzi, aktywni, hobbyści, biznesmeni oraz entuzjaści nowinek. Mogą oni zostać ambasadorami Twojej marki, ale mogą też ją zniszczyć. Dlatego musisz poznać zasady rządzące Internetem i jego społecznościami, a następnie zacząć budować instrumenty wywierania wpływu i wykorzystać je dla dobra Twojego produktu.
Internet ma przyszłość!
* Czym jest e-wizerunek i jak wpływa na sukces firm, produktów i ludzi?
* Narzędzia budowania image’u — strona WWW, fora internetowe, newslettery i inne.
* Sześć zasad skutecznego kreowania e-wizerunku.
* Grzechy główne działań internetowych.
* Marka jako efekt przemyślanej strategii wizerunkowej.
* Case studies
Microsoft Visual C++ 2008. Tworzenie aplikacji dla WindowsWydawnictwo Helion
Rozpocznij przygodę z Visual C++!
* Jakie prawa rządzą programowaniem obiektowym?
* Jak tworzyć usługi systemowe?
* Jak dokumentować tworzony kod?
Microsoft Visual C++ jest zintegrowanym środowiskiem, pozwalającym na tworzenie aplikacji przy użyciu języków C, C++ lub C++/CLI. Zawiera ono wyspecjalizowane narzędzia, pomagające w wydajnym tworzeniu rozwiązań opartych o te języki. Pierwsza wersja Visual C++ została wydana w 1992 roku, a środowisko to jest bezustannie ulepszane. Najnowsze wydanie, z datą 2008, zostało opublikowane w listopadzie 2007 roku i wprowadziło wiele nowości — jak chociażby wsparcie dla technologii .NET 3.5. Niewątpliwie narzędzie firmowane przez giganta z Redmond jest jednym z najpopularniejszych, a używają go programiści z całego świata.
Dzięki tej książce również Ty możesz dołączyć do tego wybitnego grona. Po jej przeczytaniu będziesz miał wiedzę na temat środowiska programistycznego i platformy .NET. Poznasz podstawy programowania obiektowego, nauczysz się uzyskiwać dostęp do informacji zgromadzonych w bazach danych oraz korzystać z możliwości Internetu bezpośrednio w Twoich programach. Kolejne rozdziały przedstawiają interesujące tematy dotyczące obsługi wyjątków, programów wielowątkowych oraz sposobów tworzenia usług systemowych. Ostatni rozdział poświęcony został tak istotnej kwestii, jak dokumentowanie kodu — to czynność, o której wielu programistów zapomina. Jeżeli chcesz rozpocząć przygodę z Microsoft Visual C++, ta książka jest idealną lekturą dla Ciebie!
* Praca w zintegrowanym środowisku programistycznym
* Pojęcia związane z programowaniem obiektowym
* Uzyskiwanie dostępu do informacji zgromadzonych w bazach danych
* Wykorzystanie transakcji w pracy z danymi
* Sposoby integracji z siecią Internet
* Obsługa wyjątków
* Programowanie wielowątkowe
* Tworzenie grafiki oraz wykorzystanie multimediów
* Drukowanie w systemie Windows
* Tworzenie usług systemowych
* Dokumentowanie kodu programu
Wykorzystaj możliwości Microsoft Visual C++ 2008!
Co potrafi Twój iPhone? Podręcznik użytkownika. Wydanie IIWydawnictwo Helion
Poznaj możliwości iPhone’a!
* Jak rozpocząć pracę z iPhone’em?
* Jak wykorzystać możliwości przeglądarki Safari?
* Jak używać map?
Pojawienie się iPhone’a firmy Apple można bez wahania nazwać Rewolucją! Rewolucją przez duże "R". Nigdy wcześniej żaden nowy telefon nie wzbudził takich emocji. Nigdy wcześniej nie ustawiały się na wiele dni przed premierą kolejki pod salonami. Co sprawia, że ludzie szaleją za tym małym cudem techniki? Wielodotykowy (ang. multitouch) ekran, dostęp do tysięcy aplikacji, stabilny system operacyjny oraz elegancki, przykuwający uwagę wygląd to tylko niektóre z jego zalet.
Właśnie dzięki tej książce dowiesz się, co tak naprawdę potrafi Twój iPhone. Autor — niezawodny Scott Kelby — bez zbędnego zagłębiania się w szczegóły techniczne opowie Ci o możliwościach tego rewolucyjnego urządzenia. Zaprezentuje Ci m.in. sposoby wykonywania różnych operacji przy użyciu tego telefonu. Poznasz tajniki jego konfiguracji i synchronizacji z komputerem oraz metodę sprawdzania poziomu naładowania baterii. Nauczysz się wykorzystywać wszystkie możliwości przeglądarki Safari, czytnika poczty oraz terminarza. Dowiesz się również, jak odtwarzać klipy z YouTube, słuchać muzyki czy oglądać filmy. Książka ta jest zatem świetną pozycją zarówno dla początkującego użytkownika telefonu iPhone, jak również dla zaawansowanego — ten ostatni znajdzie tu informacje, które go zaskoczą i zachwycą! W końcu iPhone to zdolna i piękna bestia…
* Włączanie, usypianie, wyłączanie iPhone’a
* Wykorzystanie wbudowanego głośnika
* Obsługa ekranu
* Importowanie kontaktów
* Dodawanie numerów
* Połączenia konferencyjne
* Wyciszanie dzwonka
* Odbieranie i wysyłanie wiadomości e-mail
* Obsługa przeglądarki Safari
* Wykorzystanie kalendarza
* Odtwarzanie klipów z YouTube
* Używanie mapy
* Sprawdzanie prognozy pogody
* Importowanie i odtwarzanie muzyki
* Wykonywanie zdjęć
* Rozwiązywanie typowych problemów
Sprawdź, co potrafi Twój iPhone!
Uwiecznij świat, jakiego nie znałeś!
* Jaki sprzęt jest potrzebny do makrofotografii?
* Jak uzyskać duże powiększenia?
* Jak komponować efektowne zdjęcia?
Wiele osób nie zwraca uwagi na niepozorne, małe elementy otaczającego nas świata. Czyż nie warto pokazać im, co tracą? Wykonanie dobrego zdjęcia w skali makro to wyzwanie, ale zachwyt na twarzach oglądających jest wart wszelkich poświęceń. Właśnie dzięki makrofotografii można ujrzeć cudowny świat, niezauważalny na co dzień. Magiczny świat szczegółów!
Autor książki "Makrofotografia. Magia szczegółu " przedstawia ten temat w sposób przejrzysty i systematyczny. Dzięki tej publikacji zdobędziesz informacje dotyczące sprzętu potrzebnego do wykonania makrofotografii oraz sposobu kompozycji zdjęcia. Poznasz zagadnienia związane z właściwym doborem ostrości, a także takie pojęcia, jak głębia ostrości, długość ogniskowej, jasność obiektywu i wiele innych. Pozwolą Ci one na swobodne poruszanie się po świecie makrofotografii. Ponadto poszerzysz swoją wiedzę odnośnie doboru właściwego oświetlenia oraz programów odpowiednich do obróbki wykonanych zdjęć. Niewątpliwym atutem tej książki są pytania i zadania kontrolne, które pozwolą Ci zweryfikować zdobyte umiejętności. Jeżeli chcesz uwiecznić otoczenie w makrofotografii, ta pozycja będzie dla Ciebie nieocenionym źródłem informacji, a może nawet twórczej inspiracji!
* Sprzęt konieczny do wykonania makrofotografii
* Sposoby na uzyskanie dużych powiększeń
* Komponowanie zdjęć
* Zasady doboru kadru
* Uzyskiwanie właściwej ostrości
* Ograniczenia ostrości
* Dobór właściwego oświetlenia
* Metody pomiaru światła
* Doświetlanie zdjęć
* Narzędzia do edycji zdjęć
Odsłoń na fotografiach całe piękno szczegółu!
Naucz się korzystać z nowoczesnych narzędzi PowerShella
i usprawniaj żmudne zadania administracyjne!
* Jak skonfigurować środowisko PowerShella?
* Jak tworzyć aplety poleceń i jak ich używać?
* Jak korzystać z potoku danych?
Windows PowerShell to innowacyjne narzędzie do zarządzania systemem i przetwarzania skryptów dla serwerów oraz klientów pod kontrolą Windows. Charakterystyczną cechą tego interpretera poleceń jest obiektowa logika, która sprawia, że wynikiem każdego polecenia jest obiekt określonego typu. Dodatkowo wszystkie funkcje dostępne przez API systemu są możliwe do wywołania z poziomu PowerShella. Dzięki swojej uniwersalności oraz nowoczesnym narzędziom interpreter ten zapewnia spójny oraz jasny mechanizm zarządzania, oparty na wierszu poleceń i niewymagający od użytkownika dużej wiedzy programistycznej.
Książka "Windows PowerShell. Podstawy" zawiera dokładny opis innowacyjnej architektury PowerShella, zasad pisania skryptów oraz możliwości korzystania z podstawowych interfejsów systemowych: COM, WMI, ADSI i ADO.NET, a także obszerny zbiór opisów rozwiązań konkretnych zadań administracyjnych. Korzystając z tego przewodnika, poznasz funkcje i narzędzia PowerShella. Nauczysz się również korzystać z obiektowego potoku danych i zarządzać procesami, dziennikami zdarzeń oraz wpisami rejestru. Dzięki zawartej tu wiedzy z pewnością usprawnisz i zautomatyzujesz wszelkie czasochłonne zadania administracyjne, by móc swobodnie stosować PowerShell jako podstawową konsolę do codziennej pracy.
* Aplety poleceń
* Przetwarzanie potokowe
* Potoki danych
* Uniwersalny model nawigacji
* Definiowanie dysków
* Język skryptów PowerShella
* Tablice asocjacyjne
* Praca ze skryptami
* Różnicowanie reakcji na błędy
* Biblioteki klas
* Narzędzia PowerShella
* Zarządzanie użytkownikami i grupami w Active Directory
* Bazy danych
* Zaawansowane operacje dostępu do danych
PowerShell skróci czas Twojej pracy!
Poznaj specyfikę języka Java i zostań mistrzem programowania
* Jak korzystać z bibliotek języka Java?
* Jak pisać funkcjonalny i klarowny kod?
* Jak stworzyć profesjonalny i efektowny program?
Język Java jest językiem obiektowym z dziedziczeniem jednobazowym. Wewnątrz każdej metody korzysta on ze zorientowanego na instrukcje stylu kodowania. Aby dobrze poznać jakikolwiek język, należy nauczyć się posługiwać jego regułami, zasadami i składnią — podobnie jest z językiem programowania. Jeśli chcesz zyskać możliwość efektywnego programowania w języku Java, powinieneś poznać struktury danych, operacje i udogodnienia, oferowane przez biblioteki standardowe, a także często stosowane i efektywne sposoby tworzenia kodu. Całą potrzebną Ci wiedzę znajdziesz właśnie w tym podręczniku.
W książce „Java. Efektywne programowanie” w sposób zrozumiały i klarowny przedstawiono zasady opisujące mechanizmy używane w najlepszych technikach programowania. Ten podręcznik podpowie Ci, jak najbardziej racjonalnie korzystać z języka Java oraz jego podstawowych bibliotek. Dowiesz się, jak stosować wyjątki przechwytywalne i wyjątki czasu wykonania, poznasz także zalety stosowania statycznych klas składowych. Opanujesz metody sprawdzania poprawności parametrów i projektowania sygnatur oraz wszelkie instrukcje, które pozwolą Ci na wydajne i profesjonalne programowanie.
* Tworzenie i usuwanie obiektów
* Klasy i interfejsy
* Zapewnianie niezmienności obiektu
* Projektowanie i dokumentowanie klas przeznaczonych do dziedziczenia
* Zalety stosowania statycznych klas składowych
* Typy ogólne
* Typy wyliczeniowe i adnotacje
* Metody
* Programowanie
* Wykorzystanie ogólnie przyjętych konwencji nazewnictwa
* Wyjątki
* Współbieżność i serializacja
* Dokumentowanie bezpieczeństwa dla wątków
Nie wystarczy samo poznanie języka Java. Trzeba wiedzieć, jak z niego efektywnie korzystać!
Rozpocznij swoją przygodę z JavaScript!
* Jak rozpocząć przygodę z JavaScript?
* Jakie obiekty dostarcza JavaScript?
* Jak reagować na błędy?
Język JavaScript, choć ma już blisko dwanaście lat, swoimi możliwościami wciąż potrafi zafascynować niejednego projektanta stron internetowych. Ma już za sobą gorsze dni, jednak aktualnie dzięki technologii AJAX znów jest na topie. Wykorzystując go w odpowiedni sposób, sprawisz, że twój serwis WWW stanie się bardziej interaktywny i dynamiczny.
Ta książka pozwoli Ci wyjść zwycięsko z pierwszego starcia z tym językiem! Dowiesz się z niej, jak używać zmiennych, operatorów oraz funkcji. Nauczysz się reagować na zdarzenia oraz wykorzystywać okna dialogowe. Ponadto zdobędziesz wiedzę na temat pracy z obiektami DOM HTML oraz na temat sposobów reagowania na błędy w skryptach. Autor przedstawia tu także dostępne obiekty JavaScript oraz pokazuje, jak wykonywać operacje związane z czasem. Ogromnym atutem tej książki jest przejrzystość i usystematyzowany sposób prezentowania informacji. Dzięki temu również Ty szybko i bezboleśnie poznasz JavaScript!
* Typowe konstrukcje języka JavaScript
* Wykorzystanie zmiennych
* Zastosowanie funkcji
* Reagowanie na zdarzenia
* Sposoby użycia okien dialogowych
* Wykonywanie operacji związanych z czasem
* Dostępne obiekty JavaScript
* Obiekty DOM HTML
* Przygotowanie własnych obiektów
* Dziedziczenie w JavaScript
* Obsługa błędów
Przejdź bezboleśnie pierwsze starcie z JavaScript!
Naucz się łączyć największe zalety języków oraz technik programowania
i twórz interaktywne strony internetowe
* Jak unikać typowych błędów i sprawnie rozwiązywać problemy programistyczne?
* Jak połączyć zalety HTML, XML i PHP dla uzyskania pożądanych efektów?
* Jak tworzyć aplikacje wyposażone w aktywny interfejs użytkownika?
Statyczne strony WWW to dziś już przeszłość. Powszechnie dostępne narzędzia dają programistom prawie nieograniczone możliwości w zakresie tworzenia interaktywnych witryn internetowych, wzbogaconych o najróżniejsze efekty wizualne, animacje oraz wbudowane narzędzia pomocnicze. Największą popularność zdobyły sobie narzędzia z kategorii open source — z powodu ich minimalnego kosztu oraz niezwykle dużych zasobów, dostępnych za pośrednictwem Internetu. Z tej książki dowiesz się, jak tworzyć bogate i interaktywne strony WWW, łącząc rozmaite techniki i korzystając z różnych języków.
Książka "Ajax, JavaScript i PHP. Intensywny trening" poprowadzi Cię krok po kroku po podstawowych zasadach programowania w językach JavaScript, PHP i HTML oraz technologiach programowania. Dzięki temu podręcznikowi dowiesz się m.in., jak wykorzystywać dostępne biblioteki ajaksowe do implementowania i ulepszania podstawowych mechanizmów aplikacji. Szybko nauczysz się tworzyć interaktywne strony WWW, zarówno za pomocą technologii serwerowych, jak i technik oraz narzędzi umiejscowionych po stronie klienckiej, a także ich kombinacji.
* Tworzenie stron WWW w języku HTML
* Stylizacja stron za pomocą arkuszy CSS
* Tworzenie skryptów w języku JavaScript
* Wbudowanie skryptu w stronę WWW
* Obiektowy model dokumentu (DOM)
* Obiekty String
* Instrukcje warunkowe i pętle
* Funkcje wbudowane i biblioteki
* Konstruowanie aplikacji ajaksowych
* Zmienne w języku PHP
* Funkcje liczbowe, łańcuchy i tabele
* Kontrola przepływu sterowania
* Usługi webowe oraz protokoły REST i SOAP
Łącz, kompiluj, dobieraj — niech Twoje strony WWW zrobią wrażenie!
Poznaj narzędzia programu PowerPoint i twórz wyjątkowe prezentacje!
* Jak stworzyć profesjonalną prezentację na każdą okazję?
* Jak modyfikować grafikę SmartArt?
* Jak korzystać z programu Clip Organizer i biblioteki slajdów?
Z pewnością wiesz, do czego służy program PowerPoint, lecz jeśli jeszcze nie potrafisz z niego korzystać, a musisz szybko przygotować profesjonalną prezentację, ta książka jest właśnie dla Ciebie! Znajdziesz tu opis ostatniej wersji programu — PowerPoint 2007. Umożliwia ona stworzenie zaawansowanej i bogatej prezentacji, wyposażonej w dźwięk, fotografie i animacje filmowe. Nowy PowerPoint pozwala także na bezpieczne udostępnianie Twojej prezentacji wszystkim zainteresowanym.
Książka "PowerPoint 2007 PL. Seria praktyk" to bogato ilustrowany, a przy tym prawdziwie intuicyjny podręcznik, dzięki któremu każdy nauczy się sprawnie korzystać z tej aplikacji. Kolor i zrzuty ekranowe ilustrujące kolejne informacje, jak również klarowne i zrozumiałe instrukcje sprawiają, że nauka staje się niezwykle prosta. Dzięki tej książce poznasz wszystkie niezbędne narzędzia PowerPointa i ciekawe funkcje tego programu. Dowiesz się, jak zastosować w swojej prezentacji grafiki SmartArt oraz zaawansowane układy slajdów, a także w jaki sposób korzystać z galerii stylów czy biblioteki slajdów.
* Tworzenie prezentacji
* Praca z tekstem
* Grafika i linie
* Konwersja na grafikę SmartArt
* Tabele i wykresy
* Używanie Excela 2007 — kopiowanie i wstawianie tabel
* Wzbogacanie prezentacji — animacje
* Multimedia
* Dodawanie filmów i dźwięku
* Tworzenie albumów
* Pokaz slajdów
* Nagrywanie narracji
* Udostępnianie prezentacji
* Bezpieczeństwo
PowerPoint jest dla każdego!
Poznaj narzędzia oraz funkcje Excela i z łatwością wykorzystuj tę wiedzę w pracy
* Jak tworzyć skoroszyty i wykresy?
* Jak zarządzać danymi w arkuszach?
* Jak szacować formuły?
Na samo brzmienie słowa "Excel" reagujesz paniką? Uważasz, że to bardzo skomplikowany i trudny w obsłudze program? Świetnie! Ta książka została napisana właśnie z myślą o Tobie! Podręcznik, który trzymasz w rękach, stanowi namacalny dowód na to, że Excel 2007 może być prosty, a nauka jego obsługi bardzo przyjemna! Choć trudno Ci w tej chwili w to uwierzyć, aplikacja ta oferuje cale spektrum nowoczesnych, a przy tym przyjaznych i intuicyjnych narzędzi oraz funkcji, dzięki którym znacznie usprawnisz i przyspieszysz swoją pracę. Naprawdę warto je poznać!
Książkę "Excel 2007 PL. Seria praktyk" przygotowano w taki sposób, aby każdy mógł nauczyć się korzystać z narzędzi Excela, tworzyć odpowiednie arkusze oraz wykonywać na nich praktyczne operacje. Wszystkie porady i instrukcje napisane zostały prostym, zrozumiałym językiem. Dzięki temu szybko opanujesz sposoby zarządzania danymi czy szacowania formuł w tym programie. Wszystkie omawiane zagadnienia zilustrowane są ułatwiającymi zrozumienie zrzutami ekranowymi, a kolorowy druk znacznie uprzyjemni Ci korzystanie z książki. Wystarczy ją przeczytać, a poznasz Excela w stopniu pozwalającym Ci na swobodną pracę w tym programie. Na co zatem czekasz? Przed Tobą nauka takich zagadnień, jak:
* Tworzenie skoroszytu
* Wprowadzanie danych do arkusza i zarządzanie nimi
* Formuły i funkcje
* Tabele i wykresy
* Konwersja tabeli do postaci zakresu
* Zaawansowane funkcje
* Szacowanie formuł
* Zarządzanie Excelem
* Makra
* Szablony i scenariusze
* Łącza i odwołania
* Stosowanie aktualizacji
Najprostszy i najprzyjemniejszy sposób na poznanie Excela!
Poznaj praktyczne możliwości programu Access 2007!
* Jak właściwie zaprojektować bazę danych?
* Jak korzystać z szablonów?
* Jak tworzyć tabele i definiować relacje między nimi?
Wbrew pozorom nie trzeba być specjalistą, żeby korzystać z Accessa! Jest to program wyjątkowo przyjazny dla użytkownika, umożliwiający tworzenie baz danych i zarządzanie nimi bez potrzeby dogłębnego poznawania języka SQL oraz skomplikowanych środowisk serwerowych. Aplikacja pozwala na zapisywanie danych z wykorzystaniem formularzy, kierowanie zapytań do bazy, a także dzielenie danych ze współpracownikami za pośrednictwem sieci komputerowej.
Książka "Access 2007 PL. Seria praktyk" zawiera zwięzły i czytelny opis wszystkich najważniejszych funkcji tego programu, a także konkretne przykłady i jasne instrukcje zastosowania narzędzi Accessa. Kolorowe strony pozwalają na szybkie odnalezienie interesujących Cię zagadnień. Dzięki temu podręcznikowi poznasz podstawowe zasady tworzenia dobrego projektu bazy danych oraz jej zaawansowane możliwości. Nauczysz się tworzyć tabele, formularze i raporty, a także korzystać z kluczy podstawowych i obcych. Bez problemu zbudujesz taką bazę danych, która pozwoli Ci sprawnie zarządzać informacjami.
* Personalizacja Accessa 2007
* Projektowanie baz danych
* Relacyjne bazy danych
* Klucze podstawowe i obce
* Tworzenie tabel
* Korzystanie z typów danych
* Definiowanie relacji
* Kwerendy
* Korzystanie z SQL
* Tworzenie i dostrajanie formularzy
* Tworzenie raportów
* Współdzielenie Accessa
Naucz się korzystać z Accessa — zachwycą Cię jego możliwości!
Odkryj bogactwo funkcji Worda!
Jak poprawnie formatować i uatrakcyjniać dokumenty?
Chcesz zacząć sprawnie tworzyć w programie Word dokumenty o profesjonalnym wyglądzie? A może tak dobrze go już znasz, że wątpisz, by skrywał przed Tobą jeszcze jakiekolwiek tajemnice? Tak czy inaczej warto opanować wszystkie potężne możliwości najpopularniejszego edytora tekstów, różne sposoby pracy z nim i metody tworzenia dokumentów tekstowych. Uzbrojony w taką wiedzę, z pewnością będziesz pracował szybciej i sprawniej.
Książka "Word 2007 PL. Seria praktyk" jest graficznym przewodnikiem po najnowszej wersji Worda i zawiera dokładny opis jego funkcji podstawowych oraz zaawansowanych — począwszy od tworzenia i formatowania tekstów, a na złożonych makrach skończywszy. Wszystko to przedstawione zostało za pomocą przejrzystych, kolorowych i szczegółowych instrukcji oraz praktycznych przykładów. Dzięki temu podręcznikowi poznasz całe spektrum narzędzi Worda i udoskonalisz swoją pracę z tym programem.
* Narzędzia główne
* Formatowanie tekstu
* Szybkie style
* Praca z dokumentem
* Drukowanie i publikowanie
* Konwersja do formatu PDF
* Biblioteka ClipArt i SmartArt
* Hiperłącza i zakładki
* Równania
* Zaawansowane funkcje — podpis cyfrowy
* Makra
Opanuj wszystkie narzędzia Worda i ciesz się swobodą tworzenia dokumentów!
Serwisy społecznościowe. Budowa, administracja i moderacjaWydawnictwo Helion
Dołącz do kreatorów nowych trendów! Stwórz własny serwis społecznościowy!
* Pierwsze kroki w roli twórcy serwisu — rodzaje stron, prawo i reklama
* Skrypty, instalacja i administracja — PHPizabi, Elgg, Dolphin, Joomla!
* ABC moderatora i użytkownika — regulamin, trolle, zakres ingerencji
Serwisy społecznościowe są bodaj najszybciej rozwijającą się dziś częścią internetu. Nie sposób przecenić ich roli społecznej i opiniotwórczej. Liczba użytkowników i ich poczucie wspólnoty decydują o sile i prężności tych serwisów. W każdej chwili możesz przyłączyć się do któregoś z nich. Jednak znacznie więcej radości sprawiłoby Ci na pewno prowadzenie własnego serwisu, wokół którego skupiałaby się cała społeczność osób o zainteresowaniach podobnych do Twoich.
W książce "Serwisy społecznościowe. Budowa, administracja i moderacja" znajdziesz wszelkie informacje dotyczące tworzenia i obsługi serwisu społecznościowego. Opisano w niej początki tego zjawiska społecznego, podstawy jego działania, rozmaite odmiany serwisów, wszelkie kwestie prawne i techniczne. Niezależnie od tego, czy szukasz inspiracji odnośnie treści umieszczanych w serwisie, czy chciałbyś dowiedzieć się, jak rozwiązać konkretne problemy z konfiguracją, rejestracją, wyborem mechanizmu działania czy wyglądu Twojego serwisu, autorzy służą Ci rzetelną wiedzą, wskazówkami i podpowiedziami. Oprócz tego wprowadzą Cię w kwestie związane z bezpieczeństwem w sieci, rolą moderatora i rozwiązywaniem problemów z użytkownikami.
* Społeczności internetowe
* Serwisy społecznościowe (historia, rodzaje, reklama)
* Regulacje prawne
* Wybór domeny i hostingu
* Niezbędne narzędzia (klient FTP, edytory CSS i tekstowe)
* Serwis społecznościowy a forum dyskusyjne
* Bezpieczeństwo serwisu
* Skrypty (PHPizabi, Elgg, Dolphin, Joomla!, BuddyPress, Joovili, SocialEngine i wiele innych)
* Online-Community-Building
* Skrypty do budowy serwisu wideo (ClipBucket Lite, Clipshare, ClipHouse i wiele innych)
* Rola moderatora
* Social shopping
Sprawdź, jak wiele satysfakcji daje własny serwis społecznościowy!
AutoCAD to program do komputerowego wspomagania projektowania, który od lat wyznacza standardy na rynku takich aplikacji. Z jego możliwości korzystają projektanci różnych branż, a ogromna liczba bibliotek, modułów i nakładek sprawia, że realizacja nawet najbardziej złożonych projektów przebiega szybko i sprawnie. Każda kolejna wersja AutoCAD-a jest bardziej rozbudowana. W wersji 2008 autorzy aplikacji zadbali o optymalizację znanych już użytkownikom narzędzi i zwiększenie produktywności pracy. Zmodernizowany interfejs użytkownika oraz nowe możliwości docenią nie tylko profesjonaliści, ale również ci, którzy stawiają pierwsze kroki w świecie komputerowego wspomagania projektowania.
Książka "AutoCAD 2008 i 2008 PL" to wyczerpujące omówienie najnowszej edycji tej aplikacji. Każdy użytkownik AutoCAD-a, niezależnie od stopnia zaawansowania, znajdzie w niej interesujące informacje. Czytając tę książkę, nauczysz się tworzyć i modyfikować rysunki, wymiarować je, korzystać z warstw, bloków i stylów oraz drukować projekty. Poznasz zasady modelowania bryłowego, tworzenia szablonów oraz rysowania w trybie aksonometrycznym. Każde z narzędzi dostępnych w aplikacji jest dokładnie omówione, a ilustrowane przykłady ułatwiają poznanie ich w praktyce.
* Interfejs użytkownika, menu i paski narzędzi
* Praca z dokumentami
* Układy współrzędnych
* Tworzenie podstawowych obiektów i definiowanie ich właściwości
* Napisy i tabelki
* Rysowanie precyzyjne
* Rysunek aksonometryczny
* Kreskowanie
* Naprawianie uszkodzonych rysunków
* Techniki wymiarowania, modyfikowanie wymiarów i style wymiarowe
* Modelowanie 3D i bryły ACIS
Poznaj najnowszą wersję narzędzia, które zrewolucjonizowało pracę projektantów na całym świecie.
Zobacz, jakie to proste — naucz się tworzyć bazy danych!
* Jak tworzyć formularze i raporty?
* Jak modyfikować strukturę tabel?
* Jak stosować mechanizmy wymiany danych?
Współczesny świat wymusza na przedsiębiorstwach gromadzenie oraz przetwarzanie ogromnej ilości informacji. To sprawia, że muszą one dysponować wydajnymi i sprawnymi bazami danych. Aby zbudować taki system zarządzania danymi, niezbędne są odpowiednie narzędzia — jednym z nich jest program MS Access. Ta aplikacja przede wszystkim pozwala na łatwą kontrolę poprawności tworzonych projektów oraz zapewnia integrację narzędzi służących do tworzenia struktury relacyjnej. Dba także o zgodność tych narzędzi ze standardem języka zapytań SQL, wykorzystywanym do tworzenia i modyfikowania baz danych oraz operowania na zgromadzonych w nich informacjach.
Książka „Bazy danych. Pierwsze starcie” stanowi doskonałe wprowadzenie w tematykę tworzenia baz danych. Zawiera wszystkie potrzebne informacje, podane w prosty i przejrzysty sposób. Ten podręcznik przyda się zarówno studentom kierunków informatycznych, jak i wszystkim tym, którzy chcą zdobyć wiedzę o nowoczesnych metodach budowania takich baz. Stąd dowiesz się m.in., jak wykorzystywać język zapytań SQL, w jaki sposób tworzyć tabele, formularze i raporty oraz stosować mechanizmy wymiany danych, a także na czym polega filtrowanie i sortowanie w zapytaniach. Zdobędziesz wiedzę i umiejętności wystarczające do samodzielnego zbudowania wydajnej bazy danych i sprawnego nią zarządzania.
* Projektowanie bazy danych — narzędzia wizualne
* Tworzenie formularzy i raportów
* Strukturalny język zapytań SQL w wersji MS JetSQL
* Składnia podstawowa
* Unia — koniunkcja zbiorów
* Grupowanie i funkcje agregujące
* Zastosowanie języka SQL z poziomu formularzy
* Mechanizmy wymiany danych
* Obiekty: DAO, RDO, ADO
* Zastosowanie mechanizmów wymiany danych przy tworzeniu aplikacji
Stwórz własną, niezawodną bazę danych!
Wkrocz w świat projektowania 3D
* Jak definiować parametry projektu?
* W jaki sposób korzystać z narzędzi projektowych?
* Jak generować dokumentację techniczną?
Inventor, opracowany i sprzedawany przez firmę Autodesk, to program typu CAD, pozwalający na zamodelowanie projektowanego urządzenia lub elementu w postaci bryły trójwymiarowej. W oparciu o tak zamodelowaną bryłę Inventor umożliwia wygenerowanie pełnej dokumentacji projektowej — rysunków wykonawczych i złożeniowych, wykazu części i innych. Aplikacja pozwala także na przeprowadzenie symulacji i analizy działania projektowanego urządzenia.
"Inventor. Pierwsze kroki " to podręcznik dla wszystkich osób, które chcą poznać możliwości tej aplikacji i wykorzystać je w swojej pracy. Książka opisuje proces instalacji i konfiguracji programu oraz definiowania parametrów projektu. Pokazuje także kolejne kroki jego realizacji. Przeczytasz w niej o tworzeniu szkiców, definiowaniu wiązań, generowaniu modeli bryłowych i tworzeniu zespołów. Dowiesz się także, w jaki sposób wygenerować dokumentację techniczną w oparciu o gotowy model oraz jak zaprezentować elementy projektu w postaci animacji trójwymiarowej.
* Instalacja Inventora
* Konfiguracja interfejsu użytkownika
* Praca z oknami dialogowymi
* Tworzenie szkiców i wiązań
* Edycja obiektów graficznych
* Tworzenie brył trójwymiarowych
* Łączenie elementów w zespoły
* Tworzenie dokumentacji technicznej
* Prezentacja zespołów
Zrealizuj swoje wizje za pomocą Inventora!
1. IDZ DO
PRZYK£ADOWY ROZDZIA£
SPIS TRE CI C++. Algorytmy
i struktury danych
KATALOG KSI¥¯EK
Autor: Adam Drozdek
KATALOG ONLINE T³umaczenie: Piotr Rajca, Tomasz ¯mijewski
ISBN: 83-7361-385-4
ZAMÓW DRUKOWANY KATALOG Tytu³ orygina³u: Data Structures and Algorithms
in C++, Second Edition
Format: B5, stron: 616
TWÓJ KOSZYK
DODAJ DO KOSZYKA Badanie struktur danych, elementarnych sk³adników wykorzystywanych w informatyce,
jest podstaw¹, w oparciu o któr¹ mo¿esz zdobywaæ cenne umiejêtno ci. Znajomo æ
struktur danych jest niezbêdna studentom, którzy chc¹ programowaæ czy te¿ testowaæ
CENNIK I INFORMACJE oprogramowanie.
W niniejszej ksi¹¿ce zwrócono uwagê na trzy wa¿ne aspekty struktur danych: po
ZAMÓW INFORMACJE pierwsze, na zwi¹zek struktur danych z algorytmami, miêdzy innymi na z³o¿ono æ
O NOWO CIACH obliczeniow¹ algorytmów. Po drugie, struktury te prezentowane s¹ w sposób zgodny
z zasadami projektowania obiektowego i obiektowym paradygmatem programowania.
ZAMÓW CENNIK Po trzecie, wa¿n¹ czê ci¹ ksi¹¿ki s¹ implementacje struktur danych w jêzyku C++.
Ksi¹¿ka prezentuje:
CZYTELNIA • Podstawy projektowania obiektowego w C++
• Analizê z³o¿ono ci
FRAGMENTY KSI¥¯EK ONLINE • Listy powi¹zane
• Stosy i kolejki
• Rekurencjê
• Drzewa binarne
• Sterty
• Drzewa wielokrotne
• Grafy
• Sortowanie i mieszanie
• Kompresja danych
• Zarz¹dzanie pamiêci¹
Ksi¹¿ka ta dostarcza studentom informatyki nie tylko niezbêdnej wiedzy na temat
algorytmów i struktur danych, ale prezentuje jednocze nie sposoby ich implementacji
Wydawnictwo Helion w jêzyku C++, obecnie jednym z wiod¹cych jêzyków programowania. Dostarcza ona
ul. Chopina 6
wiêc nie tylko wiedzy teoretycznej, ale równie¿ pozwala rozwin¹æ praktyczne
44-100 Gliwice
umiejêtno ci przydatnych w przysz³ej pracy zawodowej.
tel. (32)230-98-63
e-mail: helion@helion.pl
2. Spis treści
Wstęp .....................................................................................................................11
1.
Programowanie obiektowe w C++ ........................................................................15
1.1. Abstrakcyjne typy danych ....................................................................................................................... 15
1.2. Enkapsulacja ............................................................................................................................................ 15
1.3. Dziedziczenie........................................................................................................................................... 19
1.4. Wskaźniki ................................................................................................................................................ 22
1.4.1. Wskaźniki a tablice ...................................................................................................................... 24
1.4.2. Wskaźniki a konstruktory kopiujące............................................................................................ 26
1.4.3. Wskaźniki i destruktory ............................................................................................................... 29
1.4.4. Wskaźniki a referencje................................................................................................................. 29
1.4.5. Wskaźniki na funkcje................................................................................................................... 32
1.5. Polimorfizm ............................................................................................................................................. 33
1.6. C++ a programowanie obiektowe............................................................................................................ 35
1.7. Standardowa biblioteka szablonów ......................................................................................................... 36
1.7.1. Kontenery..................................................................................................................................... 36
1.7.2. Iteratory........................................................................................................................................ 37
1.7.3. Algorytmy .................................................................................................................................... 37
1.7.4. Funktory....................................................................................................................................... 38
1.8. Wektory w standardowej bibliotece szablonów ...................................................................................... 40
1.9. Struktury danych a programowanie obiektowe ....................................................................................... 46
1.10. Przykład zastosowania: plik z dostępem swobodnym............................................................................. 47
1.11. Ćwiczenia ................................................................................................................................................ 56
1.12. Zadania programistyczne......................................................................................................................... 58
Bibliografia ............................................................................................................................................. 60
2.
Analiza zło oności .................................................................................................61
2.1. Zło oność obliczeniowa i asymptotyczna ............................................................................................... 61
2.2. O-notacja.................................................................................................................................................. 62
2.3. Właściwości O-notacji............................................................................................................................. 64
3. 6 SPIS TREŚCI
2.4. Notacje Ω i Θ........................................................................................................................................... 66
2.5. Mo liwe problemy................................................................................................................................... 67
2.6. Przykłady zło oności ............................................................................................................................... 67
2.7. Określanie zło oności asymptotycznej. Przykłady.................................................................................. 68
2.8. Zło oność optymistyczna, średnia i pesymistyczna ................................................................................ 71
2.9. Zło oność zamortyzowana ...................................................................................................................... 73
2.10. Ćwiczenia ................................................................................................................................................ 77
Bibliografia ............................................................................................................................................. 80
3.
Listy .......................................................................................................................81
3.1. Listy jednokierunkowe ............................................................................................................................ 81
3.1.1. Wstawianie................................................................................................................................... 86
3.1.2. Usuwanie ..................................................................................................................................... 88
3.1.3. Wyszukiwanie.............................................................................................................................. 93
3.2. Listy dwukierunkowe .............................................................................................................................. 93
3.3. Listy cykliczne......................................................................................................................................... 97
3.4. Listy z przeskokami ................................................................................................................................. 99
3.5. Listy samoorganizujące się.................................................................................................................... 104
3.6. Tablice rzadkie....................................................................................................................................... 107
3.7. Listy w bibliotece STL .......................................................................................................................... 110
3.8. Kolejki dwustronne w bibliotece STL ................................................................................................... 113
3.9. Podsumowanie ....................................................................................................................................... 117
3.10. Przykład zastosowania. Biblioteka ........................................................................................................ 118
3.11. Ćwiczenia .............................................................................................................................................. 126
3.12. Zadania programistyczne....................................................................................................................... 128
Bibliografia ........................................................................................................................................... 131
4.
Stosy i kolejki ......................................................................................................133
4.1. Stosy ...................................................................................................................................................... 133
4.2. Kolejki ................................................................................................................................................... 140
4.3. Kolejki priorytetowe .............................................................................................................................. 147
4.4. Stosy w bibliotece STL.......................................................................................................................... 148
4.5. Kolejki w bibliotece STL....................................................................................................................... 148
4.6. Kolejki priorytetowe w bibliotece STL ................................................................................................. 149
4.7. Przykład zastosowania. Szukanie wyjścia z labiryntu........................................................................... 152
4.8. Ćwiczenia .............................................................................................................................................. 156
4.9. Zadania programistyczne....................................................................................................................... 159
Bibliografia ........................................................................................................................................... 160
5.
Rekurencja ...........................................................................................................161
5.1. Definicje rekurencyjne........................................................................................................................... 161
5.2. Wywołania funkcji a implementacja rekurencji .................................................................................... 164
5.3. Anatomia wywołania rekurencyjnego ................................................................................................... 165
5.4. Rekurencja ogonowa ............................................................................................................................. 169
5.5. Rekurencja inna ni ogonowa................................................................................................................ 170
4. SPIS TREŚCI 7
5.6. Rekurencja pośrednia............................................................................................................................. 174
5.7. Rekurencja zagnie d ona ...................................................................................................................... 176
5.8. Nadu ywanie rekurencji ........................................................................................................................ 177
5.9. Algorytmy z powrotami......................................................................................................................... 180
5.10. Wnioski końcowe .................................................................................................................................. 186
5.11. Przykład zastosowania. Rekurencyjny interpreter................................................................................. 187
5.12. Ćwiczenia .............................................................................................................................................. 194
5.13. Zadania programistyczne....................................................................................................................... 197
Bibliografia ........................................................................................................................................... 199
6.
Drzewa binarne ....................................................................................................201
6.1. Drzewa, drzewa binarne i binarne drzewa poszukiwania...................................................................... 201
6.2. Implementacja drzew binarnych............................................................................................................ 205
6.3. Wyszukiwanie w drzewie binarnym...................................................................................................... 207
6.4. Przechodzenie po drzewie ..................................................................................................................... 210
6.4.1. Przechodzenie wszerz ................................................................................................................ 210
6.4.2. Przechodzenie w głąb ................................................................................................................ 211
6.4.3. Przechodzenie po drzewie w głąb bez stosu .............................................................................. 217
6.5. Wstawianie ............................................................................................................................................ 223
6.6. Usuwanie ............................................................................................................................................... 225
6.6.1. Usuwanie przez złączanie .......................................................................................................... 226
6.6.2. Usuwanie przez kopiowanie ...................................................................................................... 229
6.7. Równowa enie drzewa .......................................................................................................................... 231
6.7.1. Algorytm DSW .......................................................................................................................... 234
6.7.2. Drzewa AVL.............................................................................................................................. 236
6.8. Drzewa samoorganizujące się................................................................................................................ 241
6.8.1. Drzewa samonaprawiające się ................................................................................................... 241
6.8.2. Ukosowanie ............................................................................................................................... 243
6.9. Sterty...................................................................................................................................................... 247
6.9.1. Sterty jako kolejki priorytetowe................................................................................................. 249
6.9.2. Organizowanie tablic w sterty ................................................................................................... 251
6.10. Notacja polska i drzewa wyra eń .......................................................................................................... 255
6.10.1. Operacje na drzewach wyra eń ................................................................................................. 256
6.11. Przykład zastosowania. Zliczanie częstości występowania słów .......................................................... 259
6.12. Ćwiczenia .............................................................................................................................................. 265
6.13. Zadania programistyczne....................................................................................................................... 268
Bibliografia ........................................................................................................................................... 272
7.
Drzewa wielokierunkowe ....................................................................................275
7.1. Rodzina B-drzew ................................................................................................................................... 276
7.1.1. B-drzewa .................................................................................................................................... 277
7.1.2. B*-drzewa .................................................................................................................................. 286
7.1.3. B+-drzewa.................................................................................................................................. 288
7.1.4. B+-drzewa przedrostkowe ......................................................................................................... 289
7.1.5. Drzewa bitowe ........................................................................................................................... 291
7.1.6. R-drzewa .................................................................................................................................... 294
7.1.7. 2-4-drzewa ................................................................................................................................. 296
7.1.8. Zbiory i wielozbiory w bibliotece STL...................................................................................... 303
7.1.9. Mapy i multimapy w bibliotece STL ......................................................................................... 309
5. 8 SPIS TREŚCI
7.2. Drzewa słownikowe............................................................................................................................... 313
7.3. Uwagi końcowe ..................................................................................................................................... 321
7.4. Przykład zastosowania. Sprawdzanie pisowni ...................................................................................... 321
7.5. Ćwiczenia .............................................................................................................................................. 330
7.6. Zadania programistyczne....................................................................................................................... 331
Bibliografia ........................................................................................................................................... 334
8.
Grafy ....................................................................................................................337
8.1. Reprezentacje grafów ............................................................................................................................. 338
8.2. Przechodzenie po grafach....................................................................................................................... 340
8.3. Najkrótsza droga .................................................................................................................................... 344
8.3.1. Problem najkrótszych dróg typu „wszystkie-do-wszystkich” ................................................... 351
8.4. Wykrywanie cykli .................................................................................................................................. 353
8.4.1. Problem znajdowania sumy zbiorów rozłącznych..................................................................... 354
8.5. Drzewa rozpinające ................................................................................................................................ 356
8.5.1. Algorytm Borůvki...................................................................................................................... 357
8.5.2. Algorytm Kruskala .................................................................................................................... 358
8.5.3. Algorytm Jarníka-Prima ............................................................................................................ 360
8.5.4. Metoda Dijkstry ......................................................................................................................... 361
8.6. Spójność ................................................................................................................................................. 361
8.6.1. Spójność w grafach nieskierowanych........................................................................................ 361
8.6.2. Spójność w grafach skierowanych............................................................................................. 364
8.7. Sortowanie topologiczne ........................................................................................................................ 365
8.8. Sieci ........................................................................................................................................................ 368
8.8.1. Przepływy maksymalne ............................................................................................................. 368
8.8.2. Maksymalne przepływy o minimalnym koszcie........................................................................ 378
8.9. Kojarzenie .............................................................................................................................................. 383
8.9.1. Problem przypisania................................................................................................................... 387
8.9.2. Skojarzenia w grafach, które nie są dwudzielne........................................................................ 390
8.10. Grafy eulerowskie i hamiltonowskie...................................................................................................... 392
8.10.1. Grafy eulerowskie...................................................................................................................... 392
8.10.2. Grafy hamiltonowskie................................................................................................................ 393
8.11. Przykład zastosowania. Unikalni reprezentanci..................................................................................... 396
8.12. Ćwiczenia ............................................................................................................................................... 406
8.13. Zadania programistyczne ....................................................................................................................... 409
Bibliografia ........................................................................................................................................... 411
9.
Sortowanie ...........................................................................................................413
9.1. Podstawowe algorytmy sortowania ....................................................................................................... 414
9.1.1. Sortowanie przez wstawianie..................................................................................................... 414
9.1.2. Sortowanie przez wybieranie..................................................................................................... 417
9.1.3. Sortowanie bąbelkowe ............................................................................................................... 419
9.2. Drzewa decyzyjne.................................................................................................................................. 422
9.3. Efektywne algorytmy sortowania .......................................................................................................... 425
9.3.1. Sortowanie Shella ...................................................................................................................... 425
9.3.2. Sortowanie przez kopcowanie ................................................................................................... 429
9.3.3. Sortowanie szybkie (quicksort).................................................................................................. 433
9.3.4. Sortowanie poprzez scalanie...................................................................................................... 440
9.3.5. Sortowanie pozycyjne................................................................................................................ 443
6. SPIS TREŚCI 9
9.4. Sortowanie przy wykorzystaniu STL .................................................................................................... 448
9.5. Uwagi końcowe ..................................................................................................................................... 452
9.6. Przykład zastosowania. Dodawanie wielomianów................................................................................ 452
9.7. Ćwiczenia .............................................................................................................................................. 459
9.8. Zadania programistyczne....................................................................................................................... 461
Bibliografia ........................................................................................................................................... 463
10.
Mieszanie .............................................................................................................465
10.1. Funkcje mieszające ................................................................................................................................ 466
10.1.1. Dzielenie .................................................................................................................................... 466
10.1.2. Składanie.................................................................................................................................... 466
10.1.3. Funkcja „środek kwadratu” ....................................................................................................... 467
10.1.4. Wycinanie .................................................................................................................................. 468
10.1.5. Zmiana podstawy....................................................................................................................... 468
10.2. Rozwiązywanie problemu kolizji .......................................................................................................... 468
10.2.1. Adresowanie otwarte ................................................................................................................. 469
10.2.2. Metoda łańcuchowa ................................................................................................................... 475
10.2.3. Adresowanie kubełkowe............................................................................................................ 476
10.3. Usuwanie ............................................................................................................................................... 477
10.4. Doskonałe funkcje mieszające............................................................................................................... 479
10.4.1. Metoda Cichelliego.................................................................................................................... 479
10.4.2. Algorytm FHCD ........................................................................................................................ 482
10.5. Funkcje mieszające dla plików rozszerzalnych ..................................................................................... 484
10.5.1. Mieszanie przedłu alne.............................................................................................................. 485
10.5.2. Mieszanie liniowe ...................................................................................................................... 487
10.6. Przykład zastosowania. Mieszanie z u yciem kubełków ...................................................................... 490
10.7. Ćwiczenia .............................................................................................................................................. 498
10.8. Zadania programistyczne....................................................................................................................... 500
Bibliografia ........................................................................................................................................... 501
11.
Kompresja danych ...............................................................................................503
11.1. Warunki kompresji danych.................................................................................................................... 503
11.2. Kodowanie Huffmana............................................................................................................................ 505
11.2.1. Adaptacyjne kodowanie Huffmana ........................................................................................... 514
11.3. Metoda Shannona-Fano ......................................................................................................................... 519
11.4. Kodowanie długości serii ...................................................................................................................... 520
11.5. Metoda Ziva-Lempela ........................................................................................................................... 521
11.6. Przykład zastosowania. Metoda Huffmana z kodowaniem długości serii ............................................ 524
11.7. Ćwiczenia .............................................................................................................................................. 535
11.8. Zadania programistyczne....................................................................................................................... 536
Bibliografia ........................................................................................................................................... 537
12.
Zarządzanie pamięcią ..........................................................................................539
12.1. Metody dopasowywania sekwencyjnego .............................................................................................. 540
12.2. Metody niesekwencyjne ........................................................................................................................ 542
12.2.1. System bliźniaków..................................................................................................................... 543
7. 10 SPIS TREŚCI
12.3. Odśmiecanie .......................................................................................................................................... 551
12.3.1. Metoda „zaznacz-i-zamiataj”..................................................................................................... 551
12.3.2. Metody kopiowania ................................................................................................................... 559
12.3.3. Krokowe metody odśmiecania................................................................................................... 560
12.4. Uwagi końcowe ..................................................................................................................................... 567
12.5. Przykład zastosowania. Odśmiecanie „w miejscu” ............................................................................... 568
12.6. Ćwiczenia .............................................................................................................................................. 576
12.7. Zadania programistyczne....................................................................................................................... 577
Bibliografia ........................................................................................................................................... 579
A
Obliczanie zło oności ..........................................................................................583
A.1. Szereg harmoniczny............................................................................................................................... 583
A.2. Przybli enie funkcji lg(n!) ..................................................................................................................... 583
A.3. Przybli ona średnia zło oność sortowania szybkiego ........................................................................... 585
A.4. Średnia długość ście ki w losowych drzewach binarnych .................................................................... 587
B
Algorytmy dostępne w STL.................................................................................589
B.1. Algorytmy standardowe......................................................................................................................... 589
Skorowidz ............................................................................................................597
8. 1
Programowanie obiektowe w C++
1.1. Abstrakcyjne typy danych
Przed napisaniem jakiegokolwiek programu trzeba wiedzieć dość dokładnie, jak powinno być re-
alizowane zadanie wykonywane przez ten program. Wobec tego przed początkiem kodowania
powinien powstać szkic programu opisujący wszystkie wymagania. Im większy i bardziej zło ony
jest projekt, tym bardziej szczegółowy powinien być ten szkic. Szczegóły implementacyjne po-
winny zostać odło one do późniejszego etapu prac. W szczególności na później powinny zostać
odło one wszelkie szczegółowe ustalenia dotyczące struktur danych nieokreślone na samym początku.
Od samego początku trzeba określić ka de zadanie za pomocą jego danych wejściowych
i wyjściowych. Na wstępie bardziej powinno nas interesować to, co program ma robić, a nie jak
ma to robić. Zachowanie się programu jest wa niejsze od tego, dlaczego program tak właśnie
działa. Jeśli, na przykład, realizacja pewnego zadania wymaga jakiegoś narzędzia, narzędzie to
opisuje się jako zestaw mo liwych operacji, a nie podaje się jego wewnętrznej struktury. Operacje
takie mogą modyfikować narzędzie, wyszukiwać dotyczące go szczegóły lub zapisywać w nim
dodatkowe dane. Kiedy wszystkie te operacje zostaną dokładnie opisane, mo na rozpocząć kodo-
wanie. Na tym etapie decyduje się o tym, które struktury danych będą najlepsze z punktu widzenia
czasu wykonania i zajętości pamięci. Takie narzędzie opisane przez jego operacje nazywamy abs-
trakcyjnym typem danych. Abstrakcyjny typ danych nie jest częścią programu, gdy program napi-
sany w pewnym języku programowania wymaga zdefiniowania struktury danych, a nie tylko ope-
racji na tej strukturze. Jednak języki obiektowe, takie jak C++, bezpośrednio wią ą abstrakcyjne
typy danych z kodem w formie klas.
1.2. Enkapsulacja
Programowanie obiektowe obraca się wokół pojęcia obiektu. Obiekty tworzone są zgodnie z defi-
nicją klasy. Klasa to szablon, według którego tworzy się obiekty. Klasa to fragment kodu, który
zawiera opis danych oraz funkcje przetwarzające te dane i, ewentualnie, tak e dane z innych klas.
Funkcje definiowane w ramach klasy nazywamy metodami lub funkcjami składowymi, zaś zmienne
u ywane w klasach to dane składowe lub po prostu pola. Takie łączenie danych i związanych
z nimi operacji nazywamy enkapsulacją danych. Obiekt to instancja klasy — coś, co jest tworzone
zgodnie z definicją tej klasy.
9. 16 1. PROGRAMOWANIE OBIEKTOWE W C++
W przeciwieństwie do funkcji z języków nieobiektowych, w obiektach połączenie między
danymi a metodami jest ścisłe i ma istotne znaczenie. W językach nieobiektowych deklaracje da-
nych i definicje funkcji mogą przeplatać się w całym programie, a jedynie z dokumentacji wynika,
jak dane z funkcjami są powiązane. W językach obiektowych związek ten jest ustalany ju na
wstępie; cała struktura programu opiera się na tym powiązaniu. Obiekt jest opisany przez powią-
zane dane i operacje, a jako e w tym samym programie u ywanych mo e być wiele obiektów,
obiekty komunikują się, wymieniając komunikaty, które o ich strukturze wewnętrznej mówią tylko
tyle, ile jest niezbędne. Podział programu na obiekty pozwala osiągnąć kilka celów.
Po pierwsze, silnie powiązane dane i operacje mogą znacznie lepiej opisywać modelowany
fragment świata, co jest szczególnie istotne w przypadku in ynierii oprogramowania. Nie powinno
zaskakiwać, e programowanie obiektowe ma swoje korzenie w symulacjach, czyli modelowaniu
rzeczywistych obiektów. Pierwszym językiem obiektowym była Simula, która powstała w latach
60-tych w Norwegii.
Po drugie, u ycie obiektów ułatwia szukanie błędów, gdy operacje są wiązane od razu ze
„swoimi” obiektami. Nawet jeśli pojawiają się efekty uboczne, łatwiej jest je wyśledzić.
Po trzecie, u ycie obiektów pozwala ukryć pewne szczegóły operacji przed innymi obiekta-
mi, dzięki czemu operacje te nie ulegają tak łatwo zmianom w przypadku zmieniania innych
obiektów. Jest to zasada ukrywania informacji. W językach nieobiektowych zasada ta w pewnym
zakresie jest realizowana przez stosowanie zmiennych lokalnych, a (na przykład w Pascalu) tak e
przez stosowanie lokalnych funkcji i procedur, które są dostępne jedynie w funkcjach je zawiera-
jących. Jednak jest to zawsze albo bardzo dokładne ukrywanie, albo ukrywania nie ma w ogóle.
Czasami (na przykład w Pascalu) funkcja f2 zdefiniowana w f1 mo e być potrzebna poza f1, ale
poza f1 jest ona całkowicie niewidoczna. Czasami potrzebne jest sięgnięcie do pewnych danych
lokalnych f1 bez dokładnej znajomości struktury tych danych, ale to te jest niemo liwe. Dlatego
te w programowaniu obiektowym nieco zmieniają się zasady dostępności danych.
U ytkowników interesuje działanie zegarka, ale jego budowa wewnętrzna nie ma ju znacze-
nia. Wiadomo, e wewnątrz są tryby i sprę yny, ale zwykle niewiele wiadomo o sposobie ich
działania, wobec czego dostęp do nich jest zbędny, gdy mógłby prowadzić do uszkodzenia me-
chanizmu. Mechanizm jest przed u ytkownikiem ukryty, nie ma do niego bezpośredniego dostępu,
dzięki czemu zegarek nie jest nara ony na zniszczenie bardziej, ni gdyby mechanizm był cały
czas otwarty.
Obiekt to czarna skrzynka o dokładnie opisanym działaniu; obiektu u ywa się dlatego, e
wiadomo, co on robi, ale nie ma się dostępu do jego wnętrza. Owa nieprzezroczystość obiektów jest
wyjątkowo przydatna do serwisowania jednych obiektów niezale nie od innych. Jeśli dobrze zo-
staną określone kanały komunikacyjne między obiektami, zmiany w jednym obiekcie będą wpły-
wały na inne obiekty tylko wtedy, gdy będą dotyczyły tych kanałów. Wiedząc, jakie informacje są
wysyłane i odbierane przez obiekt, mo na łatwiej zastąpić jeden obiekt innym — nowy obiekt mo-
e realizować te same zadania inaczej, na przykład szybciej w danym środowisku. Obiekt ujawnia
tylko tyle informacji o sobie, ile jest potrzebnych u ytkownikowi, aby tego obiektu u yć. Obiekt
ma część publiczną, która jest dostępna dla wszystkich, którzy prześlą do obiektu komunikat
w formie jednej z funkcji przez obiekt udostępnianych. Do części publicznej nale ą przyciski po-
kazywane u ytkownikowi; wciśnięcie ka dego z tych przycisków powoduje wykonanie operacji
obiektu. U ytkownik zna jedynie nazwy operacji i wie, co te operacje robią.
Ukrywanie informacji prowadzi do zacierania się rozgraniczenia między danymi a operacjami.
W językach programowania takich jak Pascal podział na dane i funkcje jest prosty i stały. Inaczej
definiuje się jedne i drugie, inne jest ich zastosowanie. W programowaniu obiektowym dane
i metody są zestawione razem, zaś dla u ytkownika obiektu podział jest znacznie mniej wyraźny.
10. 1.2. ENKAPSULACJA 17
W pewnym zakresie jest to te cecha języków funkcyjnych. LISP, jeden z najstarszych języków
programowania, pozwala traktować dane i funkcje tak samo, gdy struktura jednych i drugich jest
identyczna.
Dokonaliśmy ju podziału między konkretne obiekty a typy obiektów czyli klasy. Funkcje pi-
szemy tak, aby u ywały ró nych zmiennych, nie chcemy jednak być zmuszani do zapisywania tylu
deklaracji obiektów, ilu obiektów potrzebujemy w całym programie. Pewne obiekty są tego samego
typu i chcielibyśmy u ywać pojedynczego typu jako ogólnej definicji takiego typu. W przypadku
pojedynczych zmiennych odró niamy deklarację typu od deklaracji zmiennej. W przypadku
obiektów mamy deklarację klasy i deklarację obiektu. Poni ej pokazano przykład klasy % i obiek-
tów QDLGEV, QDLGEV i QDLGEV:
ENCUU % ]
RWDNKE
%
EJCT
11. U KPV K FQWDNG F ]
UVTER[
FCVC/GODGTU
FCVC/GODGT K
FCVC/GODGT F
_
XQKF OGODGT(WPEVKQP
]
EQWV FCVC/GODGT FCVC/GODGT
FCVC/GODGT GPFN
_
XQKF OGODGT(WPEVKQP
KPV K EJCT
12. U PKGPCPC ]
FCVC/GODGT K
EQWV K RQDTCPC U GPFN
_
RTQVGEVGF
EJCT FCVC/GODGT=?
KPV FCVC/GODGT
FQWDNG FCVC/GODGT
_
% QDLGEV
QDKGMV QDLGEV
QDKGMV QDLGEV
Przekazywanie komunikatów jest odpowiednikiem wywoływania funkcji w tradycyjnych ję-
zykach programowania, jednak wa ne jest, e w przypadku programowania obiektowego metody
są powiązane z obiektami — stąd właśnie u ywany jest nowy termin. Przykładowo, wywołanie
publicznej metody OGODGT(WPEVKQP
obiektu QDLGEV:
QDLGEVOGODGT(WPEVKQP
jest widziane jako wysłanie do obiektu QDLGEV komunikatu OGODGT(WPEVKQP
. Po otrzymaniu
takiego komunikatu obiekt wywołuje swoją metodę i wyświetla wszystkie odpowiednie w danej
sytuacji informacje. Komunikaty mogą zawierać parametry:
QDLGEVOGODGT(WPEVKQP
Powy szy zapis to wywołanie komunikatu OGODGT(WPEVKQP
obiektu QDLGEV z parametrem .
13. 18 1. PROGRAMOWANIE OBIEKTOWE W C++
Wiersze zawierające takie komunikaty mogą być umieszczone albo w głównym programie,
albo w funkcji, albo w metodzie innego obiektu. Wobec tego odbiorca komunikatu mo e zostać
zidentyfikowany, ale nie dotyczy to wywołującego. Jeśli QDLGEV otrzyma komunikat OGODGT(WPE
VKQP
, nie wie, skąd ten komunikat pochodzi. Odpowiada na komunikat, pokazując dane za-
kodowane w metodzie OGODGT(WPEVKQP
, to samo dotyczy metody OGODGT(WPEVKQP
. Wobec
tego nadawca komunikatu mo e do komunikatu dołączyć informacje umo liwiające jego zi-
dentyfikowanie:
QDLGEVOGODGT(WPEVKQP
QDKGMV
Istotną cechą C++ jest mo liwość deklarowania ogólnych klas dzięki u yciu parametrów typu
w deklaracji klasy. Jeśli, na przykład, trzeba zadeklarować klasę, która będzie coś przechowywała
w tablicy, mo na zadeklarować ją następująco:
ENCUU KPV%NCUU ]
KPV UVQTCIG=?
_
jednak w ten sposób ogranicza się przydatność takiej klasy jedynie do liczb całkowitych; jeśli po-
trzebna będzie analogiczna klasa z liczbami zmiennoprzecinkowymi, konieczna będzie nowa de-
klaracja:
ENCUU HNQCV%NCUU ]
HNQCV UVQTCIG=?
_
Jeśli UVQTCIG ma zawierać struktury lub wskaźniki do znaków, konieczne byłoby zadeklaro-
wanie kolejnych dwóch klas. Znacznie lepiej byłoby zadeklarować ogólną klasę i dopiero podczas
definiowania obiektów decydować, jakiego typu dane będą w obiekcie przechowywane. Język
C++ umo liwia takie deklarowanie klasy, na przykład:
VGORNCVGENCUU IGP6[RG
ENCUU IGP%NCUU ]
IGP6[RG UVQTCIG=?
_
Dopiero potem decydujemy, jak inicjalizowany będzie typ IGP6[RG:
IGP%NCUUKPV KPV1DLGEV
IGP%NCUUHNQCV HNQCV1DLGEV
Taka klasa ogólna przybiera ró ne postacie w zale ności od konkretnej deklaracji. Jedna
ogólna deklaracja mo e udostępnić wszystkie te postacie.
Mo emy pójść jeszcze dalej i decyzję o wielkości bufora, obecnie 50 komórek, odło yć na
później, do czasu tworzenia obiektu. Jednak na wszelki wypadek mo emy te zostawić wartość
domyślną:
14. 1.3. DZIEDZICZENIE 19
VGORNCVGENCUU IGP6[RG KPV UKG
ENCUU IGP%NCUU ]
IGP6[RG UVQTCIG=UKG?
_
Definicje obiektów będą teraz wyglądały następująco:
IGP%NCUUKPV KPV1DLGEV W [V[ QUVCPKG TQOKCT FQO[ NP[
IGP%NCUUKPV KPV1DLGEV
IGP%NCUUHNQCV HNQCV1DLGEV
Pokazana metoda u ywania typów ogólnych nie ogranicza się jedynie do klas; mo na u ywać
jej te w deklaracjach funkcji. Przykładowo, standardowa operacja zamiany miejscami dwóch
wartości mo e być zdefiniowana następująco:
VGORNCVGENCUU IGP6[RG
XQKF UYCR
IGV6[RG GN IGP6[RG GN ]
IGP6[RG VOR GN GN GN GN VOR
_
Przykład ten pokazuje konieczność dostosowania operatorów wbudowanych do konkretnych
sytuacji. Jeśli IGP6[RG jest liczbą, znakiem lub strukturą, operator przypisania zadziała prawidło-
wo. Jeśli jednak IGP6[RG jest tablicą, nale y się spodziewać kłopotów ze strony funkcji UYCR
.
Problem ten mo na rozwiązać, przecią ając operator przypisania tak, aby rozszerzyć jego mo li-
wości w stosunku do określonych typów danych.
Po zadeklarowaniu funkcji ogólnej w czasie kompilacji programu mo na wygenerować kon-
kretne funkcje. Jeśli, na przykład, kompilator „zobaczy” następujące dwa wywołania:
UYCR
PO COKCPC FYÎEJ NKED EC MQYKV[EJ
UYCR
Z[ COKCPC FYÎEJ NKED OKGPPQRTGEKPMQY[EJ
wygeneruje dwie funkcje UYCR
, które będą u ywane w programie.
1.3. Dziedziczenie
Programowanie obiektowe pozwala tworzyć własne hierarchie klas tak, e obiekty nie muszą nale-
eć tylko do pojedynczych klas. Zanim przejdziemy do omówienia dziedziczenia, przyjrzyjmy się
następującym definicjom klas:
ENCUU $CUG%NCUU ]
RWDNKE
$CUG%NCUU
] _
XQKF H
EJCT
15. U PKGPCP[ ]
EQWV (WPMELC H
Y $CUG%NCUU Y[YQ CPC U GPFN
J
_
16. 20 1. PROGRAMOWANIE OBIEKTOWE W C++
RTQVGEVGF
XQKF I
EJCT
17. U PKGPCP[ ]
EQWV (WPMELC I
Y $CUG%NCUU Y[YQ CPC U GPFN
_
RTKXCVG
XQKF J
]
EQWV (WPMELC J
Y $CUG%NCUUP
_
_
ENCUU GTKXGF.GXGN RWDNKE XKTVWCN $CUG%NCUU ]
RWDNKE
XQKF H
EJCT
18. U PKGPCP[ ]
EQWV (WPMELC H
Y GTKXGF.GXGN Y[YQ CPC U GPFN
I
GTKXGF.GXGN
J
GTKXGF.GXGN
_
XQKF J
EJCT
19. U PKGPCPC ]
EQWV (WPMELC J
Y GTKXGF.GXGN Y[YQ CPC U GPFN
_
_
ENCUU GTKXGF.GXGN RWDNKE XKTVWCN $CUG%NCUU ]
RWDNKE
XQKF H
EJCT
20. U PKGPCP[ ]
EQWV (WPMELC H
Y GTKXGF.GXGN Y[YQ CPC U GPFN
I
GTKXGF.GXGN
J
D æF $CUG%NCUUJ
PKG LGUV FQUVúRPC
_
_
ENCUU GTKXGF.GXGN RWDNKE GTKXGF.GXGN RWDNKE GTKXGF.GXGN ]
RWDNKE
XQKF H
EJCT
21. U PKGPCP[ ]
EQWV (WPMELC H
Y GTKXGF.GXGN Y[YQ CPC U GPFN
I
GTKXGF.GXGN
GTKXGF.GXGNJ
GTKXGF.GXGN
$CUG%NCUUH
GTKXGF.GXGN
_
_
A oto przykładowy program:
KPV OCKP
]
$CUG%NCUU DE
GTKXGF.GXGN FN
GTKXGF.GXGN FN
GTKXGF.GXGN FN
DEH
OCKP
DEI
D æF $CUG%NCUUI
LGUV PKGFQUVúRPC
DEJ
D æF $CUG%NCUUJ
LGUV PKGFQUVúRPC
FNH
OCKP
FNI
D æF $CUG%NCUUI
LGUV PKGFQUVúRPC
FNJ
OCKP
FNH
OCKP
22. 1.3. DZIEDZICZENIE 21
FNI
D æF $CUG%NCUUI
LGUV PKGFQUVúRPC
FNJ
D æF $CUG%NCUUJ
LGUV PKGFQUVúRPC
FNH
OCKP
FNI
D æF $CUG%NCUUI
LGUV PKGFQUVúRPC
FNJ
TGVWTP
_
Program powy szy da następujące wyniki:
(WPMELC H
Y $CUG%NCUU Y[YQ CPC OCKP
(WPMELC J
Y $CUG%NCUU
(WPMELC H
Y GTKXGF.GXGN Y[YQ CPC OCKP
(WPMELC I
Y $CUG%NCUU Y[YQ CPC GTKXGF.GXGN
(WPMELC J
Y GTKXGF.GXGN Y[YQ CPC GTKXGF.GXGN
(WPMELC J
Y GTKXGF.GXGN Y[YQ CPC OCKP
(WPMELC H
Y GTKXGF.GXGN Y[YQ CPC OCKP
(WPMELC I
Y $CUG%NCUU Y[YQ CPC GTKXGF.GXGN
(WPMELC H
Y GTKXGF.GXGN Y[YQ CPC OCKP
(WPMELC I
Y $CUG%NCUU Y[YQ CPC GTKXGF.GXGN
(WPMELC J
Y GTKXGF.GXGN Y[YQ CPC GTKXGF.GXGN
(WPMELC H
Y $CUG%NCUU Y[YQ CPC GTKXGF.GXGN
(WPMELC J
Y $CUG%NCUU
(WPMELC J
Y GTKXGF.GXGN Y[YQ CPC PKGPCP[
Klasa $CUG%NCUU jest nazywana klasą bazową, zaś pozostałe klasy to klasy pochodne, gdy po-
chodzą od klasy bazowej w tym sensie, e mogą korzystać z pól i metod $CUG%NCUU oznaczonych jako
chronione (słowo kluczowe RTQVGEVGF) lub publiczne (RWDNKE). Klasy te dziedziczą wszystkie takie
pola po klasie bazowej, dzięki czemu zbędne jest powtarzanie w nich tych samych definicji. Jednak
klasa pochodna mo e przykryć definicję z klasy bazowej, podając własną definicję tej samej składowej.
W ten sposób zarówno klasa bazowa, jak i klasy pochodne mogą zapanować nad swoimi składowymi.
Klasa bazowa mo e decydować, które metody i które pola mogą zostać ujawnione klasom
pochodnym, wobec czego zasada ukrywania informacji jest zachowana nie tylko względem u ytkow-
ników klasy bazowej, ale tak e klas pochodnych. Co więcej, klasa pochodna mo e zdecydować,
które części metod i pól publicznych i chronionych zostaną zachowane, a które będą modyfikowane.
Przykładowo, w obu klasach pochodnych pierwszego poziomu, GTKXGF.GXGN i GTKXGF.GXGN,
zdefiniowane są lokalne wersje metody H
. Jednak nadal mo na skorzystać z tak samo nazwanej
metody z wy szych poziomów hierarchii; w tym celu nazwę metody nale y poprzedzić nazwą klasy
i operatorem zakresu, jak pokazano to w przypadku wywołania $CUG%NCUUH
z metody H
w klasie
GTKXGF.GXGN.
Klasa pochodna sama te mo e zawierać dodatkowe pola danych. Klasa taka mo e stać się
z kolei klasą bazową dla innej klasy i tak dalej; hierarchię dziedziczenia mo na dowolnie rozsze-
rzać. Przykładowo, klasa GTKXGF.GXGN pochodzi od $CUG%NCUU, ale jednocześnie jest klasą bazową
dla GTKXGF.GXGN.
W pokazanych przykładach dziedziczenie jest publiczne — po dwukropku w nagłówku defi-
nicji klasy pochodnej występuje słowo RWDNKE. Dziedziczenie publiczne oznacza, e pola publicz-
ne klasy bazowej będą w klasie pochodnej tak e publiczne, zaś chronione te będą chronione.
W przypadku dziedziczenia chronionego (w nagłówku klasy po dwukropku pojawia się słowo klu-
czowe RTQVGEVGF) pola i metody publiczne i chronione klasy bazowej w klasie pochodnej będą
chronione. W końcu, jeśli dziedziczenie jest prywatne (słowo kluczowe RTKXCVG), pola publiczne
i chronione klasy bazowej stają się prywatnymi polami klasy pochodnej. We wszystkich rodzajach
23. 22 1. PROGRAMOWANIE OBIEKTOWE W C++
dziedziczenia metody i pola prywatne klasy bazowej we wszystkich klasach pochodnych są niedo-
stępne. Przykładowo, próba wywołania J
z metody H
w klasie GTKXGF.GXGN powoduje błąd
kompilacji „$CUG%NCUUJ
is not accessible”. Jednak wywołanie z H
metody J
w klasie G
TKXGF.GXGN nie sprawia adnych kłopotów, gdy jest ono interpretowane jako wywołanie metody
J
zdefiniowanej w klasie GTKXGF.GXGN.
Pola i metody chronione klasy bazowej dostępne są jedynie dla klasy pochodnej tej klasy.
Z tego powodu klasy GTKXGF.GXGN i GTKXGF.GXGN mogą wywołać metodę chronioną I
klasy
$CUG%NCUU
, ale wywołanie tej metody w funkcji OCKP
jest ju niedopuszczalne.
Klasa pochodna nie musi pochodzić od jednej tylko klasy bazowej. Przykładowo, klasa G
TKXGF.GXGN pochodzi od klas GTKXGF.GXGN i GTKXGF.GXGN, dziedzicząc w ten sposób wszystkie
metody obu tych klas. GTKXGF.GXGN dziedziczy jednak te same metody z $CUG%NCUU dwukrotnie,
gdy obie klasy pochodne poziomu pierwszego pochodzą od klasy $CUG%NCUU. Jest to w najlep-
szym razie nadmiarowe i jako takie zbędne, a w najgorszym razie mo e spowodować błąd kompi-
lacji „member is ambiguous $CUG%NCUUI
and $CUG%NCUUI
”. Aby to się nie zdarzyło, definicje
obu klas bazowych zawierają modyfikator XKTVWCN, który oznacza, e klasa GTKXGF.GXGN zawiera
jedną tylko kopię ka dej metody klasy $CUG%NCUU. Analogiczny problem pojawi się, jeśli H
z G
TKXGF.GXGN wywoła J
bez podania operatora zakresu i nazwy klasy, tutaj GTKXGF.GXGNJ
.
Nie ma znaczenia fakt, e metoda J
w $CUG%NCUU jest prywatna i przez to niedostępna w GTKXG
F.GXGN — opisana sytuacja spowodowałaby wystąpienie błędu „member is ambiguous GTKXG
F.GXGNJ
and $CUG%NCUUJ
”.
1.4. Wskaźniki
Zmienne u ywane w programie mo na traktować jako pojemniki, które nigdy nie są puste — zawsze
coś jest w środku, albo wstawione przez programistę, albo, w przypadku braku inicjalizacji, przez
system operacyjny. Ka da taka zmienna ma co najmniej dwa atrybuty: zawartość czyli wartość
oraz poło enie pojemnika w pamięci komputera. Zawartość mo e być liczbą, znakiem lub wielko-
ścią zło oną, jak struktura czy unia. Jednak wartość ta mo e być te poło eniem innej zmiennej;
zmienna z taką wartością nazywane są wskaźnikami. Wskaźniki to zwykle zmienne pomocnicze,
które umo liwiają nam pośrednie sięganie do innych wartości. Wskaźnik jest analogią do znaku
drogowego, który wskazuje pewne miejsce, lub fiszki, na której zanotowano adres. Są to zmienne
prowadzące do zmiennych; pomocnicze zmienne wskazujące wartości, które są naprawdę istotne.
Jeśli mamy następującą deklarację:
KPV K L
25. S
K i L są zmiennymi liczbowymi, zaś R i S są wskaźnikami na te zmienne liczbowe; o ich roli decy-
duje poprzedzająca je gwiazdka. Zakładając, e adresy zmiennych K, L, R i S to, odpowiednio,
1080, 1082, 1084 i 1086, po przypisaniu zmiennej K wartości 15, uzyskamy w pamięci komputera
obraz taki, jak na rysunku 1.1a.
Moglibyśmy teraz wykonać przypisanie R K (lub R
KPV
26. K, gdyby kompilator nie chciał
uznać pierwszej wersji), ale zmienna R została stworzona po to, aby przechowywać adres zmiennej
liczbowej, a nie jej wartość. Wobec tego prawidłowe przypisanie to R K, gdzie symbol wystę-
pujący przed K oznacza, e chodzi o adres zmiennej K, a nie o jej wartość. Pokazano to na rysunku
1.1b. Na rysunku 1.1c strzałka z R do K wskazuje, e R jest wskaźnikiem zawierającym adres K.
27. 1.4. WSKAŹNIKI 23
RYSUNEK 1.1.
Zmiany wartości
po przypisaniach realizowane
są przy u yciu wskaźników.
Przypadki (b) i (c) opisują tę
samą sytuację, tak samo (d)
i (e), (g) i (h), (i) i (j), (k) i (l)
oraz (m) i (n)
Musimy być w stanie odró niać wartość R — adres — od wartości umieszczonej pod tym adre-
sem. Aby na przykład przypisać wartość 20 zmiennej wskazywanej przez R trzeba u yć wyra enia:
28. R
Gwiazdka to operator dereferencji, który wymusza najpierw pobranie wartości R, potem się-
gnięcie do wskazywanego przez tę wartość miejsca i wpisanie tam liczby 20 (rysunek 1.1d). Ry-
sunki 1.1e do 1.1n to dalsze przykłady instrukcji przypisania, na których pokazano sposób umiesz-
czania wartości w pamięci komputera.
29. 24 1. PROGRAMOWANIE OBIEKTOWE W C++
Tak naprawdę wskaźniki, tak samo jak inne zmienne, mają dwa atrybuty: zawartość i poło e-
nie. Poło enie mo na zapisać w innej zmiennej, która staje się wskaźnikiem na wskaźnik.
Na rysunku 1.1 adresy zmiennych są przypisywane wskaźnikom, jednak wskaźniki mogą od-
nosić się do anonimowych lokalizacji w pamięci dostępnych jedynie przez adres, a niemających
nazw. Lokalizacje takie muszą być dynamicznie określane przez proces zarządzający pamięcią
podczas wykonywania programu, podczas gdy poło enie zmiennych określane jest ju na etapie
kompilacji.
Aby dynamicznie alokować i zwalniać pamięć, u ywa się dwóch funkcji. Jedna to PGY; pobiera
ona z pamięci taki fragment, jaki jest potrzebny na zapisanie danej typu, który zostanie podany za
słowem PGY. Przykładowo, instrukcja:
R PGY KPV
spowoduje za ądanie przez program pamięci potrzebnej na zamieszczenie jednej liczby całkowi-
tej, zaś adres tej pamięci zostanie umieszczony w zmiennej R. Teraz mo na blokowi wskazywa-
nemu przez R przypisywać wartości; trzeba to robić pośrednio, przez wskaźnik R lub dowolny inny
wskaźnik S, któremu przypiszemy adres z R instrukcją S R.
Kiedy pamięć zajmowana przez liczbę wskazywaną przez R przestaje być potrzebna, mo na
ją zwolnić do puli obsługiwanej przez system operacyjny instrukcją:
FGNGVG R
Jednak nawet po wykonaniu tej instrukcji zmienna R nadal zawiera adres zwolnionego bloku, choć
blok ten przestaje być w programie dostępny. To tak, jakby traktować adres zburzonego domu jako
adres mo liwego zamieszkania. Ka da próba znalezienia kogoś pod takim adresem jest z góry
skazana na niepowodzenie. Analogicznie, jeśli po wywołaniu instrukcji FGNGVG nie usuniemy ze
zmiennej wskaźnikowej adresu, nara amy się na ryzyko błędów; program mo e przestać działać
podczas prób dostępu do nienale ącej ju do niego pamięci. Jest to szczególnie niebezpieczne
w przypadku sięgania do obiektów bardziej zło onych ni liczby. Aby uniknąć opisanego problemu,
nale y wskaźnikowi przypisać nowy adres; jeśli nie ma adnego prawidłowego adresu na podorędziu,
nale y u yć adresu pustego, o wartości . Po wykonaniu przypisania:
R
nie mówimy, e R wskazuje zero czy 07.., lecz e R ma wartość 07.. (pustą).
1.4.1. Wskaźniki a tablice
W pokazanym powy ej przykładzie wskaźnik R wskazywał blok pamięci zawierający jedną liczbę
całkowitą. Znacznie ciekawsza jest sytuacja, kiedy wskaźnik wskazuje strukturę danych tworzoną
i modyfikowaną dynamicznie. Pozwala to obejść ograniczenia dotyczące tablic. W C++, podobnie
jak większości innych języków programowania, tablice trzeba zawczasu zadeklarować. Wobec te-
go ich rozmiar musi być znany przed uruchomieniem programu, a zatem programista musi dość
du o wiedzieć o oprogramowanym problemie, gdy jest to warunkiem poprawnego określenia
wielkości tablicy. Jeśli tablica będzie zbyt du a, niepotrzebnie zajmowana przez nią pamięć będzie
zmarnowana. Jeśli tablica będzie zbyt mała, dane będą umieszczane za jej końcem, co powoduje
powa ną awarię programu. Czasami jednak rozmiaru tablicy po prostu nie da się przewidzieć —
w takiej sytuacji decyzję o wielkości tablicy i przez to alokowanej pamięci odkłada się do czasu
wykonywania programu.
30. 1.4. WSKAŹNIKI 25
Do rozwiązania opisanego problemu u ywa się wskaźników. Spójrzmy na rysunek 1.1b.
Wskaźnik R wskazuje adres 1080, ale mo na za jego pośrednictwem sięgnąć te pod adresy 1082,
1084 i tak dalej — jest to mo liwe dzięki temu, e kolejne dane przesuwane są o taką samą wiel-
kość. Aby, na przykład, sięgnąć do wartości zmiennej L sąsiadującej z K, wystarczy dodać do adresu
K trzymanego w R rozmiar wartości zmiennej L; wtedy wskaźnik R będzie wskazywał adres zmien-
nej L. Tak właśnie w C++ obsługiwane są tablice.
Przyjrzyjmy się następującym deklaracjom:
KPV C=?
31. R
Deklaracje te mówią, e C jest wskaźnikiem bloku pamięci, który mo e zawierać pięć liczb
całkowitych. Wskaźnik jest stały, to znaczy nale y go traktować jako stały; wobec tego ka da próba
przypisania zmiennej C wartości, na przykład:
C R
lub:
C
traktowana jest jako błąd kompilacji. Zmienna C jest wskaźnikiem, więc do sięgnięcia do poszcze-
gólnych komórek tablicy C mo na u ywać zapisu wskaźnikowego. Tak oto pętlę dodającą wszystkie
wartości z tej tablicy:
HQT
UWO C=? K K K
UWO
C=K?
mo na zamienić na zapis wskaźnikowy tak:
HQT
UWO
35. R
Zauwa my, e skoro C
oznacza poło enie następnej komórki tablicy C, to C
jest odpowiednikiem
C=?. Wobec tego, jeśli C wskazuje adres 1020, to C
nie zawiera adresu 1021, lecz 1022, gdy sto-
sowana jest arytmetyka wskaźników zale na od typu wskazywanych danych. Jeśli dane są deklaracje:
EJCT D=?
NQPI E=?
i wiadomo, e D równe jest 1050, E równe jest 1055, to D
równe jest 1051, gdy jeden znak zaj-
muje jeden bajt, zaś E
równe jest 1059, gdy liczba typu NQPI zajmuje cztery bajty. Jest to wyni-
kiem faktu, e w arytmetyce wskaźników wyra enie E
K oznacza adres E
K
36. UKGQH
NQPI.
Dotąd tablica C była deklarowana statycznie i zawierała pięć komórek. Rozmiar takiej tablicy
jest ustalony na cały czas działania programu. Tablice mo na deklarować tak e dynamicznie; wtedy
u ywane są zmienne wskaźnikowe. Przykładowo, przypisanie:
R PGY KPV=P?
37. 26 1. PROGRAMOWANIE OBIEKTOWE W C++
powoduje zaalokowanie pamięci na P liczb całkowitych. Wskaźnik R mo na traktować jako
zmienną tablicową i mo na stosować doń notację tablicową. Sumę liczb z tablicy R mo na wyzna-
czyć tak:
HQT
UWO R=? K K P K
UWO
R=K?
Mo na zastosować te notację wskaźnikową normalnie:
HQT
UWO
41. S
R jest zmienną, więc mo na jej przypisać nową tablicę. Kiedy tablica wskazywana przez R prze-
staje być potrzebna, przypisaną jej pamięć mo na zwolnić instrukcją:
FGNGVG =? R
U ycie pustej pary nawiasów kwadratowych jest wa ne, gdy informuje, e R wskazuje tablicę.
Bardzo wa nym rodzajem tablic są łańcuchy czyli tablice znaków. Istnieje wiele funkcji pre-
definiowanych przetwarzających łańcuchy. Nazwy tych funkcji zaczynają się od UVT, na przykład
UVTNGP
U określająca długość łańcucha U, UVTER[
UU kopiująca łańcuch U do U. Trzeba pa-
miętać, e wszystkie te funkcje zakładają, e łańcuchy kończą się znakiem 07.., . I tak UVTE
R[
UU kopiuje U tak długo, a znajdzie w nim znak 07... Jeśli programista tego znaku w łań-
cuchu nie umieści, kopiowanie zostanie przerwane dopiero po napotkaniu pierwszego takiego
znaku gdziekolwiek w pamięci komputera, za adresem zmiennej U. Oznacza to, e kopiowane będą
znaki za U, co w końcu mo e doprowadzić do awarii programu.
1.4.2. Wskaźniki a konstruktory kopiujące
Kiedy wskaźniki zapisane w polach obiektu nie będą podczas kopiowania obiektów prawidłowo
obsłu one, trzeba liczyć się z problemami. Niech dana będzie taka oto definicja:
UVTWEV 0QFG ]
EJCT
43. P KPV C ]
PCOG PGY EJCT=UVTNGP
P
?
UVTER[
PCOGP
CIG C
_
_
44. 1.4. WSKAŹNIKI 27
Celem deklaracji:
0QFG PQFG
4QIGT PQFG
PQFG NWD PQFG PQFG
jest stworzenie obiektu PQFG, przypisanie wartości dwu jego polom, a następnie stworzenie obiektu
PQFG i zainicjalizowanie jego pól takimi samymi wartościami jak PQFG. Obiekty muszą być od
siebie niezale ne, więc przypisanie wartości pól jednego obiektu nie powinno wpływać na drugi
obiekt. Jednak po przypisaniu:
UVTER[
PQFGPCOG 9GPF[
PQFGCIG
przy próbie zajrzenia do zawartości obiektów:
EQWVPQFGPCOG PQFGCIG PQFGPCOG PQFGCIG
otrzymamy:
9GPF[ 9GPF[
Wiek jest ró ny, ale imię jest takie samo. Co się właściwie stało? Chodzi o to, e w definicji klasy
0QFG nie podano konstruktora kopiującego:
0QFG
EQPUV 0QFG
który jest niezbędny do wykonania inicjalizacji PQFG
PQFG. Jeśli u ytkownik nie poda kon-
struktora kopiującego, konstruktor taki zostanie automatycznie wygenerowany przez kompilator.
Jednak konstruktor stworzony przez kompilator kopiuje pole po polu. Pole PCOG jest wskaźnikiem,
więc skopiowany zostanie adres łańcucha PQFGPCOG do PQFGPCOG, a zawartość łańcucha ju ko-
piowana nie będzie. Wobec tego po wykonaniu pokazanej wcześniej deklaracji sytuacja będzie się
przedstawiała tak jak na rysunku 1.2a. Jeśli teraz wykonane zostaną przypisania:
UVTER[
PQFGPCOG 9GPF[
PQFGCIG
pole PQFGCIG zostanie przypisane prawidłowo, ale łańcuch 4QIGT wskazywany przez pole PCOG
obu obiektów zostanie nadpisany napisem 9GPF[ wskazywanym przez oba obiekty (rysunek 1.2b).
Aby do takiej sytuacji nie dopuścić, konieczne jest zdefiniowanie prawidłowego konstruktora ko-
piującego:
UVTWEV 0QFG ]
EJCT
46. P KPV C ]
PCOG PGY EJCT=UVTNGP
P
?
UVTER[
PCOGP
CIG C
_
47. 28 1. PROGRAMOWANIE OBIEKTOWE W C++
RYSUNEK 1.2.
Dlaczego w przypadku
obiektów
zawierających
pola wskaźnikowe
konieczne jest
u ycie konstruktora
kopiującego
0QFG
EQPUV 0QFG P ] MQPUVTWMVQT MQRKWLæE[
PCOG PGY EJCT=UVTNGP
PPCOG
?
UVTER[
PCOGPPCOG
CIG PCIG
_
_
Kiedy dany jest nowy konstruktor, PQFG
PQFG wygeneruje kopię napisu 4QIGT wskazywanego
przez PQFGPCOG (rysunek 1.2c), a przypisanie pól jednego obiektu nie wpływa na pola drugiego
obiektu:
UVTER[
PQFGPCOG 9GPF[
PQFGCIG
Obiekt PQFG pozostanie niezmieniony, co widać na rysunku 1.2d.
Podobne problemy pojawiają się w przypadku u ycia operatora przypisania. Jeśli u ytkownik
nie poda definicji operatora przypisania, instrukcja:
PQFG PQFG
spowoduje przypisanie kolejno ka dego pola, co spowoduje problemy analogiczne jak na rysunku
1.2a – b. Aby tych problemów uniknąć, konieczne jest przecią enie operatora przypisania. W przy-
padku klasy 0QFG przecią enie mo e wyglądać następująco:
0QFG QRGTCVQT
EQPUV 0QFG P ]
KH
VJKU P ] PKG RT[RKUWLGO[ QDKGMVW FQ UCOGIQ UKGDKG
KH
PCOG
FGNGVG =? PCOG
PCOG PGY EJCT=UVTNGP
PPCOG
?
UVTER[
PCOGPPCOG
CIG PCIG
49. VJKU
_
W powy szym fragmencie kodu u yto specjalnego wskaźnika VJKU. Ka dy obiekt mo e za
pomocą tego wskaźnika uzyskać swój własny adres, wobec czego
50. VJKU to sam obiekt.
1.4.3. Wskaźniki i destruktory
Co się dzieje z lokalnie definiowanymi obiektami typu 0QFG? Tak jak wszystkie inne zmienne lo-
kalne, są niszczone w tym sensie, e poza blokiem, w którym je zdefiniowano, stają się niedostępne,
zaś zajmowana przez nie pamięć jest zwalniana. Jednak, mimo e pamięć zajmowana przez obiekt
0QFG jest zwalniana, to nie cała zaalokowana pamięć zostanie zwolniona. Jedno z pól tego obiektu
to wskaźnik łańcucha, wobec czego zwolniona zostanie pamięć przeznaczona na wskaźnik, ale nie
zostanie zwolniona pamięć na sam łańcuch. Po zniszczeniu obiektu dostępny dotąd łańcuch z pola
PCOG staje się niedostępny (o ile nie został przypisany polu PCOG innego obiektu lub całkiem innej
zmiennej łańcuchowej), więc nie mo na ju nawet zwolnić pamięci przyporządkowanej temu łań-
cuchowi. Jest to problem związany z polami wskazującymi dynamicznie alokowaną pamięć. Aby
tego problemu uniknąć, definicja klasy powinna zawierać definicję destruktora. Destruktor to
funkcja automatycznie wywoływana w chwili niszczenia obiektu, które to niszczenie odbywa się
w chwili wyjścia z bloku, w którym obiekt zdefiniowano, lub w chwili wywołania FGNGVG. De-
struktory nie mają adnych parametrów ani wartości zwracanych, więc w ka dej klasie istnieć mo e
jeden tylko destruktor. W przypadku klasy 0QFG będzie on wyglądał następująco:
`0QFG
]
KH
PCOG
FGNGVG =? PCOG
_
1.4.4. Wskaźniki a referencje
Przyjrzyjmy się następującym deklaracjom:
KPV P
51. R P T P
Zmienna R została zadeklarowana jako zmienna typu KPV
52. , wskaźnik na liczbę całkowitą, zaś T jako
zmienna typu KPV — referencja do liczby całkowitej. Zmienna referencji musi być zainicjalizo-
wana w chwili deklaracji referencją do konkretnej zmiennej, wobec czego nigdy nie mo e być pu-
sta. Zmienną referencji T mo na traktować jako inną nazwę zmiennej P, jeśli zatem zmieni się P, to
zmieni się te wartość T. Wynika to stąd, e zmienne referencji implementuje się jako stałe wskaź-
niki do zmiennych.
Wywołanie instrukcji wyświetlającej dane po powy szych deklaracjach:
EQWV P
54. 30 1. PROGRAMOWANIE OBIEKTOWE W C++
da w wyniku 5 5 5. Po przypisaniu:
P
ta sama instrukcja da ju 7 7 7. Po przypisaniu:
55. R
da 9 9 9, zaś po przypisaniu:
T
da 10 10 10. Z pokazanych instrukcji wynika, e to, co mo na uzyskać, stosując dereferencję
wskaźników, mo na te uzyskać, stosując dereferencję zmiennych będących referencjami. Nie jest
to przypadek, gdy jak wspomniano wcześniej, referencje są implementowane jako stałe wskaźniki.
Zamiast deklaracji:
KPV T P
mo na zapisać:
KPV
56. EQPUV T P
gdzie T jest stałym wskaźnikiem na liczbę całkowitą, czyli przypisanie:
T S
gdzie S jest kolejnym wskaźnikiem, jest błędne, gdy wartość T nie mo e się zmieniać. Jednak
przypisanie:
57. T
ju jest dopuszczalne, jeśli tylko P nie jest stałą liczbą całkowitą.
Trzeba tu odnotować ró nicę między daną typu KPV
59. . Ten drugi typ
to wskaźnik na stałą liczbę całkowitą:
EQPUV KPV
60. U O
i po takiej deklaracji przypisanie:
U O
gdzie O jest liczbą całkowitą (stałą lub nie), jest dopuszczalne, zaś przypisanie:
61. U
jest błędne, nawet jeśli O nie jest stałą.
Zmienne będące referencjami są wykorzystywane przy przykazywaniu do funkcji parame-
trów przez referencję. Przekazywanie przez referencję jest potrzebne, jeśli podczas wykonywania
62. 1.4. WSKAŹNIKI 31
funkcji przekazany parametr powinien zostać trwale zmieniony. Ten sam efekt mo na uzyskać,
stosując wskaźniki (w języku C jest to jedyny mechanizm przekazywania przez referencję). Na
przykład zadeklarowanie funkcji:
XQKF H
KPV K KPV
64. L
M
_
powoduje, e zmienne:
KPV P P P
po wywołaniu:
H
P PP
mają wartości: P = 4, P = 2, P = 3.
Typy referencyjne są te u ywane do wskazywania rodzaju wartości zwracanych przez funk-
cje. Jeśli dana jest na przykład funkcja:
KPV H
KPV C=? KPV K ]
TGVWTP C=K?
_
i zadeklarowana zostanie tablica:
KPV C=? ]_
funkcji H
mo na u yć z dowolnej strony operatora przypisania, po stronie prawej:
P H
C
lub po stronie lewej:
H
C
co spowoduje przypisanie liczby 6 do C=?, czyli C = [1 2 3 6 5]. Zauwa my, e taki sama efekt
mo na uzyskać za pomocą wskaźników, ale w takim przypadku konieczne byłoby u ycie jawnej
dereferencji:
KPV
67. 32 1. PROGRAMOWANIE OBIEKTOWE W C++
1.4.5. Wskaźniki na funkcje
Jak wspomniano w punkcie 1.4.1, jednym z atrybutów zmiennej jest adres określający poło enie
tej zmiennej w pamięci. To samo dotyczy funkcji — jeden z atrybutów funkcji to adres określają-
cy poło enie treści tej funkcji w pamięci. Po wywołaniu funkcji system przekazuje sterowanie do
tego miejsca po to, aby wykonać tę funkcję. Z tego powodu mo na u ywać wskaźników na funk-
cje. Wskaźniki te są bardzo przydatne przy implementowaniu funkcjonałów (czyli funkcji otrzy-
mujących jako parametry inne funkcje), takie jak całki.
Niech dana będzie prosta funkcja:
FQWDNG H
FQWDNG Z ]
TGVWTP
70. H
to
wywołanie tej funkcji.
Teraz zastanówmy się nad funkcją C++ wyliczającą następującą sumę:
i =m
∑ f (i )
i =n
Aby wyliczyć sumę, trzeba podać nie tylko wartości graniczne n i m, ale te funkcję f. Wobec tego
zastosowana implementacja pozwolić przekazywać nie tylko parametry liczbowe, ale tak e funk-
cyjne. W C++ robi się to następująco:
FQWDNG UWO
FQWDNG
71. H
FQWDNG KPV P KPV O ]
FQWDNG TGUWNV
HQT
KPV K P K O K
TGUWNV
H
K
TGVWTP TGUWNV
_
W podanej definicji funkcji UWO
deklaracja pierwszego parametru formalnego:
FQWDNG
72. H
FQWDNG
oznacza, e H jest wskaźnikiem na funkcję mającej jeden parametr typu FQWDNG i zwracającej war-
tość FQWDNG. Dookoła
73. H konieczne jest zastosowanie nawiasów; mają one wy szy priorytet ni
operator dereferencji,
75. H
FQWDNG
to deklaracja funkcji zwracającej wskaźnik na wartość typu FQWDNG.
Teraz funkcja UWO
mo e być wywołana z dowolną wbudowaną lub zdefiniowaną przez
u ytkownika funkcję mającą parametr typu FQWDNG i taki parametr zwracającą:
EQWV UWO
H GPFN
EQWV UWO
UKP GPFN
76. 1.5. POLIMORFIZM 33
Innym przykładem mo e być funkcja znajdująca pierwiastek funkcji ciągłej na przedziale.
Pierwiastek znajduje się wielokrotnie, dzieląc przedział na pół i znajdując środek aktualnego prze-
działu. Jeśli jest on zerem lub jeśli przedział jest mniejszy od pewnej, zało onej małej wartości,
zwracany jest ten środek. Jeśli wartości funkcji na lewym brzegu przedziału i w jego środku mają
przeciwne znaki, przeszukiwanie kontynuowane jest w lewej połowie przedziału. W przeciwnym
przypadku przedziałem bie ącym staje się prawa połowa przedziału dotychczasowego. Oto im-
plementacja algorytmu:
FQWDNG TQQV
FQWDNG
77. H
FQWDNG FQWDNG C FQWDNG D FQWDNG GRUKNQP ] RKGTYKCUVGM
FQWDNG OKFFNG
C
D
YJKNG
H
OKFFNG HCDU
D C GRUKNQP ]
KH
H
C
78. H
OKFFNG LG NK H
C K H
OKFFNG OCLæ
D OKFFNG RTGEKYPG PCMK
GNUG C OKFFNG
OKFFNG
C
D
_
TGVWTP OKFFNG
_
1.5. Polimorfizm
Polimorfizm oznacza mo liwość przybierania wielu postaci. W kontekście programowania obiek-
towego oznacza on, e ta sama nazwa funkcji odpowiada wielu funkcjom nale ącym do ró nych
obiektów. Oto przykład:
ENCUU %NCUU ]
RWDNKE
XKTVWCN XQKF H
]
EQWV (WPMELC H
Y MNCUKG %NCUUP
_
XQKF I
]
EQWV (WPMELC I
Y MNCUKG %NCUUP
_
_
ENCUU %NCUU ]
RWDNKE
XKTVWCN XQKF H
]
EQWV (WPMELC H
Y MNCUKG %NCUUP
_
XQKF I
]
EQWV (WPMELC I
Y MNCUKG %NCUUP
_
_
ENCUU %NCUU ]
RWDNKE
XKTVWCN XQKF J
]
EQWV (WPMELC J
Y MNCUKG %NCUUP
_
79. 34 1. PROGRAMOWANIE OBIEKTOWE W C++
_
KPV OCKP
]
%NCUU QDLGEV
80. R
%NCUU QDLGEV
%NCUU QDLGEV
R QDLGEV
R H
R I
R
%NCUU
82. QDLGEV
R H
#YCT[LPG RTGTYCPKG RTQITCOW
R I
R J
J
PKG LGUV OGVQFæ MNCU[ %NCUU
TGVWTP
_
Wynik działania powy szego programu jest następujący:
(WPMELC H
Y MNCUKG %NCUU
(WPMELC I
Y MNCUKG %NCUU
(WPMELC H
Y MNCUKG %NCUU
(WPMELC I
Y MNCUKG %NCUU
(WPMELC I
Y MNCUKG %NCUU
Nie powinien zaskakiwać fakt, e kiedy R jest zadeklarowane jako wskaźnik na obiekt QD
LGEV klasy %NCUU, uruchamiane są dwie funkcje zadeklarowane w klasie %NCUU. Jednak kiedy R
staje się wskaźnikiem na obiekt QDLGEV klasy %NCUU, R H
aktywuje funkcję zdefiniowaną
w klasie %NCUU, zaś R I
aktywuje funkcję z klasy %NCUU. Dlaczego? Chodzi o to, kiedy po-
dejmowana jest decyzja, która funkcja zostanie wywołana.
W przypadku tak zwanego wiązania statycznego decyzja o wyborze wykonywanej funkcji
podejmowana jest na etapie kompilacji. W przypadku wiązania dynamicznego decyzja ta jest od-
kładana do czasu wykonania programu. W C++ wiązanie dynamiczne jest wymuszane przez zade-
klarowanie metody jako wirtualnej, słowem kluczowym XKTVWCN. W ten sposób, kiedy wywoły-
wana jest metoda wirtualna, wybór funkcji na etapie wykonania programu zale ny jest nie od typu
wskaźnika określonego w deklaracji, ale od typu wskaźnika faktycznie u ytego. W pokazanym
przykładzie wskaźnik R zadeklarowano jako wskaźnik typu %NCUU
83. . Wobec tego, jeśli R wskazuje
funkcję I
i nie jest to funkcja wirtualna, to niezale nie od tego, w którym miejscu wystąpi R I
,
zawsze jest ono traktowane jako wywołanie funkcji I
z klasy %NCUU. Wynika to stąd, e kom-
pilator podejmuje decyzję na podstawie deklaracji typu wskaźnika R i na podstawie faktu, e funk-
cja I
nie jest zadeklarowana ze słowem kluczowym XKTVWCN. W przypadku metod wirtualnych
sytuacja zasadniczo się zmienia. Tym razem decyzja podejmowana jest na etapie wykonywania
programu — jeśli metoda jest wirtualna, system określa typ wskaźnika na bie ąco i wywołuje od-
powiednią metodę. Początkowo, R zostało zadeklarowane jako wskaźnik typu %NCUU
84. , więc wy-
woływana jest funkcja wirtualna H
z klasy %NCUU. Po przypisaniu R adresu obiektu QDLGEV klasy
%NCUU wywoływana jest metoda H
klasy %NCUU.
Trzeba te odnotować, e po przypisaniu R adresu obiektu 1DLGEV, nadal wywoływana jest
metoda I
z klasy %NCUU. Wynika to stąd, e I
nie zdefiniowano ponownie w klasie %NCUU,
wobec czego u ywana jest definicja z klasy %NCUU. Jednak próba wywołania R H
powoduje
85. 1.6. C++ A PROGRAMOWANIE OBIEKTOWE 35
awarię programu, gdy funkcję H
zadeklarowano jako wirtualną w klasie %NCUU; system szuka
jej zatem (bezskutecznie) w klasie %NCUU. Poza tym, mimo e R wskazuje obiekt QDLGEV, instruk-
cja R J
powoduje błąd kompilacji, gdy kompilator nie znajduje w klasie %NCUU metody J
,
a R nadal jest wskaźnikiem typu %NCUU
86. . Z punktu widzenia kompilatora nie ma znaczenia, e J
zdefiniowano w klasie %NCUU — czy to jako metodę wirtualną czy nie.
Polimorfizm jest potę nym narzędziem programowania obiektowego. Wystarczy wysłać
standardowy komunikat do wielu ró nych obiektów, nie podając, jak komunikat ma być interpre-
towany. Nie trzeba znać typów obiektów. Odbiorca jest odpowiedzialny za interpretację komuni-
katu i jego wykonanie. Nadawca nie musi modyfikować komunikatu w zale ności od typu odbiorcy.
Zbędne jest stosowanie jakichkolwiek instrukcji warunkowych. Poza tym do zło onych progra-
mów mo na bezproblemowo dodawać nowe moduły bez konieczności ponownej kompilacji całego
programu.
1.6. C++ a programowanie obiektowe
Dotąd zakładaliśmy, e C++ jest językiem programowania obiektowego, wszystkie mo liwości
programowania obiektowego były ilustrowane kodem C++. Jednak C++ nie jest językiem czysto
obiektowym. C++ jest bardziej obiektowy ni C czy Pascal, które nie mają adnych cech obiekto-
wości. C++ jest te bardziej obiektowy ni Ada obsługująca klasy (pakiety) i instancje. Jednak ję-
zyk C++ jest w mniejszym stopniu obiektowy ni języki stricte obiektowe, jak Smalltalk czy
Eiffel.
C++ nie zmusza do programowania obiektowego. Mo emy programować w C++ bez znajo-
mości obiektowych cech tego języka. Powodem tego jest ogromna popularność języka C. C++
stanowi nadzbiór C, więc programiści C nie mają problemów z „przesiadką” na C++; mogą stoso-
wać tylko łatwiejsze w u yciu operacje wejścia i wyjścia, mechanizm wywołania przez referencję,
domyślne parametry funkcji, przecią anie operatorów, funkcje inline i im podobne. U ycie obiektowe-
go języka programowania typu C++ nie gwarantuje programowania obiektowego. Z drugiej strony
wywoływanie całej maszynerii klas i metod nie zawsze jest konieczne, szczególnie w przypadku
niewielkich programów. Wobec tego mo liwość niekorzystania z obiektowości nie musi być wadą.
Poza tym C++ jest łatwiejsze w integrowaniu z istniejącym kodem C ni inne języki programowa-
nia obiektowego.
C++ zapewnia doskonały mechanizm enkapsulacji pozwalający dobrze kontrolować ukrywa-
nie informacji. Jednak od tej reguły istnieją wyjątki — chodzi o „funkcje zaprzyjaźnione”. Infor-
macje prywatne nale ące do pewnej klasy nie mogą być dla nikogo dostępne, zaś informacje pu-
bliczne są dostępne dla wszystkich. Jednak czasami dobrze byłoby pozwolić niektórym
u ytkownikom na dostęp do danych prywatnych. Mo na to zrealizować, jeśli klasa pokazuje funk-
cje u ytkownika jako funkcje zaprzyjaźnione. Jeśli na przykład dana jest następująca definicja klasy:
ENCUU % ]
KPV P
HTKGPF KPV H
_ QD
to funkcja H
ma bezpośredni dostęp do zmiennej P nale ącej do klasy %:
KPV H
] TGVWTP
88. 36 1. PROGRAMOWANIE OBIEKTOWE W C++
Mo na byłoby tę sytuację uznać za naruszenie zasady ukrywania informacji. Jednak to sama
klasa % daje dostęp do swoich części prywatnych wybranym funkcjom, pozostałym te dane pozo-
stają niedostępne. Wobec tego, skoro klasa ma kontrolę nad tym, które funkcje będą uwa ane za
zaprzyjaźnione, mechanizm funkcji zaprzyjaźnionych mo na uznać za rozszerzenie zasady ukry-
wania informacji. Mechanizm ten jest u ywany do ułatwienia programowania i do przyspieszenia
wykonywania programu, gdy przepisywanie kodu bez u ycia funkcji zaprzyjaźnionych mogłoby
być nader kłopotliwe. Takie rozluźnienie niektórych zasad nie jest w informatyce czymś niezwy-
kłym; wystarczy wspomnieć istnienie pętli w językach funkcyjnych (jak LISP) czy przechowywa-
nie dodatkowych informacji w nagłówku pliku danych będące naruszeniem modelu relacyjnego
(jak w dBase III+).
1.7. Standardowa biblioteka szablonów
C++ jest językiem obiektowym, ale niedawne rozszerzenia języka wynoszą C++ na wy szy po-
ziom. Najistotniejszym dodatkiem do języka jest standardowa biblioteka szablonów (STL, Stan-
dard Template Library) początkowo stworzona przez Alexandra Stepanova i Menga Lee. Biblio-
teka ta zawiera trzy rodzaje bytów ogólnych: kontenery, iteratory i algorytmy. Algorytmy są
często u ywanymi funkcjami, które mo na stosować do ró nych struktur danych. W ich stosowa-
niu pośredniczą iteratory decydujące, które algorytmy mają być stosowane do jakiego typu obiek-
tów. STL zwalnia programistów z pisania własnych implementacji rozmaitych klas i funkcji; od
razu gotowe są ogólne implementacje rozwiązania poszczególnych problemów.
1.7.1. Kontenery
Kontener to struktura danych zawierająca obiekty, zwykle wszystkie tego samego typu. Ró ne ro-
dzaje kontenerów ró nie układają obiekty. Wprawdzie liczba mo liwych uło eń jest teoretycznie
nieograniczona, ale jedynie niewielka część tych uło eń ma znaczenie praktyczne; właśnie te naj-
częściej u ywane zostały zamieszczone w bibliotece STL. Biblioteka ta zawiera następujące kon-
tenery: FGSWG, NKUV, OCR, OWNVKOCR, UGV, OWNVKUGV, UVCEM, SWGWG, RTKQTKV[ASWGWG i XGEVQT.
Kontenery STL zaimplementowano jako szablony klas zawierające metody umo liwiające
opisanie operacji, które będą wykonywane na obiektach umieszczonych w strukturze lub na samej
strukturze. Niektóre operacje są wspólne dla wszystkich kontenerów, choć mogą być one ró nie
zaimplementowane w ró nych strukturach. Do metod wspólnych dla wszystkich kontenerów nale ą:
konstruktor, konstruktor kopiujący, destruktor, GORV[
, OCZAUKG
, UKG
, UYCR
, QRGTCVQT
i (za wyjątkiem kolejki RTKQTKV[ASWGWG) sześć operatorów relacyjnych: QRGTCVQT i tak dalej. Poza
tym wszystkie kontenery poza UVCEM, SWGWG i RTKQTKV[ASWGWG mają metody DGIKP
, GPF
, TDG
IKP
, TGPF
, GTCUG
i ENGCT
.
Elementy umieszczane w kontenerach mogą być dowolnego typu — muszą zapewniać przy-
najmniej konstruktor domyślny, destruktor i operator przypisania. Jest to szczególnie istotne
w przypadku typów definiowanych przez u ytkownika. Niektóre kompilatory mogą te wymagać
przecią enia niektórych operatorów relacyjnych (zwykle i , czasem te i ), nawet jeśli ope-
ratory te nie będą w programie u ywane. Poza tym, jeśli pola są wskaźnikami, powinny być zdefi-
niowane konstruktor kopiujący i QRGTCVQT, gdy wstawianie korzysta z kopii elementu, a nie sa-
mego elementu.
89. 1.7. STANDARDOWA BIBLIOTEKA SZABLONÓW 37
1.7.2. Iteratory
Iterator to obiekt u ywany do wskazania elementu z kontenera. Iteratory to swojego rodzaju
uogólnienie wskaźników; iterator pozwala sięgnąć do danych z kontenera tak, aby umo liwić wy-
konanie na tych danych potrzebnych operacji.
Będąc uogólnieniem wskaźników, iteratory mają taki sam zapis dereferencji; na przykład
90. K
to element wskazywany przez iterator K. Poza tym arytmetyka iteratorów jest podobna do arytmetyki
wskaźników, choć nie wszystkie operacje na iteratorach dozwolone są na wszystkich kontenerach.
Nie istnieją iteratory kontenerów UVCEM, SWGWG ani RTKQTKV[ASWGWG. Operacje na iteratorach
dla klas NKUV, OCR, OWNVKOCR, UGV i OWNVKUGV są następujące (przy czym K i K to iteratory, P jest
liczbą):
K
K K KN
K K
K K K K
91. K
Poza tym dla klas FGSWG i XGEVQT istnieją jeszcze operacje:
K K K K K K K K
K
P K P
K
P K P
K=P?
1.7.3. Algorytmy
Biblioteka STL zawiera ponad 70 ogólnych funkcji nazywanych algorytmami; mogą być one sto-
sowane do kontenerów STL i tablic. Listę wszystkich algorytmów z biblioteki STL zamieszczono
w dodatku B. Algorytmy te implementują operacje często u ywane w typowych programach, takie
jak znalezienie elementu w kontenerze, wstawienie elementu do ciągu elementów, usunięcie ele-
mentu z ciągu, modyfikacja i porównywanie elementów, znajdowanie wartości według ciągu ele-
mentów, sortowania ciągu i tak dalej. Niemal e wszystkie algorytmy biblioteki STL do wskazy-
wania zakresu elementów, na których działają, u ywają iteratorów. Pierwszy iterator wskazuje
pierwszy element zakresu, drugi — element po ostatnim elemencie zakresu. Wobec tego zakłada
się, e zawsze mo na dojść do miejsca wskazywanego przez drugi iterator przez inkrementację
iteratora pierwszego. Oto kilka przykładów.
Wywołanie:
TCPFQOAUJWHHNG
EDGIKP
EGPF
zmieni losowo kolejność elementów w kontenerze E. Wywołanie:
K HKPF
K K G
zwraca iterator wskazujący poło enie elementu G w zakresie od K do K (bez samego K). Wy-
wołanie:
P EQWPVAKH
K K QFF0WO
92. 38 1. PROGRAMOWANIE OBIEKTOWE W C++
zlicza algorytmem EQWPVAKH
elementy z zakresu wskazanego iteratorami K i K, dla których jed-
noparametrowa funkcja u ytkownika QFF0WO
zwraca wartość VTWG.
Algorytmy to funkcje, które stanowią dodatki do metod kontenerów. Jednak niektóre algo-
rytmy zdefiniowano tak e jako metody, w celu uzyskania szybszego ich działania.
1.7.4. Funktory
W C++ operator wywołania funkcji
mo e być traktowany jak ka dy inny operator, w szczegól-
ności mo e być przecią any. Mo e zwracać daną dowolnego typu i mieć dowolną liczbę parame-
trów, ale tak samo jak operator przypisania, mo e być przecią any tylko jako metoda klasy. Ka dy
obiekt zawierający definicję operatora wywołania funkcji nazywany jest funktorem. Funktor to ta-
ki obiekt, który zachowuje się, jakby był funkcją. Kiedy obiekt taki jest wywoływany, jego para-
metry stają się parametrami operatora wywołania funkcji.
Zajmijmy się, dla przykładu, znalezieniem sumy liczb uzyskiwanych z zastosowania funkcji f
do liczb całkowitych z przedziału [n, m]. Implementacja UWO
, pokazana w punkcie 1.4.5, bazo-
wała na u yciu jako parametru funkcji UWO
wskaźnika do funkcji. To samo mo na uzyskać, defi-
niując najpierw klasę z przecią onym operatorem wywołania funkcji:
ENCUU ENCUUH ]
RWDNKE
ENCUUH
]
_
FQWDNG QRGTCVQT
FQWDNG Z ]
TGVWTP
93. Z
_
_
i definiując funkcję:
FQWDNG UWO
ENCUUH H KPV P KPV O ]
FQWDNG TGUWNV
HQT
KPV K P K O K
TGUWNV
H
K
TGVWTP TGUWNV
_
ró niącą się od funkcji UWO
tylko pierwszym parametrem, który teraz jest funktorem, a nie funk-
cją; poza tym wszystko inne jest bez zmian. Nowa funkcja mo e być teraz wywołana następująco:
ENCUUH EH
EQWV UWO
EH GPFN
lub po prostu:
EQWV UWO
ENCUUH
GPFN
94. 1.7. STANDARDOWA BIBLIOTEKA SZABLONÓW 39
Druga metoda wywołania wymaga zdefiniowania konstruktora ENCUUH
(mimo e nie ma on ciała)
tworzącego obiekt typu ENCUUH
w chwili wywołania UWO
.
To samo mo na uzyskać, nie przecią ając operatora wywołania funkcji, jak poni ej:
ENCUU ENCUUH ]
RWDNKE
ENCUUH
]
_
FQWDNG TWP
FQWDNG Z ]
TGVWTP
95. Z
_
_
FQWDNG UWO
ENCUUH H KPV P KPV O ]
FQWDNG TGUWNV
HQT
KPV K P K O K
TGUWNV
HTWP
K
TGVWTP TGUWNV
_
gdzie wywołanie przybierze postać:
EQWV UWO
ENCUUH
GPFN
Biblioteka STL w du ej mierze oparta jest na funktorach. Mechanizm wskaźników na funkcje
nie wystarcza w przypadku operatorów wbudowanych. Jak mo na byłoby przekazać unarny minus
do funkcji UWO
? Składnia UWO
jest niepoprawna. Aby uniknąć opisanego problemu, w bi-
bliotece STL zdefiniowano funktory HWPEVKQPCN wspólne dla wszystkich operatorów C++. Przy-
kładowo, minus unarny zdefiniowano następująco:
VGORNCVGENCUU 6
UVTWEV PGICVG RWDNKE WPCT[AHWPEVKQP66 ]
6 QRGTCVQT
EQPUV 6 Z EQPUV ]
TGVWTP Z
_
_
Teraz, po ponownym zdefiniowaniu funkcji UWO
, staje się ona ju funkcją ogólną:
VGORNCVGENCUU (
FQWDNG UWO
( H KPV P KPV O ]
FQWDNG TGUWNV
HQT
KPV K P K O K
TGUWNV
H
K
TGVWTP TGUWNV
_
Mo na te wywołać funkcję z funktorem PGICVG: UWO
PGICVGFQWDNG
.