Kaj je metarazred?

Metarazred se uporablja v objektno usmerjenem programiranju (OOP) in se običajno obravnava kot razred razredov. Kot večina meta informacij tudi metarazred deluje za programom in ga uporabnik nikoli ne vidi. Metarazred lahko spreminja informacije iz razreda in je lahko povezan z enim ali več razredi, odvisno od strukture kodiranja. Vse strukture OOP ne vključujejo kodiranja metaobjektov, nekatere pa lahko ponujajo samo kodiranje metaobjektov v naprednih oblikah.

V skoraj vseh vrstah kodiranja je meta kodiranje oznaka ali vrstica kode, ki deluje v programu, vendar je uporabnik ne vidi odkrito. Meta informacije so nad kodo in lahko spreminjajo dele informacij ali dodajajo v program, ne da bi neposredno posegale v program. V OOP se metarazred uporablja za prevzem razreda in spreminjanje njegovega obnašanja.

Razred v OOP je nabor primerkov ali predmetov, ki so postavljeni pod en krovni izraz. Programer lahko na primer ustvari razred, imenovan »House«. V skladu s tem programer ustvarja predmete, ki spreminjajo ali reproducirajo vidike, ki jih običajno najdemo v hiši, kot so sobe, pohištvo in ljudje. Medtem ko je razred sposoben spreminjati te predmete, bi metarazred delal na spreminjanju samega razreda.

Razredi v OOP so običajno dinamični in so lahko podvrženi številnim spremembam, preden je program končan. Metarazredi so statični deli informacij, ki se redko spreminjajo, razen če programer ugotovi, da meta informacije ne delujejo pravilno. To preprečuje, da bi metarazredi nenamerno delali z nestanovitnimi podatki, in tudi zagotavlja, da modifikatorjev vedenja ni mogoče manipulirati.

Odvisno od potreb programerja bo metarazred povezan z enim razredom ali z več razredi hkrati. Programerji najpogosteje povežejo metarazred z enim razredom in dodajo edinstvena pravila ali vedenja v kodiranje metaobjektov. Če obstaja več razredov, ki lahko vsi podvržejo enako spremembo vedenja, bodo meta informacije uporabljene za več različnih razredov. To je mogoče, ker je kodiranje metaobjektov naslovljeno in ga je mogoče enostavno priklicati, kadar koli je to potrebno.

Čeprav je to pogost pojav v srednjih do naprednih programih, nekatere strukture OOP ne ponujajo metarazredov. To je bodisi zato, ker niso potrebni ali pa obstajajo drugi predmeti ali razredi, ki imajo podobne funkcije, vendar se imenujejo drugače. Nekatere kodirne strukture lahko ponujajo tudi samo zapletene in napredne metarazrede, medtem ko imajo druge enostavnejše za uporabo vmesnih kodirnikov.