Yes. The data are private and there are no setter methods.
A PhoneBook object packages both the data and the search method into one object.
The search method returns a reference to the PhoneEntry
that matches the name being sought.
class PhoneEntry
{
private String name; // name of a person
private String phone; // their phone number
public PhoneEntry( String n, String p )
{
name = n; phone = p;
}
public String getName() {return name;}
public String getPhone() {return phone;}
}
class PhoneBook
{
private PhoneEntry[] phoneBook;
public PhoneBook() // constructor
{
phoneBook = new PhoneEntry[ 5 ] ;
phoneBook[0] = new PhoneEntry( "James Barclay", "(418) 665-1223" );
phoneBook[1] = new PhoneEntry( "Grace Dunbar", "(860) 399-3044" );
phoneBook[2] = new PhoneEntry( "Paul Kratides", "(815) 439-9271" );
phoneBook[3] = new PhoneEntry( "Violet Smith", "(312) 223-1937" );
phoneBook[4] = new PhoneEntry( "John Wood", "(913) 883-2874" );
}
public PhoneEntry search( String targetName )
{
. . .
}
}
public class PhoneBookTester
{
public static void main ( String[] args )
{
PhoneBook pb = new PhoneBook();
// search for "Violet Smith"
PhoneEntry entry = pb.search( "Violet Smith" );
if ( entry != null )
System.out.println( entry.getName() + ": " + entry.getPhone() );
else
System.out.println("Name not found" );
}
}
Examine this declaration:
PhoneEntry[] phoneBook = new PhoneEntry[ 5 ] ;
What does phoneBook look like immediately after this statement executes?