Diciamo che vogliamo fornire un'astrazione di un "account" in una banca. Ecco un approccio, utilizzando un oggetto function
in Python:
def account():
"""Return a dispatch dictionary representing a bank account.
>>> a = account()
>>> a['deposit'](100)
100
>>> a['withdraw'](90)
10
>>> a['withdraw'](90)
'Insufficient funds'
>>> a['balance']
10
"""
def withdraw(amount):
if amount > dispatch['balance']:
return 'Insufficient funds'
dispatch['balance'] -= amount
return dispatch['balance']
def deposit(amount):
dispatch['balance'] += amount
return dispatch['balance']
dispatch = {'balance': 0,
'withdraw': withdraw,
'deposit': deposit}
return dispatch
Ecco un altro approccio che utilizza l'astrazione del tipo (ad es., class
keyword in Python):
class Account(object):
"""A bank account has a balance and an account holder.
>>> a = Account('John')
>>> a.deposit(100)
100
>>> a.withdraw(90)
10
>>> a.withdraw(90)
'Insufficient funds'
>>> a.balance
10
"""
def __init__(self, account_holder):
self.balance = 0
self.holder = account_holder
def deposit(self, amount):
"""Add amount to balance."""
self.balance = self.balance + amount
return self.balance
def withdraw(self, amount):
"""Subtract amount from balance if funds are available."""
if amount > self.balance:
return 'Insufficient funds'
self.balance = self.balance - amount
return self.balance
Il mio insegnante ha iniziato l'argomento "Programmazione orientata agli oggetti" introducendo la parola chiave class
e mostrandoci questi punti elenco:
Object-oriented programming
A method for organizing modular programs:
- Abstraction barriers
- Message passing
- Bundling together information and related behavior
Pensi che il primo approccio sarebbe sufficiente per soddisfare la definizione di cui sopra? Se sì, perché abbiamo bisogno della parola chiave class
per la programmazione orientata agli oggetti?