Discussion of Programming Assignment 1
|
Prof. David Bernstein
|
Computer Science Department |
bernstdh@jmu.edu |
The ColorFactory
class is a utility class. It could,
instead, be an ordinary class or a singleton. What are the
tradeoffs? What is one of the important deciding factors?
The Rectangle2D.Double
has public attributes while the
CellID
class has private attributes and getters/setters.
What are the tradeoffs? Does making the attributes final change the
tradeoffs?
In this case, all of the methods that throw exceptions could,
instead, return null
when there is a problem. What are
the tradeoffs?
Are the tradeoffs the same for both checked
(e.g., InvalidCoordinateException
and unchecked
(e.g., RunttimeException
) exceptions?
Is there a reason to include the InvalidCoordinateException
in the design? Could we use an existing exception (e.g., Exception if it
needs to be checked or IllegalArgumentException if it needs to be unchecked)?
Does the decision to add an exception class depend on whether it needs to be
checked or unchecked?
The GridComponent
class constructs a large number of
Rectangle2D.Double
objects in its paint()
method. How might you use "global variables" to reduce the amount
of object creation? What would need to change in
the GridConverter
class? What are the tradeoffs?
The paint()
method use assertions when they could
either do nothing or throw the exception. What are the tradeoffs?
The CellID
and CellConverter
classes are
parameterized (specifically, the types of the columns and
rows). What are the advantages?
What changes would need to be made to the specialization of
JComponent
to take advantage of this?
Is the current design the best way to provide this flexibility?
(An Alternative Design)