Junior — Middle
How can class interactions be organized when implementing a file sharing system?
sobes.tech AI
Answer from AI
To organize class interactions in a file sharing system, the following approach can be used:
- Class File — represents a file with attributes (name, size, type, content).
- Class User — represents a user who can upload and download files.
- Class FileManager — responsible for file operations: upload, storage, deletion, search.
- Class NetworkHandler — manages file transfer between users or servers.
Interaction example:
- A user calls the upload method on FileManager.
- FileManager saves the File object and updates the user's file list.
- For file transfer, NetworkHandler establishes a connection and sends data.
Example in Python:
class File:
def __init__(self, name, content):
self.name = name
self.content = content
class User:
def __init__(self, username):
self.username = username
self.files = []
def upload_file(self, file, file_manager):
file_manager.store_file(self, file)
class FileManager:
def __init__(self):
self.storage = {}
def store_file(self, user, file):
self.storage[file.name] = file
user.files.append(file)
class NetworkHandler:
def send_file(self, file, recipient):
print(f"Sending {file.name} to {recipient.username}")
# Usage
fm = FileManager()
user1 = User('Alice')
user2 = User('Bob')
file = File('doc.txt', 'Hello World')
user1.upload_file(file, fm)
network = NetworkHandler()
network.send_file(file, user2)
This separation of responsibilities simplifies system maintenance and expansion.