Overview
Your job is to take one of your Project 2 solutions (work in
groups of three!), and
augment it, so that
java Vault ... works just as it
did for project three, but
java VaultGUI <filename>
pops up a GUI window that does the username/password
authentication part of the vault. So, the original Vault and
VaultGUI
both have to work ... and we shouldn't have
duplication of code! For example, if we start with vault file
vaultA given by
| vaulta |
user drbrown padcut foobarxxxxxxxxxx
user fanboy sha-256 a8f02dea16bcc303 |
... and run VaultGUI like this
java VaultGUI vaultA
... below are examples of some possible
VaultGUI
sessions:



Remember! your Project 2 Vault has to work
just the same as always (though you will probably have to
change the code, i.e. do some "refactoring"), you are just
adding on the functionality of "VaultGUI".
Your focus and my gift
I want you to focus on how your Project 2 design might have to
improve to allow you to simultaneously provide a command line
tool and a GUI tool. So this is really about the Project 2
code, not about GUI code. Therefore, I'm giving you the basic
code for the GUI.
Deliverables
Be prepared to show a working Vault and VaultGUI and, more
importantly, to describe what you had to change design-wise to
accomplish this, and in what ways this new design is better (in
hindsight) we regards to one or more of:
- separation of interface from implementation
- no duplication of code / enabling code reuse
- keeping separate tasks separate (i.e. not intermingling
their code)
- encapsulation
- data hiding