ProductsLogo
LogoStudy Documents
LogoAI Grader
LogoAI Answer
LogoAI Code Checker
LogoPlagiarism Checker
LogoAI Paraphraser
LogoAI Quiz
LogoAI Detector
PricingBlogAbout Us
logo

Assignment Title

Verified

Added on  2019/09/22

|29
|2910
|327
Report
AI Summary
The assignment is about creating a university system with different departments such as students, faculty members, and staff. The `Person` class serves as the base class for all employees, and there are three sub-classes: `Student`, `Faculty`, and `OfficeStaff`. Each of these classes has its own attributes and methods. The `School` class is used to manage students, faculty members, and staff. In this assignment, a university with an engineering school is created, featuring different types of employees (students, faculty members, and staff), each with their own characteristics.

Contribute Materials

Your contribution can guide someone’s learning journey. Share your documents today.
Document Page
a) The class diagram for the current implementation of the university system
String schoolName
ArrayList <Student> students
ArrayList <Faculty> faculty
ArrayList <OfficeStaff> o_staff
ArrayList <TechnicalSupportStaff> ts_staff
School
School(String name)
addstudent(Student s)
addfaculty(Faculty f)
addofficeStaff(OfficeStaff os)
addTSS(TechnicalSupportStaff tss)
displaySchoolInfo()
Student
String firstName;
String lastName;
String major;
double gpa;
String academicLevel;
Student(String fName,
String lName, String al,
String m, double gp)
viewStudent()

Secure Best Marks with AI Grader

