Hvad er en klasse invariant?

I objektorienteret computerprogrammering og -design er en klasse invariant et sæt regler, der kan bruges til at definere, om en objektforekomst findes i en gyldig tilstand. Fra et designperspektiv er en klasseinvariant et sæt grænser, mellem hvilke dataene inden for et objekt skal falde for at blive betragtet som en korrekt, funktionel tilstand. En klasse invariant kan defineres i designdokumentation eller kommentarer til kildekoder eller kan i nogle programmeringssprog implementeres direkte i handlingsbar computerkode. Et program, der bruger kodede invarianter og påstande, kan få programmet til at ophøre med udførelsen eller kaste forskellige fejl, når de invariante betingelser ikke er opfyldt. I modsætning til almindelig fejlkontrol bruges klassevirksomheder generelt kun med det formål at sikre, at den indre implementering af en klasse fungerer, og de er normalt ikke opført i offentlig dokumentation eller programmeringsgrænseflader.

Fra et meget grundlæggende niveau er en klasse invariant i det væsentlige en samling af påstande for en klasse. En påstand, igen i enkle ord, er en erklæring, der kontrollerer en del af klassens tilstand og skal evaluere til sandt for, at programudførelsen kan fortsætte. Et eksempel på en påstand er en erklæring, der sikrer, at et givet heltal altid er mellem 1 og 10. Når der anvendes en klasseinvariant, vurderes påstande for alle relevante dele af de data, som objektet opbevarer, og validerer i det væsentlige, at alle dataene i objekt er inden for de definerede intervaller.

I mange tilfælde ligner brugen af ​​en klasse invariant stærkt standardfejlkontrol, hvor variabler måles for at sikre, at de er inden for anvendelige grænser eller ikke er nul. Forskellen mellem at bruge klasseanvender og standardfejlingskontrol er imidlertid, at invarianter og påstande overvejende bruges til at indfange fejl, der ikke bør forekomme, medmindre der er en iboende fejl i koden. En anden forskel er, at standardfejlkontrol har en tendens til at involvere gendannelse og ændringer i programstyrestrømmen, mens resultatet af en ufravigende fiasko bør være programafslutning. Årsagen til at de fleste programmer afsluttes, når en klassevarianskontrol mislykkes, er fordi objektet er i en kompromitteret tilstand og ikke er i stand til fra et designsyn at opfylde sine forudsætninger og postbetingelser, der er nødvendige for at overholde sin designkontrakt.

En af egenskaberne ved en klasses invariant i objektorienterede programmeringssprog, hvori de implicit er defineret, er, at invarianten er en mekanisme, der er arvet af enhver underklasse. Dette forhindrer en underklasse i at tilsidesætte eventuelle ufravigelige kontroller, der udføres i forældreklassen. I sidste ende betyder dette, at en underklasse ikke er i stand til at bryde designkontrakten, der er oprettet af superklassen, hvilket kan forårsage uforudsigelige resultater eller vanskelige at finde programfejl.

ANDRE SPROG

Hjalp denne artikel dig? tak for tilbagemeldingen tak for tilbagemeldingen

Hvordan kan vi hjælpe? Hvordan kan vi hjælpe?