Class1 (Person)
-name: String
-address:String
Methods:
+Person(name: String, address : String)
+getName():Stringg
+getAddress():String
+setAddress (address: String) : void
+toString():String ---->"name (address) "
Class2 (Student)
-numCourses: int = 0
-courses : String[] = {}
-grades: int[] = {}
Methods:
+Student (name: String,address:String)
+tostring(): String
+addCourseGrade (course : String,grade:int) : void
+printGrades (): void
+getAverageGrade (): double
+toString() : String ---->"Student:name(address)"
Class3 (Teacher)
- numCourses: int = 0
-courses:String[] = {}
Methods:
+Teacher(name: String,address: String)
+tostring():String
+addCourse(course : String): boollean ----> Return false if the course already existed
+removeCourse(course : String) : boolean ----> Return false if the course does not exist
+toString():String -----> "Teacher: name
•••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
Hint:
/**
* The superclass Person has name and address.
*/
public class Person {
// private instance variables
private String name, address;
/** Constructs a Person instance with the given name and address */
public Person(String name, String address) {
// use this keyword
}
// Getters and Setters
/** Returns the name */
public String getName() {
//
}
/** Returns the address */
public String getAddress() {
//
}
/** Sets the address */
public void setAddress(String address) {
//
}
/** Returns a self-descriptive string */
@Override
public String toString() {
//
}
}
/**
* The Student class, subclass of Person.
*/
public class Student extends Person {
// private instance variables
private int numCourses; // number of courses taken so far
private String[] courses; // course codes
private int[] grades; // grade for the corresponding course codes
private static final int MAX_COURSES = 30; // maximum number of courses
/** Constructs a Student instance with the given name and address */
public Student(String name, String address) {
super(___, _____);
numCourses = 0;
courses = new String[MAX_COURSES];
grades = new int[MAX_COURSES];
}
/** Returns a self-descriptive string */
@Override
public String toString() {
// print using super method
}
/** Adds a course and its grade - No input validation */
public void addCourseGrade(String course, int grade) {
courses[numCourses] = course;
grades[numCourses] = grade;
++numCourses;
}
/** Prints all courses taken and their grade */
public void printGrades() {
System.out.print(this);
for (int i = 0; i < numCourses; ++i) {
System.out.print(" " + courses[i] + ":" + grades[i]);
}
System.out.println();
}
/** Computes the average grade */
public double getAverageGrade() {
int sum = 0;
for (int i = 0; i < numCourses; i++ ) {
sum += grades[i];
}
return (double)sum/numCourses;
}
}
/**
* The Teacher class, subclass of Person.
*/
public class Teacher extends Person {
// private instance variables
private int numCourses; // number of courses taught currently
private String[] courses; // course codes
private static final int MAX_COURSES = 5; // maximum courses
/** Constructs a Teacher instance with the given name and address */
public Teacher(String name, String address) {
super(____, _____);
numCourses = 0;
courses = new String[MAX_COURSES];
}
/** Returns a self-descriptive string */
@Override
public String toString() {
return "Teacher: " + super.toString();
}
/** Adds a course. Returns false if the course has already existed */
public boolean addCourse(String course) {
// Check if the course already in the course list
for (int i = 0; i < numCourses; i++) {
if (courses[i].equals(course)) return false;
}
courses[numCourses] = course;
numCourses++;
return true;
}
/** Removes a course. Returns false if the course cannot be found in the course list */
public boolean removeCourse(String course) {
boolean found = false;
// Look for the course index
int courseIndex = -1; // need to initialize
for (int i = 0; i < numCourses; i++) {
if (courses[i].equals(course)) {
courseIndex = i;
found = true;
break;
}
}
if (found) {
// Remove the course and re-arrange for courses array
for (int i = courseIndex; i < numCourses-1; i++) {
courses[i] = courses[i+1];
}
numCourses--;
return true;
} else {
return false;
}
}
}
/**
* A test driver for Person and its subclasses.
*/
public class TestPerson {
public static void main(String[] args) {
/* Test Student class */
Student s1 = new Student("_____", "______");
s1.addCourseGrade("_____", _____);
s1.addCourseGrade("______", _______);
s1.printGrades();
System.out.println("Average is " + s1.getAverageGrade());
//Average is _____
/* Test Teacher class */
Teacher t1 = new Teacher("____", "______");
System.out.println(t1);
//Teacher: __________
String[] courses = {"IM101", "IM102", "IM101"};
for (String course: courses) {
if (t1.addCourse(course)) {
System.out.println(course + " added");
} else {
System.out.println(course + " cannot be added");
}
}
//IM101 added
//IM102 added
//IM101 cannot be added
for (String course: courses) {
if (t1.removeCourse(course)) {
System.out.println(course + " removed");
} else {
System.out.println(course + " cannot be removed");
}
}
//IM101 removed
//IM102 removed
//IM101 cannot be removed
}
}