Version: 5.3.0.10

## Assignment 7

Goals: Learn to program with mutation and resolve circularity in data.

### Instructions

The names of the projects and some of the project files must be exactly the same as specified in the assignment. Failure to do so makes it impossible for the graders to run your submission and results in immediate loss of at least 50% of the homework credit.

Make sure you follow the style guidelines for code indentation.

You will submit this assignment by the deadline using the Web-CAT submission system.

With each homework you will also submit your log file named pairxxx.txt where you replace xxx with your pair number.

On top of every file you submit you will have the names of both partners, and the pair number.

The .txt file will be the log of your work on this assignment. Each log entry will have data and time, who was present (one or both of the partners) and a short comment decribing what you were working on.

Due Date: Thursday, February 28th, 12:00 midnight.

### Practice Problems

Work out these problems on your own. Save them in an electronic portfolio, so you can show them to your instructor, review them before the exam, use them as a reference when working on the homework assignments.

• Review the lecture notes on Books and Authors with circularly referential data and actually run the programs.

Add new examples of books, define the method that checks whether two books are the same.

### Problem 1

Finish all work in the Lab 7a and hand it in.

Specifically:

• Design the method addBuddy and then make example of the circle of buddies as given in the lab.

• Design the method hasDirectBuddy

• Design the method countCommonBuddies

• Design the method hasDistantBuddy

• Design the method partyCount that counts the number of people who will be invited to a party given by this person if all buddies and all buddies of all buddies (including the distant ones) come to the party.

#### Submission for Problem 1:

The instructor’s test program will assume that you have made examples of all people listed and the object that represents each person has the same name as that person, but in all lower-case letters.

So, you should define ann, bob, etc.

The instructor’s test program assumes that the headers of all methods are the same as given in the lab document.

If you cannot design these methods, include at least the method header and a stub code within that produces some value of the expected type. So, for example, if the method produces a boolean value, just write return true;, if it produces a String, write return "s";, etc. This will make your program compile and will run all instructor’s tests, even though they will probably fail.

What will be tested on submission:

• Name your examples clas for Problem 1 ExamplesBuddies.

• You must have a method void initBuddies() is the ExamplesBuddies class that initializes all person’s buddy lists. Make sure the method can be called repeatedly.

• The test program will test the methods hasDirectBuddy, hasDistantBuddy, countCommonBuddies, and partyCount.

Make sure you have at least the stubs for these methods defined in the appropriate classes and interfaces.

• Make sure the ExamplesBuddies class is defined in its own file named ExamplesBuddies.java

### Problem 2

Finish all work in the Lab 7b and hand it in.

Specifically:

• Make examples of Checking, Savings, and Credit accounts. including the check1 and savings1 examples that were included in the lab code.

• Design the method withdraw for all accounts.

• Design the method deposit for all accounts.

• Design the method openAccount that allows the customer to open a new account in the bank.

• For the class Bank design the method deposit as described in Lab 7b

• For the class Bank design the method withdraw as described in Lab 7b

• For the class Bank design the method removeAccount as described in Lab 7b

#### Submission for Problem 2:

The instructor’s test program will assume that you have not modified the examples given in the lab code and that your method headers are as given in the lab document.

The instructor’s test program assumes that the headers of all methods are the same as given in the lab document.

If you cannot design these methods, include at least the method header and a stub code within that produces some value of the expected type. So, for example, if the method produces a boolean value, just write return true;, if it produces a String, write return "s";, etc. This will make your program compile and will run all instructor’s tests, even though they will probably fail.