Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

In this assignment, you will use object-oriented programming techniques to model

ID: 3727821 • Letter: I

Question

In this assignment, you will use object-oriented programming techniques to model a basic University system 1. You will need to model the following classes: Address, Person, Student, Staff and Faculty. You may also model other classes as needed. 2. Provide three interfaces: Employee (with a salary0 method), and child interfaces (with Instructor(with a creditsTaught0 method) and Administrator position0 method). You may also provide other interfaces as needed. a 3. You will need to capture the following data members: first name, middle name, last name, date of birth, gender, address first line, city of address, state of address, zipcode of address, current semester enrolled in, number of credits completed, graduation status, PhD status for graduate students, number of credits currently enrolled in, department of employment, major and salary. Decide carefully where each data member (there are 17 data members listed) should be stored. 4. You may provide additional data members as needed. 5. Accessors should be provided for all data members 6. No mutators should be provided for any data member. The only way to modify data members from any class outside this hierarchy is to use the constructors (directly) or the methods below (indirectly). 7. Your implementation should include abstract classes, "concrete" classes, interfaces, inheritance and polymorphism

Explanation / Answer

Programs :

For 1:

package university.beans;

public class Address {

private String fLine;

private String city;

private String state;

private String zip;

@Override

public String toString() {

return "Address [fLine=" + fLine + ", city=" + city + ", state="

+ state + ", zip=" + zip + "]";

}

public String getfLine() {

return fLine;

}

public void setfLine(String fLine) {

this.fLine = fLine;

}

public String getCity() {

return city;

}

public void setCity(String city) {

this.city = city;

}

public String getState() {

return state;

}

public void setState(String state) {

this.state = state;

}

public String getZip() {

return zip;

}

public void setZip(String zip) {

this.zip = zip;

}

// public static void main(String ...a){

// System.out.println("ji");

// }

}

For 2:

package university.beans;

import university.interfaces.Employee;

public class Faculty extends Person implements Employee{

private String major;

@Override

public int salary() {

// TODO Auto-generated method stub

return 0;

}

}

For 3:

package university.beans;

import java.util.Date;

public abstract class Person {

private String firstName;

private String middleName;

private String lastName;

private Date dateOfBirth;

private String gender;

private Address address;

public String getFirstName() {

return firstName;

}

public void setFirstName(String firstName) {

this.firstName = firstName;

}

public String getMiddleName() {

return middleName;

}

public void setMiddleName(String middleName) {

this.middleName = middleName;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public Date getDateOfBirth() {

return dateOfBirth;

}

public void setDateOfBirth(Date dateOfBirth) {

this.dateOfBirth = dateOfBirth;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

public Address getAddress() {

return address;

}

public void setAddress(Address address) {

this.address = address;

}

@Override

public String toString() {

return "Person [firstName=" + firstName + ", middleName=" + middleName

+ ", lastName=" + lastName + ", dateOfBirth=" + dateOfBirth

+ ", gender=" + gender + ", address=" + address + "]";

}

}

For 4:

package university.beans;

import university.interfaces.Employee;

public class Staff extends Person implements Employee{

private String departMentOfEmployment;

@Override

public int salary() {

// TODO Auto-generated method stub

return 0;

}

}

For 5:

package university.beans;

public class Student extends Person{

private String currentSemester;

private int creditsCompleted;

private String graduationStatus;

private String phdStatus;

private int creditsEnrolledIn;

public Student(String currentSemester, int creditsCompleted,

String graduationStatus, String phdStatus, int creditsEnrolledIn) {

super();

this.currentSemester = currentSemester;

this.creditsCompleted = creditsCompleted;

this.graduationStatus = graduationStatus;

this.phdStatus = phdStatus;

this.creditsEnrolledIn = creditsEnrolledIn;

}

public String status(){

String result="NA";

if("graduate".equals(getGraduationStatus())){

if("masters".equals(getPhdStatus())){

result="masters";

}else if("doctoral".endsWith(getPhdStatus())){

result="doctoral";

}

}else if ("undergraduate".equals(getGraduationStatus())){

result = getCreditsCompleted()+"";

}else{

result="special";

}

return result;

}

public boolean isFullTime(){

boolean fullTimeIndicator=false;

if ("undergraduate".equals(getGraduationStatus())){

if(getCreditsEnrolledIn() >= 12)

fullTimeIndicator=true;

}else if("graduate".equals(getGraduationStatus())){

if("doctoral".endsWith(getPhdStatus()) || ("masters".equals(getPhdStatus())&& getCreditsCompleted() >=6)){

fullTimeIndicator=true;

}

}

return fullTimeIndicator;

}

public String getCurrentSemester() {

return currentSemester;

}

public void setCurrentSemester(String currentSemester) {

this.currentSemester = currentSemester;

}

public int getCreditsCompleted() {

return creditsCompleted;

}

public void setCreditsCompleted(int creditsCompleted) {

this.creditsCompleted = creditsCompleted;

}

public String getGraduationStatus() {

return graduationStatus;

}

public void setGraduationStatus(String graduationStatus) {

this.graduationStatus = graduationStatus;

}

public String getPhdStatus() {

return phdStatus;

}

public void setPhdStatus(String phdStatus) {

this.phdStatus = phdStatus;

}

public int getCreditsEnrolledIn() {

return creditsEnrolledIn;

}

public void setCreditsEnrolledIn(int creditsEnrolledIn) {

this.creditsEnrolledIn = creditsEnrolledIn;

}

@Override

public String toString() {

return "Student [currentSemester=" + currentSemester

+ ", creditsCompleted=" + creditsCompleted

+ ", graduationStatus=" + graduationStatus + ", phdStatus="

+ phdStatus + ", creditsEnrolledIn=" + creditsEnrolledIn + "]";

}

}

For 6:

package university.interfaces;

public interface Administrator extends Employee {

public String position();

}

For 7:

package university.interfaces;

public interface Employee {

public int salary();

}

For 8:

package university.interfaces;

public interface Instructor extends Employee {

public int creditsTaught();

}

For 9:

package university;

import university.beans.Person;

import university.beans.Student;

public class UniversityMainDriver {

public static void main(String... args){

Person[] personArray = new Person[10];

Student s1= new Student("01", 02, "undergraduate", "NA", 12);

Student s2= new Student("04", 07, "graduate", "masters", 12);

Student s3= new Student("06", 12, "graduate", "doctoral", 03);

Student s4= new Student("01", 02, "NA", "NA", 06);

personArray[0]=s1;

personArray[1]=s2;

personArray[2]=s3;

personArray[3]=s4;

}

}