Java Project goals: This project assignment will provide some experience with mu
ID: 3702500 • Letter: J
Question
Java Project goals: This project assignment will provide some experience with multiple inheritance. You will be required to create Java source files. Be sure to submit the source codes together with the execution of them.
Function Requirements: You are to create the following classes with the specified methods. These classes are created with the specified Person super class. After creation you should test these classes with the main program. The methods required for this assignment are as follows:
Methods for class Employee: set/getSalary toString
Methods for class Stockholder: set/get baseSalary set/get NumberOfShares set/getDividendsPerShare ComputeDividends toString
Methods for class Executive: basePlusDividendSalary toString The Executive class is publically derived from Stockholder. The Employee and Stockholder classes use a Person class. Then modify the Executive class as necessary.
The methods for the classes listed above can be implemented in the class or inherited from some super classes. If input values are invalid, throw exception such as an IllregalArgumentException. For example, if (grossSales < 0.0) throw new IllegalArgumentException(“Gross Sales should be greater than 0.0.”); this.grossSales = grossSales;
Sample Test Code // assign superclass reference to superclass variable
Stockholder sObj = new Stockholder("David NewMan", "4607 Westerdale Dr", 80000, 50,10);
//assign subclass reference to subclass variable Executive exObj = new Executive("John Smith","444 William Ave",130000,100, 10);
// invoke toString on superclass objet using superclass variable System.out.printf(“…………..”, sObj.toString());
//invoke toString on subclass object using subclass variable System.out.printf( “…………..”, exObj.toString());
//invoke toString on subclass object using superclass variable Stockholder sObj2 = exObj; System.out.printf(“…………..”, sObj2.toString());
Sample Output run:
Polymorphism Test:
Assigning superclass and subclass reference to superclass and subclass variables.
Call Stockhoder's toString with superclass variable to superclass object
Name: David NewMan
Address: 4607 Westerdale Dr
Base Salary: $80,000.00
Number of Shares: 50
Dividend per Share: $10.0
Total Dividend: $500.00
Call Executive's toString with subclass variable to subclass object
Name: John Smith
Address: 444 William Ave
Base Salary: $130,000.00
Explanation / Answer
class Person // base class
{
private String name,address;
public Person(String name,String address)
{
this.name = name ;
this.address = address;
}
public String toString()
{
return " Name: "+ getName()+" Address: "+getAddress();
}
public String getName()
{
return name;
}
public String getAddress()
{
return address;
}
}
class Employee extends Person // derived class
{
private double salary;
public Employee(String name,String address,double salary)
{
super(name,address);
if (salary < 0.0) throw new IllegalArgumentException("Salary should be greater than 0.0.");
this.salary = salary;
}
public void setSalary(double salary)
{
this.salary = salary;
}
public double getSalary()
{
return salary;
}
public String toString()
{
return "Salary : "+salary;
}
}
class Stockholder extends Person
{
private int salary;
double baseSalary,dividends;
private int shares;
public Stockholder(String name,String address,double baseSalary,int shares,double dividends)
{
super(name,address); // call to base class constructor
if (baseSalary < 0.0) throw new IllegalArgumentException("Base salary should be greater than 0.0.");
this.baseSalary = baseSalary;
if (shares < 0) throw new IllegalArgumentException("Shares should be greater than 0");
this.dividends = dividends;
if (dividends < 0.0) throw new IllegalArgumentException("Dividend should be greater than 0.0.");
this.shares = shares;
}
public void setBaseSalary(double baseSalary)
{
this.baseSalary = baseSalary;
}
public double getBaseSalary()
{
return baseSalary;
}
public void setNumberOfShares(int shares)
{
this.shares = shares;
}
public int getNumberOfShares()
{
return shares;
}
public void setDividendsPerShare(double dividends)
{
this.dividends = dividends;
}
public double getDividendsPerShare()
{
return dividends;
}
public double ComputeDividends()
{
return shares*dividends;
}
public String toString()
{
return super.toString()+" Base Salary: $"+baseSalary +" Number of Shares: "+shares+" Dividend per Share: $"+dividends+" Total Dividend: $"+ComputeDividends();
}
}
class Executive extends Stockholder
{
public Executive(String name,String address,double baseSalary,int shares,double dividends)
{
super(name,address,baseSalary,shares,dividends);
}
public double basePlusDividendSalary()
{
return getBaseSalary() + (getNumberOfShares()*getDividendsPerShare());
}
public String toString()
{
return super.toString() + " Base Salary Plus Dividend : $"+basePlusDividendSalary();
}
}
class Test
{
public static void main (String[] args)
{
System.out.println("Polymorphism Test ");
System.out.println("Assigning superclass and subclass reference to superclass object");
Stockholder sObj = new Stockholder("David NewMan", "4607 Westerdale Dr", 80000, 50,10);
//assign subclass reference to subclass variable Executive
Executive exObj = new Executive("John Smith","444 William Ave",130000,100, 10);
// invoke toString on superclass objet using superclass variable
System.out.printf("%s", sObj.toString());
//invoke toString on subclass object using subclass variable
System.out.printf( " %s", exObj.toString());
//invoke toString on subclass object using superclass variable
Stockholder sObj2 = exObj;
System.out.printf(" %s", sObj2.toString());
}
}
Output:
Polymorphism Test
Assigning superclass and subclass reference to superclass object
Name: David NewMan
Address: 4607 Westerdale Dr
Base Salary: $80000.0
Number of Shares: 50
Dividend per Share: $10.0
Total Dividend: $500.0
Name: John Smith
Address: 444 William Ave
Base Salary: $130000.0
Number of Shares: 100
Dividend per Share: $10.0
Total Dividend: $1000.0
Base Salary Plus Dividend : $131000.0
Name: John Smith
Address: 444 William Ave
Base Salary: $130000.0
Number of Shares: 100
Dividend per Share: $10.0
Total Dividend: $1000.0
Base Salary Plus Dividend : $131000.0
Do ask if any doubt. Please upvote.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.