Records contain a number of attributes.
An object contains attributes, and functions (called methods) to get or set these attributes.
UML Diagram for Example
Computer has a fixed ID and type. It has an operating system that can be updated.
Phone is a subclass type of computer, with an additional attribute and methods.
Computer <----- Phone ---------- ---------- - id : string; - operator : string; - type : string; ---------- - os: string; + getOperator() ---------- + changeOperator() + getID() + getType() + getOS() + updateOS()
#define a new class class Computer(): # constructor method with parameters def __init__(self, id, type, os): #assign parameter values to object attributes self.id = id self.type = type self.os = os #initial attributes can be manipulated self.id = self.id.upper() # some attributes have default values self.previousOS = [] #str method provides formatted output for print commands def __str__(self): str = f"ID: {self.id:15} " str += f"Type: {self.type:10} " str += f"OS: {self.os}" str += f"\nPrevious OS: {self.previousOS}" return str # methods to get values of attributes (getters) def getID(self): return self.id def getType(self): return self.type def getOS(self): return self.os def getPreviousOS(self): return self.previousOS # methods to update attributes (setters) def updateOS(self, newOS): self.previousOS.append(self.os) self.os = newOS # MAIN PROGRAM # instantiation of an object of the class computer1 = Computer("AHS1913013","Desktop","Windows Vista") print(computer1) #use a setter method computer1.updateOS("Windows 10 Professional") print(computer1) #use getter methods id = computer1.getID() type = computer1.getType() print(f"Computer {id} is {type}")
ID: AHS1913013 Type: Desktop OS: Windows Vista Previous OS: [] ID: AHS1913013 Type: Desktop OS: Windows 10 Professional Previous OS: ['Windows Vista'] Computer AHS1913013 is Desktop
# new class Phone is a subclass of Computer class Phone(Computer): # polymorphism 1 def __init__(self, id, os, operator): # call superclass contructor super().__init__(id, "Phone", os) # add subclass specific attributes self.operator = operator # polymorphism 2 # used instead of superclass' method def __str__(self): str = f"ID: {self.id:15} " str += f"Type: {self.type:10} " str += f"OS: {self.os:10} " str += f"Operator: {self.operator}" str += f"\nPrevious OS: {self.previousOS}" return str def getOperator(self): return self.operator def changeOperator(self, newOperator): self.operator = newOperator # MAIN PROGRAM computer1 = Computer("AHS1913013","Desktop","Windows Vista") print(computer1) phone1 = Phone("XYZ1234567","Android 8","EE") print(phone1)
ID: AHS1913013 Type: Desktop OS: Windows Vista Previous OS: [] ID: XYZ1234567 Type: Phone OS: Android 8 Operator: EE Previous OS: []