Sobes.tech
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:

  1. Class File — represents a file with attributes (name, size, type, content).
  2. Class User — represents a user who can upload and download files.
  3. Class FileManager — responsible for file operations: upload, storage, deletion, search.
  4. 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.