Re-read the Web page on Adages of Software Engineering. Choose one (or several closely-related) adages, or one longer article, that mean more to you than they did in January. Write a well-structured essay of several paragraphs: what does the adage really mean in practice? Do you agree or disagree? Support your claims with specific examples from your own programming experience.
Before you start writing any code for this assignment, please turn in a project plan with estimated lines of code, hours, and defects. After you've finished, compare the actual lines of code, hours, and defects (from your time and defect logs) with your initial estimate. The estimate will probably be far from reality, but that's how you learn to make more accurate estimates next time. I recommend using the PSP forms.
As always, be sure to follow the design recipe. Be sure to choose meaningful names for methods and parameters, and watch for opportunities to re-use methods you, I, or the textbook have already written.
Write the beginnings of an "address book" program, with a user-friendly graphical interface.
Define a data type with fields for the information that needs to be in an address-book entry (e.g. name, address, home phone number, cell phone number, e-mail address, etc.).
Define a data type to represent a list of these things (you may use the polymorphic approach of homeworks 6-7, or the built-in-Collections approach of homework 8, whichever you prefer).
Build a main program which creates a window with text fields allowing the user to type in values for each of these.
A "Quit" button quits the program.
A "List" button prints out all the current records to
System.out
, one per line.
An "Add" button adds a new entry to the list.
A "Find name" button looks through the list for a name matching the one currently in the "name" field; if it finds one, it fills in all the fields from the first matching record it finds, and if not, it clears all the fields.
(Extra credit: allow patterns with ? and *, as in the last problem of Homework 9, so someone could type in a pattern like "Ste*" in the name field and match any of "Stephen", "Stephanie", or "Stewart".)
Pretty much the same as the past few assignments.