Rangkuman: Kalkulator Sederhana
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Python di Coddy. Pelajaran 8 dari 64.
Tantangan
SedangClass Calculator milikmu di calculator.py harus:
- Memiliki constructor yang menginisialisasi atribut
resultdengan nilai 0 - Menyertakan method untuk
add,subtract,multiply, dandivide, yang masing-masing:- Menerima angka sebagai argumen
- Melakukan operasi antara
resultsaat ini dan angka tersebut - Memperbarui atribut
result - Mengembalikan result yang baru
- Menyertakan method
clearyang mengatur ulangresultmenjadi 0 - Menyertakan method
get_resultyang mengembalikan result saat ini - Untuk method
divide, kamu harus menangani pembagian dengan nol dengan cara:- Memeriksa apakah angka yang diberikan sama dengan 0
- Jika nilainya nol, cetak persis: "Error: Division by zero"
- Jangan ubah atribut
resultdalam kasus ini - Kembalikan nilai
resultyang tidak berubah
File driver.py akan mengimpor class Calculator milikmu dan mengujinya dengan kode yang mirip dengan ini:
from calculator import Calculator
calc = Calculator()
calc.add(5) # result becomes 5
calc.multiply(3) # result becomes 15
calc.subtract(2) # result becomes 13
calc.divide(0) # prints "Error: Division by zero", result remains 13
calc.divide(2) # result becomes 6.5
calc.clear() # result becomes 0Ikuti komentar TODO di file calculator.py untuk menerapkan semua fungsi yang diperlukan.
Coba sendiri
from calculator import Calculator
# Penangan kasus uji
test_case = input()
if test_case == "constructor_test":
# Uji pembuatan kalkulator dan keadaan awalnya
calc = Calculator()
print(f"Initial result: {calc.get_result()}")
print("Calculator created successfully")
elif test_case == "addition_test":
# Uji fungsi penjumlahan
calc = Calculator()
result1 = calc.add(10)
print(f"After adding 10: {result1}")
result2 = calc.add(5)
print(f"After adding 5: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "subtraction_test":
# Uji fungsi pengurangan
calc = Calculator()
calc.add(20) # Mulai dengan 20
result1 = calc.subtract(8)
print(f"After subtracting 8 from 20: {result1}")
result2 = calc.subtract(2)
print(f"After subtracting 2: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "multiplication_test":
# Uji fungsi perkalian
calc = Calculator()
calc.add(5) # Mulai dengan 5
result1 = calc.multiply(4)
print(f"After multiplying by 4: {result1}")
result2 = calc.multiply(2)
print(f"After multiplying by 2: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "division_test":
# Uji fungsi pembagian
calc = Calculator()
calc.add(100) # Mulai dengan 100
result1 = calc.divide(4)
print(f"After dividing by 4: {result1}")
result2 = calc.divide(5)
print(f"After dividing by 5: {result2}")
print(f"Final result: {calc.get_result()}")
elif test_case == "division_by_zero_test":
# Uji penanganan error pembagian dengan nol
calc = Calculator()
calc.add(50)
print(f"Initial value: {calc.get_result()}")
result = calc.divide(0) # Seharusnya mencetak pesan error
print(f"Result after division by zero: {result}")
print(f"Value unchanged: {calc.get_result()}")
elif test_case == "clear_test":
# Uji fungsi clear
calc = Calculator()
calc.add(25)
calc.multiply(3)
print(f"Before clear: {calc.get_result()}")
result = calc.clear()
print(f"After clear: {result}")
print(f"Current result: {calc.get_result()}")
elif test_case == "comprehensive_test":
# Uji semua operasi secara berurutan
calc = Calculator()
# Lakukan serangkaian operasi
calc.add(10) # result = 10
calc.multiply(3) # result = 30
calc.subtract(5) # result = 25
calc.divide(5) # result = 5
print(f"After sequence of operations: {calc.get_result()}")
# Uji penanganan error
calc.divide(0) # Seharusnya mencetak error
print(f"After division by zero attempt: {calc.get_result()}")
# Hapus hasilnya dan mulai lagi dari awal
calc.clear()
calc.add(100)
print(f"After clear and add 100: {calc.get_result()}")
else:
print("Unknown test case")
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPclass vs objectParameter selfmethodAtributMethod Konstruktor (__init__)Rangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan DasarFungsi super()Penimpaan MethodPewarisan BergandaUrutan Resolusi MethodRingkasan: Hierarki Karyawan5Polimorfisme
Meninjau Ulang Method OverridingDuck Typingclass dan method AbstrakDesain InterfaceRingkasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanMixinsMetode Statis dan Metode ClassDecorator ClassPengelola Konteks11Pola Desain Bagian 2
Pola PerintahPola AdapterPola DecoratorPola Template MethodPola StatePola Composite3Property class
Variabel instance vs variabel classDekorator propertyAtribut privatRangkuman: Pengelola Rekening Bank6Enkapsulasi
Anggota Public, Protected, PrivateModifier AksesPenyembunyian InformasiDecorator Property Tingkat LanjutUlasan: Sistem Catatan Siswa12Proyek: Manajemen Perpustakaan
Ikhtisar Proyekclass Buku dan PenggunaSistem PeminjamanFitur PencarianAntarmuka AdminPengujian dan IntegrasiLatihan sendiri: Compiler Python online