Osnovni koncepti objektno usmerjenega programiranja

Večobličnost ali polimorfizem

Večobličnost v objektno usmerjenem programiranju omogoča enotno obravnavo razredov v hierarhiji. Zato je treba klicno kodo napisati samo za obravnavo objektov iz korena hierarhije in vsak objekt, ki bo primerek katerega koli podrejenega razreda v hierarhiji, bo obravnavan na enak način.

Ker imajo izpeljani objekti isti vmesnik kot njihovi starši, lahko klicna koda pokliče katero koli funkcijo v vmesniku tega razreda. V času izvajanja bo program poklical ustrezno metodo glede na vrsto posredovanega objekta, kar lahko povzroči različno vedenje.

Primer

Recimo, da imamo razred z imenom Žival ter dva podrejena razreda Mačka in Pes. Če ima razred Žival metodo za oglašanje, imenovano glas(), potem lahko metodo glas(), ki jo podedujeta podrazreda Mačka in Pes, preoblikujemo tako, da vrne »mijav« oziroma »hov«.

Nato lahko napišemo drugo funkcijo, ki kot parameter sprejme kateri koli objekt Žival in pokliče njegovo metodo glas(). Torej bo oglašanje različno: bodisi »mijavkanje« ali »lajanje«, odvisno od vrste živalskega objekta, ki smo ga dejansko posredovali funkciji.

Dedovanje

Objektno usmerjeni jeziki, ki podpirajo razrede, skoraj vedno podpirajo pojem »dedovanja«. Razrede lahko organiziramo v hierarhije, kjer ima lahko razred enega ali več nadrejenih ali podrejenih razredov. Če ima razred nadrejeni razred, pravimo, da je izpeljan ali podedovan iz nadrejenega razreda in predstavlja razmerje tipa »je« (ang. is-a). To pomeni, da podrejeni razred »je« tipa nadrejenega razreda.

Če torej razred deduje od drugega razreda, samodejno pridobi večino enake funkcionalnosti in lastnosti od tega razreda in ga lahko razširimo tako, da vsebuje ločeno kodo in podatke. Podrejeni razred bo torej dedoval lastnosti nadrejenega razreda in zelo verjetno spremenil ali razširil njegovo vedenje. Lepa značilnost dedovanja je, da pogosto vodi do dobre ponovne uporabe kode, saj metod nadrejenega razreda ni treba ponovno definirati v katerem koli od njegovih podrejenih razredov.

Primer

Na primer, v živalskem svetu lahko žuželko predstavlja nadrazred Žuželka. Vse žuželke imajo podobne lastnosti, na primer šest nog in eksoskelet. Podrazrede lahko definiramo za pikapolonice in mravlje. Ker izhajajo iz razreda Žuželka, samodejno dedujejo vse lastnosti in obnašanje (oziroma metode) žuželk.

Če se na primer mravlje obnašajo drugače, kot druge žuželke, moramo v razredu Mravlja samo spremeniti ustrezno metodo. Če pa mravlje počnejo nekaj, česar ne počnejo druge žuželke, moramo razredu Mravlja v tem primeru dodati novo metodo.