1. Shown is the code for a class Lecturer for use in this question.

//********************************************************
// Lecturer.java A class to represent a lecturer at VU
//********************************************************
public class Lecturer
{ private String firstName ;
private String familyName ;
private int phoneNo ;
private String title ;
public Lecturer (String firstNameIn, String familyNameIn, int phoneNoIn,
String titleIn)
{ firstName = firstNameIn ;
familyName = familyNameIn ;
phoneNo = phoneNoIn ;
title = titleIn ;
}
public String getFamilyName ( )
{ return familyName;
}
public int getPhoneNo ( )
{ return phoneNo ;
}
public void setTitle (String titleIn )
{ title = titleIn ;
}
public String toString ()
{ String toScreen ;
toScreen = "\n\n" + title + "\t" + firstName + "\t" + familyName ;
toScreen += "\nPhone: " + phoneNo ;
return toScreen;
}
} //end class

a) Write a test program that creates several instances of class Lecturer and stores them in an array called staffList . When the program prints out the staffList it should look like:-

Ms Grace Tan
Phone:99194685

Mr Sunam Pradhan
Phone:99191234

Dr Jakub Szajman
Phone:99194286

Professor Yuan Miao
Phone:99194605

Couse coordinator Hao Shi
Phone:99194060

b) Write code to printout ONLY the phone numbers of the lecturers in the staffList as shown.

Phone number:

99194685
99191234
99194286
99194605
99194060

c) Finally, write code to allow you to change the title of your current lecturer to Professor stored in the staffList and print out the result as shown.

***********************
A promotion for Grace:
Professor Grace Tan
Phone:99194685
***********************

The Lecturer . java class is a simple class that does not explicitly inherit from any other classes, it defaults from the Object class in java.lang by default. This means it inherits all of Object s methods, including the equals( ) method. However, the equals( ) method in Object only returns true if both objects are actually the same object in memory, aliases of one another.

d) Override the equals( ) method so it returns true if two different Lecturer objects share the same instance data. Test to see if any of the Lecturer objects created are the same person.

e) Next modify the program to store your instances of class Lecturer in an Java ArrayList class, instead of the array. Use the Java online documentation at http://docs.oracle.com/javase/7/docs/api/index.html to find out how to construct an ArrayList. Search the documentation for methods to add elements to your list of lecturers.

Note: when you call the toString( ) method of an ArrayList object it includes square brackets at the beginning and end of the listing.

[Ms Grace Tan
Phone:99194685
Mr Sunam Pradhan
Phone:99191234
Dr Jakub Szajman
Phone:99194286
Professor Yuan Miao
Phone:99194605
Couse coordinator Hao Shi
Phone:99194060]

2. Create a class Account that represents a banking account. The class has attributes owner, accountNo and balance. The constructor for the class requires the name of the owner of the account and the initial deposit for the account, which will be stored in the balance attribute. A static int variable is used for accountNo, which is initially set to 12345. Each object of the class Account is assigned its accountNo by adding 1 to the current value in the static variable. Therefore, the first account will be assigned 12346 as its accountNo.

The business rules for objects of class Account are:

  • An owner name can be changed
  • No method should allow the balance value to become negative
  • Only deposits and withdrawals can alter the value stored in balance, and their amounts must be positive, that is you cannot deposit - $10.00
  • Interest is always 5% per annum.

Following the business rules, create methods of deposit, withdrawal, addInterest and appropriate get and set methods for the class. The toString should display the accountNo and the balance.

Note: To format the balance so that it prints out with a $ in front of the amount and to two decimal places, you can use class NumberFormat to do this. You will need to

  • Firstly make an import declaration: import java.text.NumberFormat;
  • Add the following to your code NumberFormat formatter = NumberFormat.getCurrencyInstance ();
  • Call up the method format on the balance formatter.format (balance);

Write a method called equals that compares two Account objects and returns true if the objects have the same owner, otherwise the method returns false.

Write a class TestAccount which creates an array of five different Account objects, with at least two objects having the same owner values. Systematically check the functionality of all methods of class Account including the equals method to find out how many different accounts are owned by the same person.

3. Using the class Account in question 2, derive two additional account types: OnLineAccount and SavingsAccount, where OnLineAccount and SavingsAccount inherit from Account.

In Account, change the visibility of all data to protected. Change the withdraw method so that it becomes an abstract method. This action will necessitate you declaring the class as abstract. Deposits should work the same way in OnLineAccount and SavingsAccount so make sure they cannot override their parents version.

The OnLineAccount class has one additional attribute to that of class Account, minimumBalance. All instances of OnLineAccount are created with the minimumBalance amount set to $500. If transactions of any OnLineAccount cause the balance to go below minimumBalance, a $25 fee is subtracted from the account balance. Override the toString method to display everything the Account toString displays plus a message dependent upon the balance. If the balance is below the minimumBalance, a message stating that a $25 fee has been already been subtracted needs to alert the customer. Use the parent class toString to do most of the work.

The SavingsAccount class has one additional attribute to that of class Account, overdraft. All instances of SavingsAccount are created with the overdraft amount set to -$1000. An overdraft amount is the amount an object of SavingsAccount class may allow the balance to go to. Implement the withdraw method so that overdrafts are allowed up to the amount stored in overdraft. Any withdrawals that allow the balance to drop below zero and up to the overdraft amount are allowed but the overdraft fee of $30 is incurred each time a transaction causes the balance to be below zero. Override the toString method to display everything the Account toString displays plus a message dependent upon the balance. If the balance is below zero, a message stating that the person is in overdraft and a $30 fee has been already been incurred. Use the parent class toString to do most of the work.

Create a driver class with an array of 5 objects of Account, being some instances of the child classes OnLineAccount or SavingsAccount. Systematically test the full functionality of both child classes.

4. Consider the following UML diagram

a) Implement all three classes GeometricObject , Circle and Rectangle . Note the toString( ) method should print out relevant data such as colour, filledIn, length, width, radius, area and perimeter for each shape. see image.

b) Write a program TestShapes in which an array to 5 GeometricObject s are stored. The five GeometricObject s are

  • pink, filled in, Circle , radius 4.5
  • blue, not filled in, C ircle , radius 3.1
  • cyan, filled in, Rectangle , length 2.0, width 3.4
  • green, filled in, Circle , radius 3.6
  • orange, not filled in, Rectangle , length 5.0, width 1.4

c) Use a for loop to print the details of each element stored in the array to the screen.

d) Use a for loop to print the area for each shape

e) Use a for loop to print the perimeter for each shape

Figure: see image.

f) Consider all triangles. Use the inheritance hierarchy shown for GeometricObject and add a class to represent triangles. Design and create class Triangle. Your objective is to reuse as much code as possible.

g) Consider all boxes. Use the inheritance hierarchy shown for GeometricObject and add a class to represent boxes. Design and create class Box. Your objective is to reuse as much code as possible.

Academic Honesty!
It is not our intention to break the school's academic policy. Posted solutions are meant to be used as a reference and should not be submitted as is. We are not held liable for any misuse of the solutions. Please see the frequently asked questions page for further questions and inquiries.
Kindly complete the form. Please provide a valid email address and we will get back to you within 24 hours. Payment is through PayPal, Buy me a Coffee or Cryptocurrency. We are a nonprofit organization however we need funds to keep this organization operating and to be able to complete our research and development projects.