< previous page page_363 next page >

Page 363
LISTING 21.4 continued
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
131:     ASSERT(Invariants());
132:  }
133:
134:
135:  bool String::Invariants() const
136:  {
137:  #ifdef SHOW_INVARIANTS
138:     cout <<  String OK ;
139:  #endif
140:      return ( (itsLen && itsString) ¦¦ (!itsLen && !itsString) );
141:  }
142:
143:  class Animal
144:  {
145:  public:
146:     Animal():itsAge(1),itsName(John Q. Animal)
147:     {ASSERT(Invariants());}
148:     Animal(int, const String&);
149:     ~Animal(){}
150:     int GetAge() { ASSERT(Invariants()); return itsAge;}
151:     void SetAge(int Age)
152:     {
153:        ASSERT(Invariants());
154:        itsAge = Age;
155:        ASSERT(Invariants());
156:     }
157:     String& GetName() { ASSERT(Invariants()); return itsName; }
158:     void SetName(const String& name)
159:     {
160:        ASSERT(Invariants());
161:        itsName = name;
162:        ASSERT(Invariants());
163:     }
164:     bool Invariants();
165:  private:
166:     int itsAge;
167:     String itsName;
168:  };
169:
170:  Animal::Animal(int age, const String& name):
171:  itsAge(age),
172:  itsName(name)
173:  {
174:     ASSERT(Invariants());
175:  }
176:
177:  bool Animal::Invariants()
178:  {
d5ef64f4d3250b96ba5c07ca5bbc2f56.gif
continues

 
< previous page page_363 next page >

If you like this book, buy it!