Dedovanje

Koncept, ki ga najpogosteje povezujemo z objektno usmerjenim programiranjem je dedovanje (ang. inheritance). Dedovanje nam omogoča, definiramo nove razrede, ki so spremenjene različice obstoječih razredov. Koncept imenujemo dedovanje tudi zato, ker novi razred podeduje vse metode obstoječega razreda. Če še razširimo prispodobo: obstoječi razred imenujemo starševski razred ali nadrejeni razred (ang. parent class), novi razred pa imenujemo otroški razred ali podrejeni razred (ang. child class).

Dedovanje predstavlja zelo močen oziroma uporaben koncept. Nekatere programe, ki bi bili brez dedovanja zelo zapleteni, lahko ravno zaradi dedovanja napišemo zelo jedrnato in preprosto. Prav tako nam dedovanje olajša vnovično uporabo kode, ker lahko s pomočjo podrejenih razredov prilagodimo obnašanje nadrejenih razredov, ne da bi jih spreminjali. V nekaterih primerih struktura dedovanje odraža naravno strukturo problema, zaradi česar je program lažje razumeti.

Po drugi strani pa lahko dedovanje otežuje branje programov. Ko kličemo metodo včasih ni jasno, kje je definirana. Ustrezna koda je lahko razpršena med več modulov oziroma razredov. Prav tako je mogoče veliko stvari, za katere uporabimo dedovanje, lepše ali bolj elegantno rešiti brez dedovanja. Če naravna struktura problema ne pričakuje oziroma podpira dedovanja, potem lahko rešitev z uporabo dedovanja naredi več škode, kot koristi.


V tem poglavju bomo prikazali uporabo dedovanja na primeru igranja igre s kartami, imenovane Black Jack oziroma Enaindvajset (21). Eden izmed ciljev bo tudi napisati takšno kodo, ki jo bo mogoče ponovno uporabiti, pri programiranju oziroma implementaciji drugih iger s kartami.