+ All Categories
Home > Documents > Föreläsning 7

Föreläsning 7

Date post: 13-Jan-2016
Category:
Upload: kera
View: 44 times
Download: 0 times
Share this document with a friend
Description:
Föreläsning 7. Klasser och annat: ett exempel. Klassen Course. class Course(object): def __init__(self, code, name, points): self.code = code self.name = name self.points = points def shortString(self): return "%s %s %s hp" % \ (self.code, self.name, self.points). - PowerPoint PPT Presentation
23
1 Föreläsning 7 Klasser och annat: ett exempel
Transcript
Page 1: Föreläsning 7

1

Föreläsning 7

Klasser och annat: ett exempel

Page 2: Föreläsning 7

2

Klassen Course

class Course(object):

def __init__(self, code, name, points):self.code = codeself.name = nameself.points = points

def shortString(self):return "%s %s %s hp" % \(self.code, self.name, self.points)

Page 3: Föreläsning 7

3

__str__-metoden

class Course(object):……def __str__(self):

return self.shortString()

# Create a courseprgi = Course("DD1312", "Programmeringsteknik och Matlab", 8)

Page 4: Föreläsning 7

4

Klassen Program

class Program(object):

def __init__(self, name, code, points):self.name = nameself.code = codeself.points = pointsself.compulsoryCourses = []

def shortString(self): return "%s (%s) %d hp" % \

(self.name, self.code, self.points)

Page 5: Föreläsning 7

5

En hjälpfunktion

def makeInfoString(myList):

infoString = ""

for element in myList:

infoString += \

element.shortString() + "\n"

return infoString

Page 6: Föreläsning 7

6

Klassen Program

def __str__(self):

infoString = self.shortString()

infoString += \

"\nCompulsory courses:\n" + \

makeInfoString(self.compulsoryCourses)

return infoString

def addCompulsoryCourse(self, course):

self.compulsoryCourses.append(course)

Page 7: Föreläsning 7

7

Klassen CourseClassclass CourseClass(object):

def __init__(self, course, year, period, teacher):self.course = courseself.year = yearself.period = periodself.teacher = teacherself.students = []

def shortString(self):return self.course.shortString() + \

" %s %s given by:\n%s" % \ (self.period, self.year, self.teacher)

Page 8: Föreläsning 7

8

Klassen CourseClass

def __str__(self):infoString = self.shortString()infoString += \ "\nThe class has the “ + \

”following students:\n“infoString += \

makeInfoString(self.students)return infoString

def addStudent(self, student):self.students.append(student)

Page 9: Föreläsning 7

9

Klassen Personclass Person(object):

def __init__(self, name, surname, persnr,address, postalcode, city,country = "Sweden", email = None):

self.name = nameself.surname = surnameself.persnr = persnrerrorString = "Not a valid personnummer! " + \

"(checksum should be %d)" % self.persnrChecksum() if not self.verifyPersnr():

raise ValueError(errorString) self.address = addressself.postalcode = postalcodeself.city = cityself.country = countryself.email = email

Page 10: Föreläsning 7

10

Klassen Persondef __str__(self):

infoString = "Name:\t%s %s\nPersnr:\t%s\n" % \(self.name, self.surname, self.persnr)

infoString += "Address:\n\t%s\n\t%s %s\n\t%s" % \(self.address, self.postalcode,self.city, self.country)

if self.email != None:infoString += "\nEmail: %s\n" % self.email

return infoString

def getBirthYear(self):birthDigits = self.persnr[0:2]birthYear = 1900 + int(birthDigits)return birthYear

Page 11: Föreläsning 7

11

Klassen Person

def getAge(self):dateToday = datetime.date.today()thisYear = dateToday.yearreturn thisYear - self.getBirthYear()

def getGender(self):genderNumber = int(self.persnr[9]) % 2if genderNumber == 1:

return "male“else:

return "female"

Page 12: Föreläsning 7

12

Klassen Persondef sumDigitsInStr(str):

sum = 0for d in str:

sum += int(d)return sum

sumDigitsInStr = staticmethod(sumDigitsInStr)

def persnrChecksum(self):noDashContrPersnr = self.persnr[0:6] + self.persnr[7:10]expandedString = ""for i in range(9):if i % 2 == 0:

expandedString += str(2 * int(noDashContrPersnr[i]))else:

expandedString += noDashContrPersnr[i]return Person.sumDigitsInStr(expandedString) % 10

