// An example of the fragile base-class problem, adapted from Effective Java by
// Joshua Bloch, Addison-Wesley, 2001.
//
// CS 310 - Object-Oriented Programming in Java
// Spring 2008.
class Set {
private Object elements [] = new Object [10];
private int next = 0;
void add(Object o) {
assert next < elements.length;
elements[next++] = o;
}
void add(Set set) {
for (Object e: set.elements)
add(e);
}
int size() {
return next;
}
}
class CountingSet
extends Set {
private int count = 0;
void add(Object o) {
count++;
super.add(o);
}
void add(Set set) {
count += set.size();
super.add(set);
}
int getCount() {
return count;
}
}
class test {
public static void
main(String args[]) {
CountingSet cs1 = new CountingSet();
cs1.add("Moe");
cs1.add("Manny");
cs1.add("Jack");
CountingSet cs2 = new CountingSet();
cs2.add(cs1);
System.out.println("cs2 count is " + cs2.getCount());
}
}
syntax highlighted by Code2HTML, v. 0.9.1