Loading...
For each class, define the attributes (data) it will hold and the methods (functions) that operate on the attributes. Ensure they align with the object's responsibilities and adhere to the principle of encapsulation.
class PermissionLevel(Enumeration):
HIGH = 0,
MEDIUM = 1,
LOW = 2,
class FileSystem:
def init(self):
self.rootDirectory = Directory("ROOT")
def createFile(self, currentDirectory, fileName, fileType, permissionLevel)):
newfile = File(fileName, fileType, permissionLevel)
currentDirectory.addFile(newFile)
def deleteFile(self, currentDirectory, fileName):
currentDirectory.removeFile(fileName)
def openFile(self, currentDirectory, fileName, User):
foundFile= currentDirectory.getFile(fileName)
if User.permissionLevel.value >= foundFile.permissionLevel.value:
foundFile.openFile()
def openDirectory(self, currentDirectory, directoryName, User):
foundDirectory = currentDirectory.getDirectory(directoryName)
if User.permissionLevel.value >= foundDirectory.permissionLevel.value:
foundDirectory.openDirectory()
def createDirectory(self, currentDirectory, directoryName, fileType):
newDirectory = Directory(directoryName)
currentDirectory.addDirectory(newDirectory)
def deleteDirectory(self, currentDirectory, fileName):
currentDirectory.removeDirectory(fileName)
class Directory:
def init(self, directoryName):
self.directoryName = directoryName
self.directories = {}
self.files = {}
def addFile(self, file):
if File.fileName in self.files:
return False
self.files[file.fileName] = File
return True
def addDirectory(self, directory):
if directory.DirectoryName in self.directories:
return False
self.directories[directory.directoryName] = directory
return True
def removeFile(self, fileName):
if fileName in self.files:
del self.files[fileName]
return True
return False
def removeDirectory(self, directoryName):
if directoryName in self.directories:
del self.directories[directoryName]
return True
return False
def getFile(self, fileName):
if fileName not in self.files:
throw error
return self.files[fileName]
def getDirectory(self, directoryName):
if directoryName not in self.directories:
throw error
return self.files[directoryName]
class User:
def init(self, FirstName, LastName, PermissionLevel):
self.firstName = FirstName
self.lastName = LastName
self.permissionLevel = PermissionLevel
class File:
def init(self, FileName, FileType, PermissionLevel, FileContent=None):
self.fileName = FileName
self.fileType = FileType
self.fileContent = FileContent
self.permissionLevel = PermissionLevel
def openFile(self):
# file opener logic
Explain design tradeoffs you considered. Check and explain whether your design adheres to SOLID principles. Explain how your design can handle changes in scale and whether it would be easy to extend with new functionalities. Identify areas for future improvement...