Page 13: Föreläsning 7

13

Klassen Person

def verifyPersnr(self):if len(self.persnr) != 11 \

or self.persnr[6] != "-":return false

try:int(self.persnr[0:6])int(self.persnr[7:11])

except:return false

return self.persnrChecksum()\== int(self.persnr[10])

Page 14: Föreläsning 7

14

Klassen Teacherclass Teacher(Person):

def __init__(self, name, surname, persnr, room,address, postalcode, city,country = "Sweden"):

super(Teacher, self).__init__(name, surname,persnr, address,postalcode, city,country)

self.room = room

def __str__(self):infoString = super(Teacher, self).__str__()infoString += "\nRoom:\t%s" % self.roomreturn infoString

Page 15: Föreläsning 7

15

Klassen Student

class Student(Person):def __init__(self, name, surname,

persnr, address,postalcode, city,country = "Sweden",email = None):

super(Student, self).__init__(name,surname, persnr, address,

postalcode,city, country, email)

self.currentCourseClasses = []self.finishedCourseClasses = []

Page 16: Föreläsning 7

16

Klassen Student

def __str__(self):infoString = \

super(Student, self).__str__()infoString += "\n\nFinished courses:\n“infoString += \

makeInfoString(self.finishedCourseClasses)infoString += "\nCurrent courses:\n“infoString +=\

makeInfoString(self.currentCourseClasses)return infoString

Page 17: Föreläsning 7

17

Klassen Student

def addCourseClass(self, courseClass):self.currentCourseClasses.append(courseClass)courseClass.addStudent(self)

def finishCourseClass(self, code):for courseClass in self.currentCourseClasses:

if courseClass.course.code == code:self.finishedCourseClasses.\

append(courseClass)self.currentCourseClasses.\

remove(courseClass)return

Page 18: Föreläsning 7

18

Klassen Student

def getPoints(self):points = 0for courseClass in self.finishedCourseClasses:

points += courseClass.course.pointsreturn points

Page 19: Föreläsning 7

19

Att använda klassernafrom student import Program, Course, CourseClass, Person, Student, Teacher

# Create programindEk = Program("Industriell ekonomi", "I", 180)

# Create some coursesprgi = Course("DD1312", "Programmeringsteknik och Matlab", 8)envarre = Course("MM0001", "Analys i en variabel", 10)makro = Course("EE0034", "Makroekonomi", 10)

print prgiprint "“

indEk.addCompulsoryCourse(prgi)indEk.addCompulsoryCourse(envarre)indEk.addCompulsoryCourse(makro)

print indEk

Page 20: Föreläsning 7

20

Att använda klasserna

# Create a personsven = Person("Sven", "Svensson",

"750312-0324","Teknikhuset 4","00000", "Stockholm")

print svenprint "Age: %d" % sven.getAge()print "Gender: %s" % sven.getGender()print "Birth year: %d" %\

sven.getBirthYear()print ""

Page 21: Föreläsning 7

21

Att använda klasserna# Create some teachersdouglas = Teacher("Douglas", "Wikström", "750123-0717",

"1443","Teknikgatan 23", "12345", "Stockholm")micke = Teacher("Mikael", "Goldmann", "731203-1324",

"1444", "Teknikvägen 5", "54321", "Stockholm")stina = Teacher("Stina", "Bengtsson", "711103-1220",

"1447", "Teknikvägen 7", "21123", "Stockholm")

print douglasprint ""print mickeprint ""print stinaprint ""

Page 22: Föreläsning 7

22

Att använda klasserna

# Create some course classesprgi07 = CourseClass(prgi, 2007, "ht", douglas)makro06 = CourseClass(makro, 2006, "vt", micke)makro05 = CourseClass(makro, 2005, "vt", douglas)envarre07 = CourseClass(envarre, 2007, "ht", stina)

Page 23: Föreläsning 7

23

Att använda klasserna# Create some studentsolle = Student("Olle", "Olsson", "840104-1515", "Ollevägen 7", "67432",

"Nacka")lisa = Student("Lisa", "Ek", "850315-1410", "Klasvägen 5", "62789",

"Örby")

olle.addCourseClass(prgi07)olle.addCourseClass(makro05)

lisa.addCourseClass(prgi07)lisa.addCourseClass(makro06)lisa.addCourseClass(envarre07)

print prgi07print ""

lisa.finishCourseClass("DD1312")lisa.finishCourseClass("MM0001")

print lisaprint ""


Recommended