UML class and object diagrams: School, SchoolClass, User

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