Solution: "Has an" association
Completion requirements

UML class and object diagrams: School, SchoolClass, User
User.py
Unchanged:
class User: # class definition
def __init__(self, surname, firstname, dateOfBirth): # constructor
self.__surname = surname # private properties/attributes
self.__firstname = firstname
self.__password = firstname[0] + surname[0] + dateOfBirth # assembling of initial password
self.__dateOfBirth = dateOfBirth
self.__username = surname
def getSurname(self): # getter methods
return self.__surname
def getFirstname(self):
return self.__firstname
def getPassword(self):
return self.__password
def getDateOfBirth(self):
return self.__password
def getUsername(self):
return self.__password
School.py
Class SchoolClass had to be extended:
class School:
def __init__(self,schoolClasses):
self.__schoolClasses = schoolClasses
def getSchoolClasses(self):
return self.__schoolClasses
def addSchoolClass(self, schoolClass): # adds a school class to school
self.__schoolClasses.append(schoolClass)
class SchoolClass:
def __init__(self,name, users):
self.__name = name
self.__users = users # list with users
def getName(self):
return self.__name
def getUsers(self):
return self.__users
def addUser(self, user): # adds a user to school class
self.__users.append(user)
testSchoolClasses.py
The main program:
from School import * # Import classes
from User import User
schoolClass1 = SchoolClass("c1",[]) # Creation of some objects
schoolClass2 = SchoolClass("c2",[])
user1 = User("Miller","Sam","22.11.2004")
user2 = User("Smith","Jake","13.02.2003")
user3 = User("Hampton","Oliver","11.01.2004")
school = School([schoolClass1, schoolClass2]) # realize concrete associations
schoolClass1.addUser(user1)
schoolClass1.addUser(user2)
schoolClass2.addUser(user3)
schoolClasses = school.getSchoolClasses() # nested For loop iterates over nested list
for sc in schoolClasses:
print(f"School class: {sc.getName()}") # new Python f-strings (formatted strings)
users = sc.getUsers()
for user in users:
print(f"\t{user.getSurname()}, {user.getFirstname()}")
Output
School class: c1
Miller, Sam
Smith, Jake
School class: c2
Hampton, Oliver
Last modified: Monday, 21 October 2019, 10:45 AM