Menu
Coddy logo textTech

Tekrar - Şekil Hesaplayıcı

Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 49 / 110.

challenge icon

Görev

Kolay

Esnek bir geometri araç seti oluşturmak için soyut sınıfları ve arayüzleri bir araya getiren bir şekil hesaplayıcı sistemi geliştirelim. Her şeklin kendi benzersiz hesaplamalarını sunarken farklı şekillerin soyutlama yoluyla ortak davranışları paylaştığı bir sınıf hiyerarşisi tasarlayacaksın.

Kodunu üç dosyada düzenleyeceksin:

  • shape.dart: Soyut temel sınıfını ve arayüzünü burada tanımla:
    • Bir Shape soyut sınıfı oluştur; bu sınıfta bir String name özelliği ve kurucu bulunsun. double calculateArea() ve double calculatePerimeter() soyut metotlarını ekle. describe() çıktısını yazdıran normal bir [name] - Area: [calculateArea()], Perimeter: [calculatePerimeter()] metodu ekle.
    • Drawable çıktısını yazdıran draw() metoduna sahip bir Drawing shape... sınıfı oluştur.
  • shapes.dart: shape.dart dosyasını içe aktar ve somut şekil sınıflarını oluştur:
    • Rectangle sınıfını genişleten ve Shape arayüzünü uygulayan bir Drawable sınıfı oluştur. double width ve double height özelliklerini ekle. Alanı width * height ve çevreyi 2 * (width + height) olarak hesapla. draw() metodu Drawing rectangle [width]x[height] çıktısını yazdırmalıdır.
    • Circle sınıfını genişleten ve Shape arayüzünü uygulayan bir Drawable sınıfı oluştur. Bir double radius özelliği ekle. Pi için 3.14159 kullan. Alanı pi * radius * radius ve çevreyi (çemberin çevresi) 2 * pi * radius olarak hesapla. draw() metodu Drawing circle with radius [radius] çıktısını yazdırmalıdır.
  • main.dart: shapes.dart dosyasını içe aktar ve şekil hesaplayıcını göster:
    • Genişliği Rectangle ve yüksekliği 'Rectangle' olan, 5.0 adlı bir 3.0 oluştur.
    • Yarıçapı Circle olan, 'Circle' adlı bir 4.0 oluştur.
    • Her şekil için önce draw(), ardından describe() çağrısını yap.
    • İki şekil arasında boş bir satır yazdır.

Bu görev, soyut sınıfların ortak yapıyı nasıl tanımladığını (her şeklin alan ve çevre hesaplamalarına sahip olması) ve arayüzlerin ek yetenekleri nasıl sağladığını (çizilebilen şekiller) gösterir. Her somut sınıf, temel kimliği için soyut sınıfı genişletir ve ek işlevsellik için arayüzü uygular.

Beklenen çıktı:

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

Kendin dene

import 'shapes.dart';

void main() {
  // TODO: Genişliği 5.0 ve yüksekliği 3.0 olan 'Rectangle' adında bir Rectangle oluşturun
  
  // TODO: Yarıçapı 4.0 olan 'Circle' adında bir Circle oluşturun
  
  // TODO: rectangle için önce draw() sonra describe() metodunu çağırın
  
  // TODO: Boş bir satır yazdırın
  
  // TODO: circle için önce draw() sonra describe() metodunu çağırın
}

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Online Dart derleyicisi