Ringkasan: Kalkulator Sederhana
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 9 dari 110.
Tantangan
SedangBuat class Calculator lengkap di calculator.dart yang menggabungkan semua yang sudah kamu pelajari. File driver.dart akan mengimpor dan menguji class-mu.
Class Calculator-mu harus menunjukkan semua topik yang dibahas dalam module ini:
- File Eksternal:
calculator.dartakan diimpor olehdriver.dartmenggunakanimport 'calculator.dart'; - Library & Impor:
driver.dartmenggunakanimport 'dart:io'; - Pengantar OOP: Definisikan
class Calculatordan buat object denganCalculator() - Class vs Object: Setiap kasus uji membuat object
Calculatorbaru dengan state mandiri - Kata Kunci this: Gunakan
this.resultdi dalam semua method untuk mengakses variabel instance - Method: Implementasikan
add,subtract,multiply,divide,clear, dangetResult - Variabel Instance: Deklarasikan
int result = 0sebagai variabel instance - Dasar Constructor: Tambahkan constructor
Calculator()yang menetapkanresultke0dan mencetak'Calculator ready'
Persyaratan method:
int add(int number): menambahkannumberkeresult, lalu mengembalikan result baruint subtract(int number): mengurangiresultdengannumber, lalu mengembalikan result baruint multiply(int number): mengalikanresultdengannumber, lalu mengembalikan result baruint divide(int number): membagiresultdengannumbermenggunakan pembagian integer (~/=), lalu mengembalikan result baru. Jikanumberadalah0, cetak tepat'Error: Division by zero'dan kembalikan result tanpa perubahanvoid clear(): mengatur ulangresultke0int getResult(): mengembalikanresultsaat ini
Contoh penggunaan:
Calculator calc = Calculator(); // prints: Calculator ready
calc.add(10); // result = 10
calc.multiply(3); // result = 30
calc.subtract(5); // result = 25
calc.divide(5); // result = 5
calc.divide(0); // prints: Error: Division by zero
calc.clear(); // result = 0Coba sendiri
import 'calculator.dart';
import 'dart:io';
void main() {
String testCase = stdin.readLineSync()!;
if (testCase == 'constructor_test') {
Calculator calc = Calculator();
print('Initial result: ${calc.getResult()}');
print('Calculator created successfully');
} else if (testCase == 'addition_test') {
Calculator calc = Calculator();
int r1 = calc.add(10);
print('After adding 10: $r1');
int r2 = calc.add(5);
print('After adding 5: $r2');
print('Final result: ${calc.getResult()}');
} else if (testCase == 'subtraction_test') {
Calculator calc = Calculator();
calc.add(20);
int r1 = calc.subtract(8);
print('After subtracting 8 from 20: $r1');
int r2 = calc.subtract(2);
print('After subtracting 2: $r2');
print('Final result: ${calc.getResult()}');
} else if (testCase == 'multiplication_test') {
Calculator calc = Calculator();
calc.add(5);
int r1 = calc.multiply(4);
print('After multiplying by 4: $r1');
int r2 = calc.multiply(2);
print('After multiplying by 2: $r2');
print('Final result: ${calc.getResult()}');
} else if (testCase == 'division_test') {
Calculator calc = Calculator();
calc.add(100);
int r1 = calc.divide(4);
print('After dividing by 4: $r1');
int r2 = calc.divide(5);
print('After dividing by 5: $r2');
print('Final result: ${calc.getResult()}');
} else if (testCase == 'division_by_zero_test') {
Calculator calc = Calculator();
calc.add(50);
print('Initial value: ${calc.getResult()}');
int r = calc.divide(0);
print('Result after division by zero: $r');
print('Value unchanged: ${calc.getResult()}');
} else if (testCase == 'clear_test') {
Calculator calc = Calculator();
calc.add(25);
calc.multiply(3);
print('Before clear: ${calc.getResult()}');
calc.clear();
print('After clear: ${calc.getResult()}');
print('Current result: ${calc.getResult()}');
} else if (testCase == 'comprehensive_test') {
Calculator calc = Calculator();
calc.add(10);
calc.multiply(3);
calc.subtract(5);
calc.divide(5);
print('After sequence of operations: ${calc.getResult()}');
calc.divide(0);
print('After division by zero attempt: ${calc.getResult()}');
calc.clear();
calc.add(100);
print('After clear and add 100: ${calc.getResult()}');
} else {
print('Unknown test case');
}
}
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
file Eksternallibrary dan ImporPengantar OOPClass dan ObjectKata kunci thismethodVariabel InstanceDasar-Dasar ConstructorRingkasan: Kalkulator Sederhana4Keamanan Null
Pengantar Keamanan NullBisa Null vs Tidak Bisa NullOperator ? dan !Kata Kunci late dan Keamanan NullOperator Penanganan NullKeamanan Null dalam classRangkuman: Sistem Profil Pengguna7class Abstrak & Antarmuka
class AbstrakMethod abstrakAntarmuka di DartAntarmuka ImplisitMengimplementasikan vs MemperluasBeberapa AntarmukaRingkasan: Kalkulator Bentuk10Koleksi dan Generik
Gambaran Umum list, set, dan MapKoleksi dengan Tipe AmanKelas GenerikMetode GenerikBatasan GenerikIterable dan IteratorUlasan: Penyimpanan Generik2Konstruktor dalam Dart
Konstruktor DefaultKonstruktor BernamaInitializer ListsKonstruktor KonstanKonstruktor FactoryKonstruktor RedirectingRangkuman, Pembuat Bentuk5Enkapsulasi
Member Publik vs PrivatKonvensi Prefiks _Privasi Tingkat libraryPendalaman Getter & SetterPenyembunyian InformasiRingkasan: Catatan Siswa8Mixin
Pengantar MixinMembuat MixinMenggunakan Beberapa MixinKata Kunci on pada MixinMixin vs. PewarisanMixin vs. InterfaceRangkuman: Sistem Hewan3Property Class
Anggota Instance vs StaticField Final dan ConstVariabel LateMethod dan Field StaticGetter dan SetterRangkuman: Pengelola Rekening Bank6Pewarisan
Pewarisan DasarKata Kunci superPenimpaan methodAnotasi @overrideKata Kunci class finalKonstruktor dan PewarisanRangkuman, Hierarki Karyawan9Polimorfisme
Dasar-Dasar PolimorfismePolimorfisme melalui AntarmukaPemeriksaan Tipe saat RuntimeOperator is & asKata Kunci KovarianRangkuman: Pemroses PembayaranLatihan sendiri: Compiler Dart online