============================================================
 ABSTRACT BASE CLASSES — PAYMENT PROCESSOR - Demo Run
============================================================

--- Attempting to instantiate the abstract base directly ---
  Correctly raised TypeError: Can't instantiate abstract class PaymentProcessor without an implementation for abstract methods 'get_transaction_fee', 'process_payment', 'refund'

--- Incomplete subclass (missing a required abstract method) ---
  Correctly raised TypeError: Can't instantiate abstract class BrokenProcessor without an implementation for abstract method 'refund'

--- Concrete processors working correctly ---
  Charged $100.00 to credit card (Alice's Visa)
  Charged $100.00 via PayPal (Bob's PayPal)
  Transferred $100.00 via bank transfer (Carol's Checking)

============================================================
 Assignment: polymorphic checkout() with per-processor transaction fees
============================================================
Charged $250.00 to credit card (Alice's Visa)
  Fee: $7.55  |  Total charged: $257.55

Charged $250.00 via PayPal (Bob's PayPal)
  Fee: $8.99  |  Total charged: $258.99

Transferred $250.00 via bank transfer (Carol's Checking)
  Fee: $1.50  |  Total charged: $251.50

