Hva er en metaklass?
En metaklass brukes i objektorientert programmering (OOP) og blir vanligvis tenkt som en klasseklasse. Som mest metainformasjon, fungerer metaklassen bak programmet og blir aldri sett av brukeren. En metaklass er i stand til å endre informasjon fra klassen og kan kobles til en eller mange klasser, avhengig av kodestrukturen. Ikke alle OOP-strukturer inkluderer metaobject-koding, og noen tilbyr kanskje bare metaobject-koding i avanserte formater.
I nesten alle typer koding er metakoding en kode eller kodelinje som fungerer på programmet, men det blir ikke sett åpenlyst av brukeren. Metainformasjon er over koden og er i stand til å endre informasjonsstykker eller legge til programmet uten å forstyrre programmet direkte. I OOP brukes en metaklass for å ta en klasse og endre oppførselen.
En klasse i OOP er et sett forekomster eller gjenstander plassert under ett paraplybegrep. For eksempel kan programmereren opprette en klasse som heter "House." Under dette lager programmereren objekter som modifiserer eller reproduserer aspekter som vanligvis finnes i et hus, for eksempel rom, møbler og mennesker. Mens en klasse er i stand til å endre disse objektene, vil en metaklass arbeide med å endre klassen i seg selv.
Klasser i OOP er typisk dynamiske og kan gjennomgå mange endringer før programmet er ferdig. Metaclasses er statiske opplysninger som sjelden endres med mindre programmereren finner at metainformasjonen ikke fungerer som den skal. Dette forhindrer at metaclasses ved et uhell arbeider med flyktige data og sikrer også at atferdsendringene ikke kan manipuleres.
Avhengig av behovet til programmereren, vil en metaklass enten være koblet til en enkelt klasse eller til mange klasser samtidig. Programmerere kobler ofte metaklassen til en klasse og legger til unike regler eller atferd i metaobject-kodingen. Hvis det er flere klasser som alle kan gjennomgå den samme atferdsendringen, vil metainformasjonen bli brukt på flere forskjellige klasser. Dette er mulig fordi metodisk koding er tittelen og lett kan kalles når det er nødvendig.
Selv om dette er en vanlig forekomst i mellomliggende til avanserte programmer, tilbyr noen OOP-strukturer ikke metaclasses. Dette er enten fordi det ikke er behov for dem, eller det er andre objekter eller klasser som har lignende funksjoner, men kalles noe annet. Noen kodingsstrukturer kan også tilby bare komplekse og avanserte metaclasses, der andre har enklere å bruke for mellomkodere.