Skip to content

Instantly share code, notes, and snippets.

@CSaratakij
Created May 19, 2017 07:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save CSaratakij/8c9205572e5dd1d63124d8c30fdded2f to your computer and use it in GitHub Desktop.
Save CSaratakij/8c9205572e5dd1d63124d8c30fdded2f to your computer and use it in GitHub Desktop.
Refactor Ex.
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)
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