|
Discussion of Programming Assignment 2
|
|
Prof. David Bernstein
|
| Computer Science Department |
| bernstdh@jmu.edu |
Should Configuration be a utility class or a Singleton?
Why shouldn't it be a class that can have multiple instances?
In the current design, Configuration reads from the
same directory as the application. This can cause problems if the
application doesn't have write access to that directory. How can
environment variables be used to fix this? What role do installers play?
Should Configuration have setters that are passed parameters
that aren't String objects?
What is the benefit of having (some of) the getters return a default? What would you have to do otherwise?
Should the getters that don't have a default
return null or throw an exception?
Why are resource loaders needed?
How does the current implementation work?
Should the ResourceLoader keep a Map
of InputStream objects?
Should DocumentManager be a Singleton?
How does the design make testing the DocumentManager class
more difficult than it might be otherwise? Should the design be changed
as a result?
What other kinds of documents could/should the design include?
CSVDocument
XMLDocument
JSONDocument
Where would you package them (in document, at the same
level as document, elsewhere)?
document because there will probably be other classes
that are associated with the format/representation (e.g., readers
and writers).
Why does the design include an EditableFactory
interface? (Hint: Think about what will happen when we need to be
able to construct a new "document" using a GUI.)
How much effort was required to implement the factories?
Does the inclusion of the factories limit the design in any way?
Should BigPixelDocument include a constructor that is
passed a String and does the work
of createProduct(String) that is
in BigPixelDocumentFactory?
How "important" is the PropertyConstants class?
Why should "magic numbers" be avoided? Should they be replaced in the
class or added to another class (like PropertyConstants)?
this and getThis()
What happens if AbstractEditable.notifyDocumentManager()
is implemented as follows?
D. this is of
type AbstractEditable<D>, so it won't compile.
(D)this will compile but is an unsafe cast.