Menu
CoddyTech

Ringkasan: Kalkulator Bentuk

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Dart di Coddy. Pelajaran 49 dari 110.

challenge icon

Tantangan

Mudah

Mari bangun sistem kalkulator bentuk yang menggabungkan class abstrak dan antarmuka untuk membuat toolkit geometri yang fleksibel. Kamu akan merancang hierarki class tempat berbagai bentuk berbagi perilaku umum melalui abstraksi, sementara setiap bentuk menyediakan perhitungannya sendiri.

Kamu akan mengatur kodemu ke dalam tiga file:

  • shape.dart: Definisikan class dasar abstrak dan antarmukamu di sini:
    • Class abstrak Shape dengan property String name dan konstruktor. Sertakan method abstrak double calculateArea() dan double calculatePerimeter(). Tambahkan method biasa describe() yang mencetak [name] - Area: [calculateArea()], Perimeter: [calculatePerimeter()]
    • Class Drawable dengan method draw() yang mencetak Drawing shape...
  • shapes.dart: Impor shape.dart dan buat class bentuk konkretnya:
    • Class Rectangle yang memperluas Shape dan mengimplementasikan Drawable. Tambahkan property double width dan double height. Hitung luas dengan width * height dan keliling dengan 2 * (width + height). Method draw() harus mencetak Drawing rectangle [width]x[height]
    • Class Circle yang memperluas Shape dan mengimplementasikan Drawable. Tambahkan property double radius. Gunakan 3.14159 untuk pi. Hitung luas dengan pi * radius * radius dan keliling (lingkaran) dengan 2 * pi * radius. Method draw() harus mencetak Drawing circle with radius [radius]
  • main.dart: Impor shapes.dart dan tunjukkan kalkulator bentukmu:
    • Buat Rectangle bernama 'Rectangle' dengan lebar 5.0 dan tinggi 3.0
    • Buat Circle bernama 'Circle' dengan radius 4.0
    • Untuk setiap bentuk, panggil draw(), lalu describe()
    • Cetak satu baris kosong di antara kedua bentuk

Tantangan ini menunjukkan cara class abstrak mendefinisikan struktur bersama (setiap bentuk memiliki perhitungan luas dan keliling), sementara antarmuka menambahkan kemampuan lain (bentuk yang bisa digambar). Setiap class konkret memperluas class abstrak untuk identitas utamanya dan mengimplementasikan antarmuka untuk fungsionalitas tambahan.

Output yang diharapkan:

Drawing rectangle 5.0x3.0
Rectangle - Area: 15.0, Perimeter: 16.0

Drawing circle with radius 4.0
Circle - Area: 50.26544, Perimeter: 25.13272

Coba sendiri

import 'shapes.dart';

void main() {
  // TODO: Buat Rectangle bernama 'Rectangle' dengan lebar 5.0 dan tinggi 3.0
  
  // TODO: Buat Circle bernama 'Circle' dengan jari-jari 4.0
  
  // TODO: Untuk persegi panjang, panggil draw() lalu describe()
  
  // TODO: Cetak baris kosong
  
  // TODO: Untuk lingkaran, panggil draw() lalu describe()
}

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Dart online