c++.pdf
(
5822 KB
)
Pobierz
Microsoft Word - !gotowy.DOC
Cz 1.
Rozdział 1.
Zaczynamy
Wprowadzenie
Witamy w „C++ dla ka
dego.” Ten rozdział pomo
e ci efektywnie programowa
w C++.
Dowiesz si
z niego:
·
dlaczego C++ jest standardowym j
zykiem tworzenia oprogramowania
·
Jakie kroki nale
y wykona
przy opracowaniu programu w C++
·
w jaki sposób wpisa
, skompilowa
i zbudowa
swój pierwszy, działaj
cy
program w C++.
Krótka historia j zyka C++
Od czasu pierwszych komputerów elektronicznych, zbudowanych do wspomagania artyleryjskich
oblicze
trajektorii podczas drugiej wojny
wiatowej, j
zyki programowania przebyły dług
drog
.
ywali najbardziej prymitywnych instrukcjami komputera: j
zyka
1
Na pocz
tku programi
ci u
maszynowego. Te instrukcje były zapisywane jako długie ci
gi zer i jedynek. Dlatego wymy
lono
zapami
tania mnemoniki, takie jak ADD czy MOV.
Z czasem pojawiły si
j
zyki wy
szego poziomu, takie jak BASIC czy COBOL. Te j
zyki
umo
liwiały stosowanie zapisu przypominaj
cego słowa i zdania, np. LET I = 100. Te instrukcje
były tłumaczone przez interpretery i kompilatory na j
zyk maszynowy.
Interpreter tłumaczy odczytywany program, bezpo
rednio zamieniaj
c jego instrukcje (czyli kod)
na działania. Kompilator natomiast tłumaczy kod na pewn
form
po
redni
. Ten proces jest
nazywany kompilacj
; w jej wyniku otrzymujemy plik obiektowy. Nast
pnie kompilator
wywołuje program ł
cz
cy (tzw. linker), który zamienia plik obiektowy na program
wykonywalny.
łatwiejsze w u
yciu dla programistów. Obecnie wi
kszo
programów interpretowanych jest
nazywanych skryptami, za
sam interpreter nosi nazw
Script Engine (w wolnym tłumaczeniu:
motor skryptu).
Niektóre j
zyki, takie jak Visual Basic, nazywaj
interpreter bibliotek
czasu działania. Java
przypadkach taka maszyna wirtualna jest dostarczana przez przegl
dark
WWW (tak
jak Internet
Explorer lub Netscape).
ródłowego (czytelnego dla człowieka) na kod obiektowy (czytelny dla maszyny). Ten dodatkowy
krok jest do
niewygodny, ale dzi
ki niemu kompilowane programy działaj
bardzo szybko, gdy
czasochłonne zadanie przetłumaczenia kodu
ródłowego na j
zyk maszynowy jest wykonywane
tylko raz (podczas kompilacji) i nie jest ju
konieczne podczas działania programu.
Kolejn
zalet
wielu j
zyków kompilowanych (takich jak C++) jest posiadanie tylko programu
wykonywalnego (bez konieczno
ci posiadania interpretera). W przypadku j
zyka
interpretowanego, do uruchomienia programu konieczne jest posiadanie interpretera.
Przez wiele lat głównym celem programistów było uzyskanie niewielkich fragmentów szybko
działaj
cego kodu. Programy musiały by
niewielkie, gdy
pami
była droga; musiały by
tak
e
szybsze, a tak
e gdy spadła cena pami
ci, te priorytety uległy zmianie. Obecnie czas pracy
programisty jest du
o dro
szy ni
koszty eksploatacji wi
kszo
ci komputerów wykorzystywanych
w codziennej pracy. Teraz najwa
niejszy jest dobrze napisany, łatwy w konserwacji kod. Łatwo
konserwacji oznacza,
e gdy zmieni
si
wymagania wobec działania programu, program mo
na
zmieni
i rozbudowa
, bez ponoszenia wi
kszych wydatków.
UWAGA Słowo „program” jest u
ywane w dwóch kontekstach: w odniesieniu do zestawu
si
do całego programu przyjmujacego posta
pliku wykonywalnego. Mo
e to powodowa
znaczne nieporozumienia, w zwi
zku z czym b
dziemy stara
si
dokona
rozró
nienia
pomi
dzy kodem
ródłowym a plikiem wykonywalnym.
2
tzw. asemblery, zamieniaj
ce instrukcje maszynowe na czytelne dla człowieka i łatwiejsze do
Poniewa
interpretery odczytuj
kod programu bezpo
rednio i wykonuj
go na bie
co, s
nazywa swój interpreter
maszyn
wirtualn
(VM, Virtual Machine), jednak w pewnych
Kompilatory wymagaj
wprowadzenia dodatkowego kroku zwi
zanego z kompilowaniem kodu
szybkie, gdy
droga była równie
moc obliczeniowa. Gdy komputery stały si
mniejsze, ta
sze i
poszczególnych instrukcji (kodu
ródłowego), tworzonego przez programist
oraz w odniesieniu
Rozwi zywanie problemów
Problemy, które obecnie rozwi
zuj
programi
ci, s
zupełnie inne ni
problemy rozwi
zywane
dwadzie
cia lat temu. W latach osiemdziesi
tych programy były tworzone w celu zarz
dzania
du
ymi ilo
ciami nie poddanych obróbce danych danych. Zarówno osoby pisz
ce kod, jak i osoby
korzystaj
ce z programów, zajmowały si
komputerami profesjonalnie. Obecnie z komputerów
korzysta du
o osób, wi
kszo
z nich ma niewielkie poj
cie o tym, jak działa program i komputer.
Komputery s
narz
dziem u
ywanym przez ludzi do konkretnej pracy, a nie w celu dodatkowego
zmagania si
z samym komputerem.
Mo
na uwa
a
za ironi
,
e wraz z pojawieniem si
coraz łatwiejszych do opanowania przez ogół
u
ytkowników programów, tworzymy programy, które same w sobie staj
si
coraz bardziej
wymy
lne i skomplikowane. Min
ły ju
czasy wpisywania przez u
ytkownika tajemniczych
polece
po znaku zach
ty, które powodowały wy
wietlenie strumienia nie przetworzonych
danych. Obecne programy korzystaj
z wymy
lnych „przyjaznych interfejsów u
ytkownika”,
posiadaj
cych wiele okien, menu, okien dialogowych oraz innych elementów, które wszyscy
dobrze znamy.
Wraz z rozwojem sieci WWW, komputery wkroczyły w now
er
penetracji rynku; korzysta z nicj
wi
cej osób ni
kiedykolwiek, a ich oczekiwania s
bardzo du
e. Przez kilka lat, jakie upłyn
ły od
czasu pierwszego wydania tej ksi
ki, programy stały si
bardziej zło
one, w zwi
zku z czym
powstało zapotrzebowanie na pomocne w ich opanowaniu techniki programistyczne.
Wraz ze zmian
wymaga
dotycz
cych oprogramowania, zmieniły si
tak
e same j
zyki i
technika pisania programów. Cho
historia tych przemian jest fascynuj
ca, w tej ksi
ce skupimy
si
na transformacjach jakie nast
piły w trakcie przej
cia od programowania proceduralnego do
programowania obiektowego.
Programowanie proceduralne, strukturalne i
obiektowe
Do niedawna program był traktowany jako seria procedur, działaj
cych na danych. Procedura
(funkcja) jest zestawem specyficznych, wykonywanych jedna po drugiej instrukcji. Dane były
całkowicie odseparowane od procedur, za
zadaniem programisty było zapami
tanie, która funkcja
wywołuje inne funkcje, oraz jakie dane były w wyniku tego zmieniane. W celu unikni
cia wielu
potencjalnych bł
dów opracowane zostało programowanie strukturalne.
Główn
ide
programowania strukturalnego jest: „dziel i rz
d
.” Program komputerowy mo
e by
uwa
any za zestaw zada
. Ka
de zadanie, które jest zbyt skomplikowane aby mo
na było je łatwo
opisa
, jest rozbijane na zestaw mniejszych zada
składowych, a
do momentu gdy, wszystkie
zadania s
wystarczaj
co łatwe do zrozumienia.
Na przykład, obliczenie przeci
tnej pensji przeci
tnego pracownika przedsi
biorstwa jest do
zło
onym zadaniem. Mo
na je jednak podzieli
na nast
puj
ce podzadania:
1. Obliczenie, ile zarabiaj
poszczególne osoby.
2. Policzenie ilo
ci pracowników.
3
3. Zsumowanie wszystkich pensji.
4. Podzielenie tej sumy przez ilo
pracowników.
Sumowanie pensji mo
na podzieli
na nast
puj
ce kroki:
1. Odczytanie danych dotycz
cych ka
dego pracownika.
2. Odwołanie si
do danych dotycz
cych pensji.
3. Dodanie pensji do naliczanej sumy.
4. Przej
cie do danych dotycz
cych nast
pnego pracownika.
Z kolei, uzyskanie danych na temat pracownika mo
na rozbi
na:
1. Otwarcie pliku pracowników.
2. Przej
cie do wła
ciwych danych.
3. Odczyt danych z dysku.
Programowanie strukturalne stanowi niezwykle efektywny sposób rozwi
zywania zło
onych
problemów. Jednak pod koniec lat osiemdziesi
tych ograniczenia takiej metody programowania
objawiły si
a
nazbyt jasno.
Po pierwsze, w trakcie tworzenia oprogramowania naturalnym d
eniem jest traktowanie danych
(na przykład danych pracownika) oraz tego, co mo
na z nimi zrobi
(sortowa
, modyfikowa
,
itd.), jako pojedynczej cało
ci. Niestety, w programowaniu strukturalnym struktury danych s
oddzielone od manipuluj
cych nimi funkcji, a w programie strukturalnym nie istnieje naturalny
sposób ich poł
czenia. Programowanie strukturalne jest cz
sto nazywane programowaniem
proceduralnym, gdy
skupia si
na procedurach (a nie na „obiektach”).
Po drugie, programi
ci zmuszeni s
wci
wymy
la
nowe rozwi
zania starych problemów.
Czasem nazywa si
to „wymy
laniem koła”; stanowi to przeciwie
stwo „ponownego
wykorzystania.” Idea ponownego wykorzystania oznacza tworzenie komponentów, posiadaj
cych
znane wcze
niej wła
ciwo
ci, które mog
by
w miar
potrzeb doł
czane do programu. Pomysł
został zapo
yczony z rozwi
za
sprz
towych — gdy in
ynier potrzebuje nowego tranzystora,
zwykle nie musi go wymy
la
— przegl
da du
e pudło z tranzystorami i wybiera ten, który
spełnia dane wymagania, ewentualnie tylko nieco go modyfikuj
c. In
ynier oprogramowania nie
miał podobnej mo
liwo
ci.
Na to zapotrzebowanie próbuje odpowiedzie
programowanie zorientowane obiektowo, dostarcza
ono technik zarz
dzania zło
onymi elementami, umo
liwia ponowne wykorzystanie
komponentów i ł
czy w logiczn
cało
dane oraz manipuluj
ce nimi funkcje.
Zadaniem programowania zorientowanego obiektowo jest modelowanie „obiektów” (tzn. rzeczy),
a nie „danych.” Modelowanymi obiektami mog
by
zarówno elementy na ekranie, takie jak
4
przyciski czy pola list, jak i obiekty
wiata rzeczywistego, np. motocykle, samoloty, koty czy
woda.
Obiekty posiadaj
charakterystyki (szybki, obszerny, czarny, mokry) oraz mo
liwo
ci
(przyspieszanie, latanie, mruczenie, bulgotanie). Zadaniem programowania zorientowanego
obiektowo jest reprezentacja tych obiektów w j
zyku programowania.
C++ i programowanie zorientowane obiektowo
J
zyk C++ wspiera programowanie zorientowane obiektowo, obejmuje swym działaniem trzy
podstawy takiego stylu programowania: kapsułkowanie, dziedziczenie oraz polimorfizm.
Kapsułkowanie
Gdy in
ynier chce doda
do tworzonego urz
dzenia rezystor, zwykle nie buduje go samodzielnie
od pocz
tku — podchodzi do pojemnika z rezystorami, sprawdza kolorowe paski, oznaczaj
ce
wła
ciwo
ci, i wybiera potrzebny element. Z punktu widzenia in
yniera rezystor jest „czarn
skrzynk
” — niewa
ny jest sposób w jaki działa (o ile tylko zachowuje si
zgodnie ze swoj
specyfikacj
). In
ynier nie musi zastanawia
si
nad wn
trzem rezystora, aby u
y
go w swoim
projekcie.
Wła
ciwo
samozawierania si
jest nazywana kapsułkowaniem. W kapsułkowaniu mo
emy
zakłada
opcj
ukrywania danych. Ukrywanie danych jest mo
liwo
ci
, dzi
ki której obiekt mo
e
by
u
ywany przez osob
nie posiadaj
c
wiedzy o tym, w jaki sposób działa. Skoro mo
emy
korzysta
z lodówki bez znajomo
ci zasad działania kompresora, mo
emy te
u
y
dobrze
zaprojektowanego obiektu nie znaj
c jego wewn
trznych danych składowych.
Sytuacja wygl
da podobnie, gdy z rezystora korzysta in
ynier: nie musi wiedzie
niczego o jego
wewn
trznym stanie. Wszystkie wła
ciwo
ci rezystora s
zakapsułkowane w obiekcie rezystora
(nie s
rozrzucone po całym układzie elektronicznym). Do efektywnego korzystania z rezystora
nie jest potrzebna wiedza o sposobie jego działania. Mo
na powiedzie
,
e jego dane s
ukryte
wewn
trz obudowy.
C++ wspiera kapsułkowanie poprzez tworzenie typów zdefiniowanych przez u
ytkownika,
zwanych klasami. O tym, jak tworzy
klasy, dowiesz si
z rozdziału szóstego, „Programowanie
zorientowane obiektowo.” Po stworzeniu, dobrze zdefiniowana klasa działa jako spójna cało
—
jest u
ywana jako jednostka. Wewn
trzne działanie klasy powinno by
ukryte. U
ytkownicy
dobrze zdefiniowanych klas nie musz
wiedzie
, w jaki sposób one działaj
; musz
jedynie
wiedzie
, jak z nich korzysta
.
Dziedziczenie i ponowne wykorzystanie
Gdy in
ynierowie z Acme Motors chc
zbudowa
nowy samochód, maj
do wyboru dwie
mo
liwo
ci: mog
zacz
od pocz
tku lub zmodyfikowa
istniej
cy ju
model. By
mo
e ich
model, Gwiazda, jest prawie doskonały, ale chc
do niego doda
turbodoładowanie i
sze
ciobiegow
skrzyni
biegów. Główny in
ynier nie chciałby zaczyna
od pocz
tku, zamiast
tego wolałby zbudowa
nowy, podobny model, z tym dodatkowym wyposa
eniem. Nowy model
5
Plik z chomika:
mirek99-47
Inne pliki z tego folderu:
kurs html - helion.rar
(1581 KB)
Praktyczny_kurs_Java__.rar
(51387 KB)
Kurs flash'a(1).zip
(431 KB)
Kurs flash'a.zip
(431 KB)
Samodzielny montaż komputera.rar
(82598 KB)
Inne foldery tego chomika:
Zgłoś jeśli
naruszono regulamin