简体   繁体   中英

Simple explaination of representation invariant

The representation invariant defines which values of the data attributes correspond to valid representations of class instances. The representation invariant for IntSet is that vals contains no duplicates. The implementation of __init__ is responsible for establishing the invariant (which holds on the empty list), and the other methods are responsible for maintaining that invariant.

class IntSet(object):
    def __init__(self):
        """Create an empty set of integers"""
        self.vals = []
    def insert(self, e):
        """Assumes e is an integer and inserts e into self"""
        if not e in self.vals:
        self.vals.append(e)
    def member(self, e):
        """Assumes e is an integer
        Returns True if e is in self, and False otherwise"""
        return e in self.vals
    def remove(self, e):
        """Assumes e is an integer and removes e from self
        Raises ValueError if e is not in self"""
        try:
            self.vals.remove(e)
        except:
            raise ValueError(str(e) + ' not found')
    def getMembers(self):
        """Returns a list containing the elements of self.
        Nothing can be assumed about the order of the elements"""
        return self.vals[:]

I really have no I idea what does above explanation of representation invariant means. Is there simpler explanation of it? "The representation invariant for IntSet is that vals contains no duplicates." does that mean it is the vals in that def __init__(self) one. I am really confused. Thanks for anyone who helped!

Representation Invariants are checked to see if an instance of a class is in a valid state. In this case, the invariant is to keep the vals list have no duplicates. This is a condition that has to be satisfied by every method which touches the object.

You can use representation invariant to check if the instance of the class is in valid state or not.

https://www.teach.cs.toronto.edu/~csc110y/fall/notes/11-simulation/02-modelling-classes.html#:~:text=Don%E2%80%99t%20forget%20about%20representation%20invariants !

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM