Static variable nextAccountNumber is initialized to 1000 , the first account
number to use. Look at the constructor. It assigns nextAccountNumber to field
number and increments nextAccountNumber , thus keeping its definition true.
It would be extremely difficult to achieve our goal of having unique account
numbers without using a static field (or at least a static method somewhere, or
adding extra parameters to the constructor), for then there would be no way to
provide communication among the instances of a class. And some form of com-
munication is needed, for how else could we ensure that different accounts have
different account numbers? Using a static variable, the necessary communication
In summary, if some form of communication is needed between instances of
a class, consider using static variables.
In Fig. 3.8, we show class BankAccount 's file drawer, with one folder of the
class as well as the two static components. What can be referenced from, say, the
body of function getNumber in that folder? According to the inside-out rule (see
Sec. 3.1.2), fields person , number , and balance as well as the static components
can be referenced. Indeed, function getNumber references field number . A static
method is also called a class method.
Now look at function numberOfAccounts . Its method body does not refer-
ence any components of instance a1 , so there is no need to place it in the
instance. Therefore, it is made static, so that there is only one copy of it, in the
file drawer. Note that the inside-out rule allows the method body to reference
static variable nextAccountNumber , which it does.
In summary, if a method body does not reference any instance components
of the class in which it is defined, make the method static.
er example of
We discuss the design of a program using classes. It is an idealized design in
which everything is done in a certain order, and correctly. In reality, a design may
require much redoing of earlier steps when something is realized later on. Rarely
can it be done in a completely idealized fashion. Nevertheless, we should strive
for the ideal, for it can reduce the time and effort to complete the program.
The basic idea of OO design
Object-oriented design is the process of designing a program by focusing on the
objects that the program will manipulate and designing the classes that describe
the objects. We do this by focusing on the objects of the problem domain —the
domain for which the program is being written.
Objects are things, so begin by listing objects of the program domain: