Perform an Object-oriented analysis of the problem. Consider how our new special kind of integer count differs from Coad & Nicola's IntegerCount. Also consider how we might string a number of these new integer counts together so that we can hold multiple digits. Also consider how we would use of string of special integer counts in the construction of a multiple count object.

Our new integer count needs to know it's base. It also needs to know about it's adjacent integer count, if one exists. It needs to be able to create an instance of itself, initializing it's base and initial value. It needs to be able to increment and decrement itself, given that it now has a base. This implies keeping the count value within the given range of numbers for the base, i.e. setting value to the first value in the range if incrementing above the last value in the range, or setting the value to the last value in the range if decrementing below the first value. It also involves incrementing or decrementing it's adjacent count when incrementing or decrementing itself at it's boundary values. We must also detect and print an overflow or underflow message if the count is incremented above/decremented below it's highest/lowest value and there is not adjacent count object.

Having considered our new integer count with a base, a multiple count could use a series of these integer counts to represent a multiple digit number. The multiple count must know it's base, the number of digits it has to represent, and it's "ordered collection" of integer counts with a base. It also must be able to create an instance of itself given a number of digits and a base, or a number of digits, a base, and an initial value. It must be able to create and initialize a collection of integer count's with base, including connecting one to the next in a series. The multiple count must know how to set it's value. It needs to know how to increment and decrement itself, given that it stores its value in an ordered collection of individual counts. It must also handle overflow/underflow properly for a given base, printing an appropriate message. It must be able to print it`s value as a string. It must be able to add another multiple count to itself, or subtract another multiple count from itself. It has been recommended to us that we perform addition or subtraction by making a copy of the multiple count to add to/subtract from our receiver multiple count, and then decrementing it to zero while incrementing or decrementing our receiver multiple count appropriately. So a multiple count needs to know how to make a copy of itself. This can probably be accomplished by determining the (numeric) value of the multiple count, then calling the mulitple count constructor to make a new one.

So we have decided that we need two new classes. An Integer_Count_With_Base, which is a subclass of IntegerCount, and a Multiple_Count. We have also considered what objects of these classes need to know, and what they do.