Part A. Change the move and turn methods of the Bug2 class from Homework 3 Part C so that

Hint: Both position and direction can now be arbitrary numbers. You need to know how to rotate a direction. The equations are

newdx = cos(α) dx + sin(α) dy

newdy = -sin(α) dx + cos(α) dy

Here, α is the angle in radians. There is a method in the Math class to do the conversion from degrees to radian.

Draft: Provide a tester that

For the draft, you submit only It will be tested with an actual Bug2 class (which you don't see).

For the final version, you submit both and Make sure that Bug2 has appropriate Javadoc comments.

netbrat draft | final

Part B. Write a tester for the following method of the BankAccount class:

   Adds a given percentage to the balance of this account
   @param n how often to add the interest (e.g. 10 for ten times)
   @param percent the percentage to add, e.g. 5.5 to add 5.5%
public void addInterest(int n, double percent)

You don't write the BankAccount class—it's provided for you. Actually, two classes are provided for you. For the draft, the addInterest method doesn't use compound interest—it simply adds n * percent interest. In the final, the addInterest method uses compound interest. Your job is to test that the result is correct according to the formula for compound interest:

interest = (1 + percent/100)n

For both draft and final, supply that construct a BankAccount with $1000, add 10 years of interest at 5 percent, and print the actual and expected balance. In the final version, be sure to use Math.pow.

netbrat draft | final

Part C. Write a class that helps in writing mail templates. Something like

Dear John:

It appears you have not turned in CS46A homework 2 draft. Please remember that 
you are expected to attempt all assignments in this class.


Professor Fiendish

Each mail has these items:

You construct a Mail object with the before and after parts and the sender:

Mail warning = new Mail("It appears you have not turned in ",
   ". Please remember that\nyou are expected to attempt all assignments in this class.
   "Professor Fiendish");

Then you can make as many text strings as you like, with the createMessage method that has two parameters: the name and the variable part.

String message1 = warning.createMessage("John", "CS46A homework 2 draft");
String message2 = warning.createMessage("Mary", "CS46A homework 2 draft");
String message3 = warning.createMessage("Shawn", "CS46A homework 2 final");

Draft: A Mail class that has the required constructor and createMessage methods. The constructor need not do anything, but createMessage should return a string like "Dear John", i.e. "Dear" followed by the recipient, but not a colon. Make sure to provide Javadoc comments.

Final: The complete class.

Hint: You can use the concat method to combine two strings. Try out "Hello".concat("World") to see what it does.

netbrat draft | final