
Evaluating Software Design Patterns — the "Gang of Four" patterns implemented in Java 6 

PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 
java.lang.Object dk.rode.thesis.meta.model.AbstractSequence<Integer> dk.rode.thesis.meta.model.PrimeSequence
public class PrimeSequence
A prime sequence returns with each call to next()
the next prime number in the sequence of prime numbers smaller
than maximum
, where maximum
is supplied at
construction time. Hence, returned values are in the range of
[2, maximum]
.
A prime sequence is bounded
,
consistent
, and unique
.
Implementation notes:
Though this class is supposed to simulate complex behaviour that
has to be calculated on the fly to illustrate the use of
sequences, the implementation uses a very simple version
of the Sieve of Eratosthenes. The amount of memory used by
an a prime sequence is linear with maximum
. Java has
builtin support for generating primes in form of
java.math.BigInteger
, but that is
beside the point.
ReversiblePrimeSequence
Nested Class Summary 

Nested classes/interfaces inherited from interface dk.rode.thesis.meta.model.Sequence 

Sequence.State 
Field Summary  

private boolean 
calculate
Returns false if all primes have been calculated, false if not. 
private int 
index
The next index to start processing from on calls to next() . 
private int 
maximum
Maximum number to consider. 
private int 
prime
The current prime number. 
private boolean[] 
sieve
The actual sieve. 
Fields inherited from class dk.rode.thesis.meta.model.AbstractSequence 

state 
Constructor Summary  

PrimeSequence(int maximum)
Constructor. 

PrimeSequence(PrimeSequence sequence)
Copy constructor. 
Method Summary  

boolean 
bounded()
Returns true. 
boolean 
consistent()
Returns true. 
PrimeSequence 
copy()
Returns a copy of this sequence that will start at the same sequence index as this sequence. 
Integer 
current()
Returns the current element from this sequence. 
Integer 
next()
Returns the next element from this sequence. 
void 
reset()
Resets this sequence to start over if it is consistent. 
boolean 
unique()
Returns true. 
Methods inherited from class dk.rode.thesis.meta.model.AbstractSequence 

getStringablePolicy, state, toString, toString 
Methods inherited from class java.lang.Object 

clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait 
Methods inherited from interface dk.rode.thesis.meta.model.Sequence 

state 
Methods inherited from interface dk.rode.thesis.strategy.Stringable 

getStringablePolicy, toString 
Field Detail 

private boolean calculate
private int index
next()
. After each call to next has
completed, the value is prime
+ 1.
Range: [3, maximum
].
private final int maximum
private int prime
Range: [2, maximum
].
private boolean[] sieve
If calculate
is true, an index smaller than
index
having a false value represents a prime
number (normally a true value represent
a prime number, but by flipping it, we do not have to
initialise the array with true).
If calculate
is false, any index having a false
value represents a prime number.
The length is maximum
+ 1. Index zero and one
are unused.
Constructor Detail 

public PrimeSequence(int maximum)
maximum
 The maximum number to consider. Must be larger than 1.
IllegalArgumentException
 If maximum
is smaller than 2.public PrimeSequence(PrimeSequence sequence)
sequence
 The sequence to copy; cannot be null.
NullPointerException
 If sequence
is null.Method Detail 

public boolean bounded()
bounded
in interface Sequence<Integer>
Sequence.unique()
public boolean consistent()
consistent
in interface Sequence<Integer>
public PrimeSequence copy()
Sequence
copy
in interface Sequence<Integer>
copy
in interface Copyable<Sequence<Integer>>
public Integer current()
Sequence
This method can be invoked even if Sequence.next()
has not been invoked yet, thus delivering the initial
value of this sequence.
current
in interface Sequence<Integer>
public Integer next()
Sequence
next
in interface Sequence<Integer>
Sequence.current()
,
Sequence.state()
public void reset()
Sequence
If this sequence is consistent
, the
sequence will restart.
reset
in interface Sequence<Integer>
reset
in class AbstractSequence<Integer>
public boolean unique()
unique
in interface Sequence<Integer>
Sequence.consistent()

Gunni Rode / rode.dk  
PREV CLASS NEXT CLASS  FRAMES NO FRAMES  
SUMMARY: NESTED  FIELD  CONSTR  METHOD  DETAIL: FIELD  CONSTR  METHOD 