Need help grading? Try our AI Grader for instant feedback on your assignments.
Document Page
String firstName
String lastName
String department
String researchArea
double monthly_salary
boolean hourlyPaid
double hourlyRate
Faculty(String fName, String lName, String
dep, String res, boolean hp, double ms,
double hr)
viewFaculty()
Faculty
OfficeStaff
String firstName;
String lastName;
boolean hourlyPaid;
double hourlyRate;
double monthly_salary;
OfficeStaff(String fName,
String lName, boolean hp,
double ms, double hr)
viewOfficeStaff()
TechnicalSupportStaff
String firstName;
String lastName;
String technicalArea;
boolean hourlyPaid;
double hourlyRate;
double monthly_salary;
TechnicalSupportStaff(String fName, String
lName, String ta, boolean hp, double ms,
double hr)
viewTechnicalSupportStaff()
Document Page
b) Current implementation violates some of the OO design issues discussed in the
class.
What are the drawbacks of the design given? How can you refactor it? Here are
some of the factors you need to consider Proper data and method abstraction
Information hiding Using inheritance and polymorphism as needed Removing
duplicate code Other “smelly code” symptoms discussed in the class as
appropriate
Ans :
The drawbacks of the given design are:
There is no proper formatting of the code
It violates the DRY (don't repeat yourself) means don't write duplicate code,
instead use Abstraction and inheritance to abstract common things in one place.
The benefit of this Object oriented design principle is in maintenance. It's
important not to abuse it, duplication is not for code, but for functionality.
We can remove unused imports
Like we can remove
import java.util.*; from university.java
There are no getter and setter for the private fields in every class.
Document Page
We can refactor it by
Proper data and method abstraction
Information hiding
proper formatting of the code
Using inheritance and polymorphism as needed
Removing duplicate code
We can also write a base class Person.java
package university;
public class Person {
protected String firstName;
protected String lastName;
protected boolean hourlyPaid;
protected double hourlyRate;
protected double monthly_salary;
public String getFirstName() {

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public boolean isHourlyPaid() {
return hourlyPaid;
}
public void setHourlyPaid(boolean hourlyPaid) {
this.hourlyPaid = hourlyPaid;
}
Document Page
public double getHourlyRate() {
return hourlyRate;
}
public void setHourlyRate(double hourlyRate) {
this.hourlyRate = hourlyRate;
}
public double getMonthly_salary() {
return monthly_salary;
}
public void setMonthly_salary(double monthly_salary) {
this.monthly_salary = monthly_salary;
}
}
Document Page

Secure Best Marks with AI Grader

Need help grading? Try our AI Grader for instant feedback on your assignments.
Document Page
Part c
Draw the class diagram for the refactored design (your refactored design should have inheritance and
polymorphism included)
Base class Person
Person
protected String firstName;
protected String lastName;
protected boolean hourlyPaid;
protected double hourlyRate;
protected double monthly_salary;
String getFirstName()
setFirstName(String firstName)
String getLastName()
setLastName(String lastName)
boolean isHourlyPaid()
setHourlyPaid(boolean hourlyPaid)
double getHourlyRate()
setHourlyRate(double hourlyRate)
double getMonthly_salary()
setMonthly_salary(double monthly_salary)
Document Page
Student, Faculty, OfficeStaff, TechnicalSupportStaff extends Person class
String schoolName
ArrayList <Student> students
ArrayList <Faculty> faculty
ArrayList <OfficeStaff> o_staff
ArrayList <TechnicalSupportStaff> ts_staff
School(String name)
addstudent(Student s)
addfaculty(Faculty f)
addofficeStaff(OfficeStaff os)
addTSS(TechnicalSupportStaff tss)
displaySchoolInfo()
getSchoolName():String
setSchoolName(String schoolName)
ArrayList<Student> getStudents()
setStudents(ArrayList<Student> students)
ArrayList<Faculty> getFaculty()
setFaculty(ArrayList<Faculty> faculty)
ArrayList<OfficeStaff> getO_staff()
setO_staff(ArrayList<OfficeStaff> o_staff)
ArrayList<TechnicalSupportStaff>
getTs_staff()
s
etTs_staff(ArrayList<TechnicalSupportStaff
> ts_staff)
Student extends Perso
String major;
double gpa;
String academicLevel;
Student(String fName,
String lName, String al,
String m, double gp)
viewStudent()
String getMajor()
setMajor(String major)
double getGpa()
setGpa(double gpa)
String
getAcademicLevel()
setAcademicLevel(Strin
g academicLevel)
School
Document Page
String department
String researchArea
Faculty(String fName, String lName, String
dep, String res, boolean hp, double ms,
double hr)
viewFaculty()
String getDepartment()
setDepartment(String department)
String getResearchArea()
setResearchArea(String researchArea)
Faculty extends Person
OfficeStaff extends Person
OfficeStaff(String fName,
String lName, boolean hp,
double ms, double hr)
viewOfficeStaff()
TechnicalSupportStaff extends Person
String technicalArea;
TechnicalSupportStaff(String fName, String
lName, String ta, boolean hp, double ms,
double hr)
viewTechnicalSupportStaff()
String getTechnicalArea()
setTechnicalArea(String technicalArea)

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
Document Page
Part d
Person.java
package university;
public class Person {
protected String firstName;
protected String lastName;
protected boolean hourlyPaid;
protected double hourlyRate;
protected double monthly_salary;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
Document Page
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public boolean isHourlyPaid() {
return hourlyPaid;
}
public void setHourlyPaid(boolean hourlyPaid) {
this.hourlyPaid = hourlyPaid;
}
public double getHourlyRate() {
return hourlyRate;
}
public void setHourlyRate(double hourlyRate) {

Secure Best Marks with AI Grader

Need help grading? Try our AI Grader for instant feedback on your assignments.
Document Page
this.hourlyRate = hourlyRate;
}
public double getMonthly_salary() {
return monthly_salary;
}
public void setMonthly_salary(double monthly_salary) {
this.monthly_salary = monthly_salary;
}
}
TechnicalSupportStaff.java
package university;
public class TechnicalSupportStaff extends Person {
private String technicalArea;
Document Page
public TechnicalSupportStaff(String fName, String lName, String ta, boolean hp,
double ms, double hr) {
firstName = fName;
lastName = lName;
hourlyPaid = hp;
monthly_salary = ms;
hourlyRate = hr;
technicalArea = ta;
}
public void viewTechnicalSupportStaff() {
System.out.println();
System.out.println("First Name:" + firstName);
System.out.println("Last Name:" + lastName);
System.out.println("Technical Area:" + technicalArea);
if (hourlyPaid) {
System.out.println("Hourly Rate:" + hourlyRate);
} else {
System.out.println("Monthly Salary:" + monthly_salary);
}
Document Page
}
public String getTechnicalArea() {
return technicalArea;
}
public void setTechnicalArea(String technicalArea) {
this.technicalArea = technicalArea;
}
}
OfficeStaff.java
package university;
public class OfficeStaff extends Person {

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
public OfficeStaff(String fName, String lName, boolean hp, double ms, double
hr) {
firstName = fName;
lastName = lName;
hourlyPaid = hp;
monthly_salary = ms;
hourlyRate = hr;
}
public void viewOfficeStaff() {
System.out.println();
System.out.println("First Name:" + firstName);
System.out.println("Last Name:" + lastName);
if (hourlyPaid) {
System.out.println("Hourly Rate:" + hourlyRate);
} else {
System.out.println("Monthly Salary:" + monthly_salary);
}
}
Document Page
}
Faculty.java
package university;
public class Faculty extends Person {
private String department;
private String researchArea;
public Faculty(String fName, String lName, String dep, String res, boolean hp,
double ms, double hr) {
firstName = fName;
lastName = lName;
department = dep;
researchArea = res;
hourlyPaid = hp;
monthly_salary = ms;
hourlyRate = hr;
Document Page
}
public void viewFaculty() {
System.out.println();
System.out.println("First Name:" + firstName);
System.out.println("Last Name:" + lastName);
System.out.println("Department:" + department);
System.out.println("Research Area:" + researchArea);
if (hourlyPaid) {
System.out.println("Hourly Rate:" + hourlyRate);
} else {
System.out.println("Monthly Salary:" + monthly_salary);
}
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {

Secure Best Marks with AI Grader

Need help grading? Try our AI Grader for instant feedback on your assignments.
Document Page
this.department = department;
}
public String getResearchArea() {
return researchArea;
}
public void setResearchArea(String researchArea) {
this.researchArea = researchArea;
}
}
Student.java
package university;
public class Student extends Person {
private String major;
private double gpa;
Document Page
private String academicLevel;
public Student(String fName, String lName, String al, String m, double gp) {
firstName = fName;
lastName = lName;
major = m;
gpa = gp;
academicLevel = al;
}
public void viewStudent() {
System.out.println();
System.out.println("First Name :" + firstName);
System.out.println("Last Name :" + lastName);
System.out.println("Major:" + major);
System.out.println("GPA :" + gpa);
System.out.println("academic Level :" + academicLevel);
}
Document Page
public String getMajor() {
return major;
}
public void setMajor(String major) {
this.major = major;
}
public double getGpa() {
return gpa;
}
public void setGpa(double gpa) {
this.gpa = gpa;
}
public String getAcademicLevel() {
return academicLevel;
}
public void setAcademicLevel(String academicLevel) {
this.academicLevel = academicLevel;

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
}
}
School.java
package university;
import java.util.*;
public class School {
private String schoolName;
private ArrayList<Student> students;
private ArrayList<Faculty> faculty;
private ArrayList<OfficeStaff> o_staff;
private ArrayList<TechnicalSupportStaff> ts_staff;
public School(String name) {
Document Page
schoolName = name;
students = new ArrayList();
faculty = new ArrayList();
o_staff = new ArrayList();
ts_staff = new ArrayList();
}
public void addstudent(Student s) {
students.add(s);
}
public void addfaculty(Faculty f) {
faculty.add(f);
}
public void addofficeStaff(OfficeStaff os) {
o_staff.add(os);
}
public void addTSS(TechnicalSupportStaff tss) {
Document Page
ts_staff.add(tss);
}
public void displaySchoolInfo() {
System.out.println("\t\t" + schoolName);
System.out.println("\t\t\t =============");
for (int i = 0; i < students.size(); i++) {
students.get(i).viewStudent();
}
for (int i = 0; i < faculty.size(); i++) {
faculty.get(i).viewFaculty();
}
for (int i = 0; i < o_staff.size(); i++) {
o_staff.get(i).viewOfficeStaff();
}
for (int i = 0; i < ts_staff.size(); i++) {
ts_staff.get(i).viewTechnicalSupportStaff();
}

Secure Best Marks with AI Grader

Need help grading? Try our AI Grader for instant feedback on your assignments.
Document Page
}
public String getSchoolName() {
return schoolName;
}
public void setSchoolName(String schoolName) {
this.schoolName = schoolName;
}
public ArrayList<Student> getStudents() {
return students;
}
public void setStudents(ArrayList<Student> students) {
this.students = students;
}
public ArrayList<Faculty> getFaculty() {
return faculty;
}
Document Page
public void setFaculty(ArrayList<Faculty> faculty) {
this.faculty = faculty;
}
public ArrayList<OfficeStaff> getO_staff() {
return o_staff;
}
public void setO_staff(ArrayList<OfficeStaff> o_staff) {
this.o_staff = o_staff;
}
public ArrayList<TechnicalSupportStaff> getTs_staff() {
return ts_staff;
}
public void setTs_staff(ArrayList<TechnicalSupportStaff> ts_staff) {
this.ts_staff = ts_staff;
}
}
Document Page
University.java
package university;
public class university {
public static void main(String[] args) {
School engSchool = new School("Fulton Schools of Engineering");
Student s = new Student("John", "William", "Freshman", "CS/CSE", 3.5);
Faculty f = new Faculty("Janaka", "Balasooriya", "CIDSE", "SOA", false,
1000.00, 0);
OfficeStaff os = new OfficeStaff("Nancy", "Wilfred", true, 0, 20.00);
TechnicalSupportStaff ts = new TechnicalSupportStaff("Chris", "Kevin",
"Database", false, 12000.50, 0);
engSchool.addstudent(s);
engSchool.addfaculty(f);

Paraphrase This Document

Need a fresh take? Get an instant paraphrase of this document with our AI Paraphraser
Document Page
engSchool.addofficeStaff(os);
engSchool.addTSS(ts);
engSchool.displaySchoolInfo();
}
}
1 out of 29
[object Object]

Your All-in-One AI-Powered Toolkit for Academic Success.

Available 24*7 on WhatsApp / Email

[object Object]