Menu
Coddy logo textTech

Özet - Ş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ç kiti oluşturmak için soyut sınıfları ve arayüzleri bir araya getiren bir şekil hesaplayıcı sistemi kuralım. Farklı şekillerin soyutlama yoluyla ortak davranışları paylaştığı, her şeklin ise kendi benzersiz hesaplamalarını sunduğu bir sınıf hiyerarşisi tasarlayacaksınız.

Kodunuzu üç dosyada organize edeceksiniz:

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

Bu meydan okuma, soyut sınıfların paylaşılan yapıyı nasıl tanımladığını (her şeklin alan ve çevre hesaplamaları vardır) ve arayüzlerin nasıl ek yetenekler kazandırdığını (çizilebilen şekiller) göstermektedir. Her somut sınıf, temel kimliği için soyut sınıfı genişletir ve ekstra 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