Skip to main content

Τι είναι μια κατηγορία αμετάβλητη;

Στο αντικειμενικό προγραμματισμό και σχεδιασμό υπολογιστών, μια κατηγορία αμετάβλητη είναι ένα σύνολο κανόνων που μπορούν να χρησιμοποιηθούν για να καθορίσουν εάν υπάρχει μια εμφάνιση αντικειμένου σε έγκυρη κατάσταση.Από την άποψη του σχεδιασμού, μια κατηγορία αμετάβλητη είναι ένα σύνολο ορίων μεταξύ των οποίων τα δεδομένα μέσα σε ένα αντικείμενο πρέπει να πέφτουν σε μια σωστή, λειτουργική κατάσταση.Μια κατηγορία αμετάβλητη μπορεί να οριστεί σε τεκμηρίωση σχεδιασμού ή σχόλια πηγαίου κώδικα ή, σε ορισμένες γλώσσες προγραμματισμού, μπορεί να εφαρμοστεί απευθείας στον κωδικό υπολογιστή που μπορεί να ενεργοποιηθεί.Ένα πρόγραμμα που χρησιμοποιεί κωδικοποιημένες αναταραχές και ισχυρισμούς μπορεί να προκαλέσει την παύση του προγράμματος ή να ρίξει διάφορα σφάλματα όταν δεν πληρούνται οι αμετάβλητες συνθήκες.Σε αντίθεση με τον τυπικό έλεγχο σφαλμάτων, οι κατηγορηματικές invariants χρησιμοποιούνται γενικά μόνο με σκοπό την εξασφάλιση της λειτουργίας της εσωτερικής εφαρμογής μιας κλάσης και συνήθως δεν αναφέρονται σε δημόσιες τεκμηρίωση ή διεπαφές προγραμματισμού.Ουσιαστικά είναι μια συλλογή από ισχυρισμούς για μια τάξη.Ένας ισχυρισμός, και πάλι με απλούς όρους, είναι μια δήλωση που ελέγχει κάποιο μέρος της κατάστασης της τάξης και πρέπει να αξιολογηθεί για να συνεχιστεί η εκτέλεση του προγράμματος.Ένα παράδειγμα ισχυρισμού είναι μια δήλωση που εξασφαλίζει ότι ένας δεδομένος ακέραιος είναι πάντα μεταξύ 1 και 10. Όταν χρησιμοποιείται μια κατηγορία αμετάβλητη, αξιολογούνται ισχυρισμοί για όλα τα σχετικά τμήματα των δεδομένων που διατηρούνται από το αντικείμενο, επικυρώντας ουσιαστικά ότι όλα τα δεδομένα στοΤο αντικείμενο βρίσκονται εντός των καθορισμένων περιοχών. Σε πολλές περιπτώσεις, χρησιμοποιώντας μια κατηγορία αμετάβλητη μοιάζει πολύ με τον τυπικό έλεγχο σφαλμάτων, στον οποίο μετριούνται οι μεταβλητές για να εξασφαλίσουν ότι βρίσκονται εντός χρησιμοποιήσιμων ορίων ή δεν είναι μηδενικές.Ωστόσο, η διαφορά μεταξύ της χρήσης των κατηγορουμένων και του τυπικού ελέγχου σφαλμάτων είναι ότι οι αμετάβλητες και οι ισχυρισμοί χρησιμοποιούνται κυρίως για τη λήψη σφαλμάτων που δεν πρέπει να εμφανιστούν εκτός εάν υπάρχει εγγενές ελάττωμα στον κώδικα.Μια άλλη διαφορά είναι ότι ο τυπικός έλεγχος σφάλματος τείνει να περιλαμβάνει ανάκτηση και αλλαγές στη ροή ελέγχου του προγράμματος, ενώ το αποτέλεσμα μιας αμετάβλητης αποτυχίας πρέπει να είναι ο τερματισμός του προγράμματος.Ο λόγος για τον οποίο τα περισσότερα προγράμματα τερματίζονται όταν αποτυγχάνει ένας αμετάβλητος έλεγχος είναι επειδή το αντικείμενο βρίσκεται σε συμβιβασμένη κατάσταση και δεν είναι σε θέση, από μια άποψη σχεδιασμού, για να εκπληρώσει τις προϋποθέσεις και τις μετα-συνθήκες που είναι απαραίτητες για να τηρήσουν το συμβόλαιο σχεδιασμού του.Οι ιδιότητες μιας κατηγορίας αμετάβλητων σε αντικειμενικές γλώσσες προγραμματισμού στις οποίες ορίζονται σιωπηρά είναι ότι ο αμετάβλητος είναι ένας μηχανισμός που κληρονομείται από οποιεσδήποτε υποκατηγορίες.Αυτό εμποδίζει μια υποκατηγορία από την υπέρβαση τυχόν αμετάβλητων ελέγχων που εκτελούνται στη γονική τάξη.Τελικά, αυτό σημαίνει ότι μια υποκατηγορία δεν είναι σε θέση να σπάσει το συμβόλαιο σχεδιασμού που καθιερώθηκε από την υπερκλάση, η οποία θα μπορούσε να προκαλέσει απρόβλεπτα αποτελέσματα ή σφάλματα προγράμματος που είναι δύσκολο να διαπιστωθεί.