Pemrograman Berorientasi Objek di Python
Alex Yarosh
Content Quality Analyst @ DataCamp

# Tarik jumlah dari setiap akun dalam list_of_accounts def batch_withdraw(list_of_accounts, amount): for acct in list_of_accounts: acct.withdraw(amount)b, c, s = BankAccount(1000), CheckingAccount(2000), SavingsAccount(3000) batch_withdraw([b,c,s]) # <-- Akan menggunakan BankAccount.withdraw(), # lalu CheckingAccount.withdraw(), # lalu SavingsAccount.withdraw()
batch_withdraw() tidak perlu memeriksa objek untuk mengetahui withdraw() mana yang akan dipanggil
Kelas dasar harus dapat dipertukarkan dengan subkelasnya tanpa mengubah properti program
Di mana pun BankAccount berfungsi, CheckingAccount juga harus berfungsi

Kelas dasar harus dapat dipertukarkan dengan subkelasnya tanpa mengubah properti program
→ Ketidakcocokan Sintaksis
BankAccount.withdraw() memerlukan 1 parameter, tetapi CheckingAccount.withdraw() memerlukan 2
→ Subkelas memperkuat kondisi input
BankAccount.withdraw() menerima jumlah berapa pun, tetapi CheckingAccount.withdraw() mengasumsikan jumlah terbatas
→ Subkelas melemahkan kondisi output
BankAccount.withdraw() hanya dapat meninggalkan saldo positif atau menyebabkan kesalahan, CheckingAccount.withdraw() dapat meninggalkan saldo negatif
→ Mengubah atribut tambahan dalam metode subkelas
→ Melempar pengecualian tambahan dalam metode subkelas
$$\text{\textbf{\Huge{Tidak ada LSP -- Tidak ada Pewarisan}}}$$
Pemrograman Berorientasi Objek di Python