Design: Expense Sharing System
Design the core classes User, Group, and Expense with their relationships and basic methods. Out of scope: UI, payment integration, notifications.
Functional Requirements
Non-Functional Requirements
Jump into concepts and practice - no test required
User <-- belongs to -- Group <-- contains -- Expense User: - id - name - groups Group: - id - name - members (Users) - expenses Expense: - id - description - amount - payer (User) - participants (Users) - splits (map User to amount)
class Expense:
def __init__(self, amount, paid_by, split_between):
self.amount = amount
self.paid_by = paid_by
self.split_between = split_between
def split_amount(self):
return self.amount / len(self.split_between)
expense = Expense(120, 'Alice', ['Alice', 'Bob', 'Charlie'])
print(expense.split_amount())class Expense:
def __init__(self, amount, paid_by, split_between):
self.amount = amount
self.paid_by = paid_by
self.split_between = split_between
def split_amount(self):
return self.amount // len(self.split_between)