Here is an outline for a working class OldCellPhone that has no errors (you may see this exact class several times in this exam):
class OldCellPhone
{
static public final int MIN_CAP = 10;
static public final int MAX_CAP = 1000;
static public final String DEFAULT_DSCR = "(generic phone)";
private String description;
private int memCapacity;
private boolean camera;
private boolean gps;
public void setCamera( boolean hasCam ) { camera = hasCam; }
public void setGps( boolean hasGps ) { gps = hasGps; }
public OldCellPhone()
{
this(DEFAULT_DSCR, MIN_CAP, false, false);
}
public OldCellPhone(String dscr, int mem, boolean cam, boolean gp)
{
// not shown
}
public String toString()
{
// not shown
}
public boolean setMemCapacity(int mem)
{
// not shown
}
};
A programmer decides to make the static DEFAULT_DSCR mutable, removing its final status, as in:
static public String DEFAULT_DSCR = "(generic phone)";
A mutator is added for this member. Any String whose length is at least 2 characters will be acceptable as a new DEFAULT_DSCR.
Check the true statements (there may be more than one correct answer):
A. The mutator for this member will be an instance method.
B. If the mutator takes a String parameter, newDefault, a reasonable definition would be:
if ( newDefault.length() < 2 )
return false;
DEFAULT_DSCR = newDefault;
return true;
C. The mutator for this member will be a static method.
D. If the mutator takes a String parameter, newDefault, a reasonable definition would be:
if ( newDefault.length() < 2 )
{
this.newDefault = DEFAULT_DSCR;
return false;
}
this.newDefault = newDefault;
return true;
E. If the mutator takes a String parameter, newDefault, a reasonable definition would be:
if ( newDefault.length() > 0 )
return false;
DEFAULT_DSCR = newDefault;
return true;