CASE STUDY^307
What are the responsibilities of the driver? To create instances of the class Entryand
write them to a file.Entryhas a responsibility that writes itself to a file, so that respon-
sibility is implemented by sending a message to Entry. We have two possibilities for cre-
ating instances of the class: We can use the nonparameterized version of the
constructor for Entryand let it be responsible for instantiating Name,Address, and Phone,
or we can let the driver input the values and use Entry’s parameterized constructor.
Because this is a special-purpose driver whose only function is to create entries, let’s
centralize the input for the fields of Entryin the driver. We should also use the parame-
terized constructors for Nameand Address.Phonedoesn’t have a nonparameterized
constructor, so there is no choice. Here, then, is the CRC card for the driver:
Class Name: AddressDr Superclass: Subclasses:
Responsibilities Collaborations
Prepare input file BufferedReaderPrepare output file PrintWriter
Process entries Name, Address, Phone, Entry
Close files BufferedReader, PrintWriterClass Name: Address Superclass: Subclasses:
Responsibilities Collaborations
Create (street, city, state, zip) StringCreate( ) String. BufferedReader
Know street None
return StringKnow city None
return Stringreturn String
Know state None
Know zip None
return String