Was ist eine Klasseninvariante?

In objektorientierter Computerprogrammierung und -design ist eine Klasseninvariante eine Reihe von Regeln, mit denen definiert werden kann, ob eine Objektinstanz in einem gültigen Zustand vorhanden ist. Aus Designperspektive ist eine Klasse -Invariante eine Reihe von Grenzen, zwischen denen die Daten innerhalb eines Objekts in einem ordnungsgemäßen, funktionalen Zustand berücksichtigt werden müssen. Eine Klasseninvariante kann in Designdokumentation oder Quellcode -Kommentaren definiert werden oder in einigen Programmiersprachen direkt in umsetzbarer Computercode implementiert werden. Ein Programm, das codierte Invarianten und Behauptungen verwendet, kann dazu führen, dass das Programm die Ausführung einstellt oder verschiedene Fehler einstellt, wenn die invarianten Bedingungen nicht erfüllt sind. Im Gegensatz zur Standardfehlerüberprüfung werden im Allgemeinen nur die Klasseninvarianten verwendetfür eine Klasse. Eine Behauptung, wiederum in einfachen Worten, ist eine Aussage, die einen Teil des Zustands der Klasse überprüft und bewerten muss, damit die Programmausführung fortgesetzt wird. Ein Beispiel für eine Behauptung ist eine Aussage, die sicherstellt

In vielen Fällen ähnelt die Verwendung einer Klasse -Invariante stark der Standardfehlerüberprüfung, in der Variablen gemessen werden, um sicherzustellen, dass sie innerhalb von Gebrauchsgrenzen liegen oder nicht null sind. Der Unterschied zwischen der Verwendung von Klasseninvarianten und der Standardfehlerprüfung besteht jedoch darin, dass Invarianten und Behauptungen überwiegend verwendet werden, um Fehler zu erfassen, die nur auftreten sollten, es sei denn, es gibt einen intrinsischen Fehler im Code. Ein weiterer Unterschied ist thBei der Standardfehlerüberprüfung beinhaltet die Wiederherstellung und Änderungen des Programmsteuerungsflusss tendenziell, während das Ergebnis eines invarianten Fehlers die Programmabschluss sein sollte. Der Grund, warum die meisten Programme enden, wenn eine Klasse-Invariante-Prüfung fehlschlägt

Eine der Eigenschaften einer Klasseninvariante in objektorientierten Programmiersprachen, in denen sie implizit definiert sind, ist, dass der Invariante ein Mechanismus ist, der von Unterklassen geerbt wird. Dies verhindert, dass eine Unterklasse alle in der Elternklasse durchgeführten invarianten Überprüfungen überschreibt. Letztendlich bedeutet dies, dass eine Unterklasse den von der Superklasse festgelegten Entwurfsvertrag nicht brechen kann, was unvorhersehbare Ergebnisse oder schwer zu findende Programmfehler verursachen kann.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?