Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
34
ROZDZIAŁ1.WPROWADZENIE
Spoglądającnatozagadnieniezinnejstrony,możemyrozważyćinstrukcję
wyjściazawartąwbloku
B4
ipowiązaćużytetuzmienne
a
i
b
zodpowiednimi
deklaracjami.Listaotaczającychblokówwkolejnościrosnącychrozmiarówto
B4
;
B2
;
B1
.Zwróćmyuwagę,że
B3
nieotaczaanalizowanegopunktuprogramu.
Blok
B4
zawieradeklarację
b
,zatemtodotejdeklaracjiodnosisiętoużycie
zmiennej
b
iwypisanawartośćzmiennej
b
to4.Jednakw
B4
niemadeklaracji
zmiennej
a
,zatemkolejnymmiejscemdosprawdzeniajest
B2
.Tenblokrównież
niezawieradeklaracji
a
,zatemprzechodzimydo
B1
.Szczęśliwietuznajdujemy
deklarację
inta=1
,zatemwypisanawartość
a
to1.Gdybynieistniałataka
deklaracja,programbyłbybłędny.
1.G.4.Jawnakontroladostępu
Klasyistrukturywprowadzająnowepojęciezasięgudlaswoichelementów
składowych.Jeśli
p
jestobiektemklasyzawierającejpole(członka)
x
,wówczas
użycie
x
wwyrażeniu
p
:
x
odnosisiędopola
x
wdefinicjiklasy.Analogiczniedo
strukturyblokowej,zasięgdeklaracjipola
x
wklasie
C
rozszerzasięnadowolną
klasępochodnąC!,chybażeC!zawieralokalnądeklaracjętejsamejnazwyx.
Przezużycietakichsłówkluczowych,jak
public,private
i
protected
,
językizorientowaneobiektowotakiejakC++lubJavazapewniająjawnąkontrolę
naddostępemdonazwelementówskładowychklasybazowej.Tesłowakluczowe
wspierająhermetyzacjęprzezograniczaniedostępu.Nazwyprywatnemająwięc
celowonarzuconyzasięg,któryobejmujetylkodeklaracjemetodidefinicje
powiązanezsamąklasąorazklasaminzaprzyjaźnionymi”(terminużywany
wC++).Nazwychronionedostępnedlaklaspochodnych.Nazwypubliczne
dostępnezdowolnegomiejscazwnętrzaklasyispozaniej.
WC++definicjaklasymożezostaćoddzielonaoddefinicjiczęścilubwszyst-
kichjejmetod.Tymsamymdlanazwy
x
powiązanejzklasą
C
możeistnieć
regionkoduleżącypozajejzasięgiem,poktórymnastępujeinnyregion(defini-
cjametody)znajdującysięwjejzasięgu.Wistocieregionywewnątrzzasięgu
ipozanimmogąsięprzeplataćwzajemnie,dopókiwszystkiemetodyniezostaną
zdefiniowane.
1.G.5.Zasięgdynamiczny
Ujmującrzecztechnicznie,dowolnazasadazasięgujestdynamiczna,jeślijest
opartanaczynnikulubczynnikach,któremogąbyćznanejedyniepodczas
działaniaprogramu.Jednakterminzasięgdynamicznyzazwyczajodnosisiędo
następującejzasady:użycienazwy
x
odwołujesiędodeklaracji
x
wostatnio
wywołanejijeszczeniezakończonejprocedurzezawierającejtakądeklarację.
Dynamicznedefiniowaniezasięgutegorodzajuwystępujetylkowszczególnych
sytuacjach.Powinniśmyrozważyćdwaprzykładyzasaddynamicznych:rozwi-
janiemakrwpreprocesorzeCorazrozpoznawaniemetodwprogramowaniu
obiektowym.