Object desing problem for simple school application

Posted by Aragornx on Programmers See other posts from Programmers or by Aragornx
Published on 2012-12-05T13:14:51Z Indexed on 2012/12/05 17:26 UTC
Read the original article Hit count: 177

Filed under:
|
|

I want to create simple school application that provides grades,notes,presence,etc. for students,teachers and parents. I'm trying to design objects for this problem and I'm little bit confused - because I'm not very experienced in class designing. Some of my present objects are :

class PersonalData() {
    private String name;
    private String surename;
    private Calendar dateOfBirth;
    [...]
}

class Person {
    private PersonalData personalData;
}

class User extends Person {
    private String login;
    private char[] password;
}

class Student extends Person {
    private ArrayList<Counselor> counselors = new ArrayList<>();
}

class Counselor extends Person {
    private ArrayList<Student> children = new ArrayList<>();
}

class Teacher extends Person {
    private ArrayList<ChoolClass> schoolClasses = new ArrayList<>();
    private ArrayList<Subject> subjects = new ArrayList<>();
}

This is of course a general idea. But I'm sure it's not the best way. For example I want that one person could be a Teacher and also a Parent(Counselor) and present approach makes me to have two Person objects. I want that user after successful logging in get all roles that it has (Student or Teacher or (Teacher & Parent) ). I think I should make and use some interfaces but I'm not sure how to do this right. Maybe like this:

interface Role {
}

interface TeacherRole implements Role {
    void addGrade( Student student, Grade grade, [...] );
}

class Teacher implements TeacherRole {
    private Person person;
    [...]
}

class User extends Person{
    ArrayList<Role> roles = new ArrayList<>();
}

Please if anyone could help me to make this right or maybe just point me to some literature/article that covers practical objects design.

© Programmers or respective owner

Related posts about java

Related posts about object-oriented-design