Created
May 19, 2017 07:44
-
-
Save CSaratakij/8c9205572e5dd1d63124d8c30fdded2f to your computer and use it in GitHub Desktop.
Refactor Ex.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Person: | |
def __init__(self, name): | |
self.name = name | |
self._address = "" | |
def getName(self): | |
return self.name | |
def getAddress(self): | |
return self._address | |
def setName(self, name): | |
self.name = name | |
def setAddress(self): | |
return self._address | |
class GradeRange: | |
def __init__(self, minimum, maximum): | |
self.minimum = minimum | |
self.maximum = maximum | |
class Course: | |
def __init__(self, name, gradeRange, teacher): | |
self.name = name | |
self.passRequirement = gradeRange | |
self.teacher = teacher | |
class StudentReport: | |
def __init__(self): | |
self.gradeOfCourse = {} | |
def addGrade(self, course, grade): | |
if not course.name in self.gradeOfCourse.keys(): | |
self.gradeOfCourse.update({ | |
course.name : grade | |
}) | |
else: | |
self.gradeOfCourse[course.name] += grade | |
def removeGrade(self, course, grade): | |
if not course.name in self.gradeOfCourse.keys(): | |
return | |
else: | |
self.gradeOfCourse[course.name] -= grade | |
def getAverage(self): | |
return sum(self.gradeOfCourse.values()) / len(self.gradeOfCourse.values()) | |
class Student(Person): | |
def __init__(self, name): | |
super().__init__(name) | |
self.report = StudentReport() | |
def enroll(self, course): | |
self.report.addGrade(course, 0) | |
def cancelCourse(self, course): | |
del self.report.gradeOfCourse[course.name] | |
def isPass(self, course): | |
return self.report.gradeOfCourse[course.name] > course.passRequirement.minimum | |
class Teacher(Person): | |
def __init__(self, name): | |
super().__init__(name) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from lib import * | |
if __name__ == "__main__": | |
teacher = Teacher("Alwin") | |
courses = [ | |
Course("Programming", | |
GradeRange(1, 4), | |
teacher | |
), | |
Course("GameDesign", | |
GradeRange(1, 4), | |
teacher | |
), | |
Course("GameArt", | |
GradeRange(1, 4), | |
teacher | |
), | |
Course("Linux", | |
GradeRange(1, 4), | |
teacher | |
) | |
] | |
student = Student("CSaratakij") | |
print("______________________________") | |
print("All Course : ") | |
print("______________________________") | |
for course in courses: | |
print(course.name, " : ", course.teacher.name) | |
print("______________________________") | |
print(student.name, " : ", "Enrolling..") | |
print("______________________________") | |
for course in courses: | |
student.enroll(course) | |
print(course.name) | |
print("______________________________") | |
student.report.addGrade(courses[0], 3.8) | |
student.report.addGrade(courses[1], 3.0) | |
student.report.addGrade(courses[2], 3.0) | |
student.report.addGrade(courses[3], 4.0) | |
print("Student Average") | |
print("______________________________") | |
print(student.report.getAverage()) | |
print("______________________________") | |
print("Is pass at Programming") | |
print("______________________________") | |
print(student.isPass(courses[0])) | |
print("______________________________") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment