Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
10
JęzykC++.StandardISOwpraktyce
Wrezultaciedużeprogramytworzonewedługwzorcaproceduralnegomożnadzielićna
funkcjeitowarzysząceim,aledefiniowaneoddzielniestrukturydanych.Wdobrzezaprojekto-
wanymprogramieproceduralnymkomunikacjamiędzyfunkcjamii(lub)proceduramipowinna
sięodbywaćgłówniezapośrednictwemwartościiadresówparametróworazwartościzwraca-
nychwzmiennychlokalnych.
Ograniczaniestosowaniawtymceluzmiennychglobalnychpozwalauniknąćniepożąda-
nychaktywnychefektówubocznych,którenajczęściejpolegająnaniechcianymmodyfikowa-
niuwartościzmiennychglobalnychprzezwywołanąfunkcję.Oczywiścienieoznaczatoelimi-
nacjipasywnychefektówubocznych,któreniepowodujązmianwśrodowiskuzewnętrznym
wstosunkudodanejfunkcjiczyprocedury.Takimipożądanymiefektamiubocznymimogąbyć
np.wydrukiwartościzmiennychglobalnych.
$Uwaga!WjęzykachCiC++procedurąnazywasięniekiedyfunkcję,któraniezwraca
żadnychwartości.Oczywiścietakafunkcjapowinnawykonywaćjakieśsensowneczyn-
ności,np.operacjenazmiennychlokalnych,wyświetlaniewynikówtychoperacji,awogól-
nościprodukowaćwymienionepasywneefektyuboczne.
Strukturalizowaneprogramyproceduralnesprawdzająsiębardzodobrzewzadaniach
numerycznychiniektórychalgorytmachprzetwarzaniainformacjinienumerycznej.
1.2.
Paradygmatobiektowy
JęzykC++należydogrupyjęzykówobiektowych.Ponieważjednakmożnagotraktować
jakorozszerzeniejęzykaC(opisanegowdokumentachISO/IEC9899:1990(ISO/IEC
9899:1999),ProgrammingLanguagesC),jestonjęzykiemhybrydowym.Możnawnim
tworzyćzarównoprogramyproceduralne,jakiprogramyobiektowe.
Głównewłasnościjęzyków,programówisystemówobiektowych,składającesięnapa−
radygmat(wzorzec)obiektowy,następujące:
Klasylubabstrakcyjnetypydanych(ADT)równoważneklasom.
Obiektywystąpieniaklas.Klasamożemiećjednobądźwielewystąpień.
Hermetyzacja:zamknięciewjednym„opakowaniu”(tj.wdefinicjiklasy)danych
ioperacji.
Ukrywanieinformacji.Klasapowinnamiećpublicznyinterfejsiprywatnelubchronione
dane.
Dziedziczenieinaczejhierarchiaklas/typów.Pojedynczeimnogie.
Polimorfizmwiązaniepóźne(dynamiczne)wskaźników/odnośnikówdoobiektówklas
pochodnychzewskaźnikami/odnośnikamidoklasybazowej.Dziękitemumożnawywo-
ływaćoperacjewirtualizowane.
WjęzykuC++budowęklasymożnazilustrowaćrysunkiem1.2.
Zrysunkuwynika,żewidoczneidostępnepowinnybyćjedyniedanepubliczneorazpu-
blicznyinterfejsklasyijejobiektów.Przytymoperacjeklasydostępnebezpośredniona
klasie,aoperacjewystąpieniadostępnetylkonajejobiektach.