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),ProgrammingLanguages–C),jestonjęzykiemhybrydowym.Możnawnim
tworzyćzarównoprogramyproceduralne,jakiprogramyobiektowe.
Głównewłasnościjęzyków,programówisystemówobiektowych,składającesięnapa−
radygmat(wzorzec)obiektowy,sąnastępujące:
•
Klasylubabstrakcyjnetypydanych(ADT)równoważneklasom.
•
Obiekty–wystąpieniaklas.Klasamożemiećjednobądźwielewystąpień.
•
Hermetyzacja:zamknięciewjednym„opakowaniu”(tj.wdefinicjiklasy)danych
ioperacji.
•
Ukrywanieinformacji.Klasapowinnamiećpublicznyinterfejsiprywatnelubchronione
dane.
•
Dziedziczenie–inaczejhierarchiaklas/typów.Pojedynczeimnogie.
•
Polimorfizm–wią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.Przytymoperacjeklasysądostępnebezpośredniona
klasie,aoperacjewystąpieniasądostępnetylkonajejobiektach.