Hva er en klasse invariant?

I objektorientert dataprogrammering og design er en klasse invariant et sett med regler som kan brukes til å definere om et objektforekomst eksisterer i en gyldig tilstand. Fra et designperspektiv er en klasse Invariant et sett med grenser mellom hvilke dataene i et objekt må falle for å bli vurdert i en riktig funksjonell tilstand. En klasseinvariant kan defineres i designdokumentasjon eller kildekode -kommentarer, eller på noen programmeringsspråk kan implementeres direkte i handlingsdyktige datakode. Et program som bruker kodede invarianter og påstander kan føre til at programmet slutter å utføre eller kaste forskjellige feil når de ufravikelige forholdene ikke er oppfylt. I motsetning til standard feilkontroll, brukes klasseinvarianter vanligvis bare med det formål å sikre at den indre implementeringen av en klasse fungerer, og de er vanligvis ikke oppført i offentlig dokumentasjon eller programmeringsgrensesnitt.

fra et veldig grunnleggende nivå, en klasse invariant er i det vesentlige en samling av påstanderfor en klasse. En påstand, igjen på enkle termer, er en uttalelse som sjekker en del av klassens tilstand og må evaluere til True for at programutførelsen skal fortsette. Et eksempel på en påstand er en uttalelse som sikrer at et gitt heltall alltid er mellom 1 og 10. Når en klasse invariant brukes, blir påstander evaluert for alle relevante deler av dataene som er holdt av objektet, i hovedsak validerer at alle dataene i objektet er innenfor de definerte områdene.

I mange tilfeller ligner det å bruke en klasse invariant sterkt standard feilkontroll, der variabler måles for å sikre at de er innenfor brukbare grenser eller ikke er null. Forskjellen mellom å bruke klasseinvarianter og standard feilkontroll, er imidlertid at invarianter og påstander hovedsakelig brukes til å fange opp feil som ikke bør oppstå med mindre det er en egen feil i koden. En annen forskjell er thVed standard feilkontroll har en tendens til å involvere utvinning og endringer i programkontrollstrømmen, mens resultatet av en ufravikelig feil bør være programavslutning. Årsaken til at de fleste programmene avsluttes når en klasse invariant sjekk mislykkes, er fordi objektet er i en kompromittert tilstand og ikke er i stand til å utføre en designvisning for å oppfylle sine forutsetninger og postforsikringer som er nødvendige for å overholde designkontrakten.

En av egenskapene til en klasse invariant i objektorienterte programmeringsspråk der de implisitt er definert, er at invariant er en mekanisme som er arvet av alle underklasser. Dette forhindrer en underklasse i å overstyre eventuelle ufravikelige sjekker som utføres i foreldreklassen. Til syvende og sist betyr dette at en underklasse ikke er i stand til å bryte designkontrakten etablert av superklassen, noe som kan forårsake uforutsigbare resultater eller vanskelig å finne programfeil.

ANDRE SPRÅK