Özet - Şekil Hesaplayıcı
Coddy'nin Dart Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 49 / 110.
Görev
KolayEsnek 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 birShapesınıfı.double calculateArea()vedouble calculatePerimeter()soyut metotlarını ekleyin.[name] - Area: [calculateArea()], Perimeter: [calculatePerimeter()]çıktısını yazdıran normal birdescribe()metodu ekleyin. Drawing shape...yazdırandraw()metoduna sahip birDrawablesınıfı.
- Bir
shapes.dart:shape.dartdosyasını içe aktarın ve somut şekil sınıflarınızı oluşturun:Shapesınıfını genişleten veDrawablearayüzünü uygulayan birRectanglesınıfı.double widthvedouble heightözelliklerini ekleyin. Alanıwidth * heightve çevreyi2 * (width + height)olarak hesaplayın.draw()metoduDrawing rectangle [width]x[height]yazdırmalıdır.Shapesınıfını genişleten veDrawablearayüzünü uygulayan birCirclesınıfı. Birdouble radiusözelliği ekleyin. Pi için3.14159kullanın. Alanıpi * radius * radiusve çevreyi2 * pi * radiusolarak hesaplayın.draw()metoduDrawing circle with radius [radius]yazdırmalıdır.
main.dart:shapes.dartdosyasını içe aktarın ve şekil hesaplayıcınızı gösterin:- Genişliği
5.0ve yüksekliği3.0olan'Rectangle'isimli birRectangleoluşturun. - Yarıçapı
4.0olan'Circle'isimli birCircleoluşturun. - Her şekil için önce
draw()sonradescribe()metodunu çağırın. - İki şekil arasında boş bir satır yazdırın.
- Genişliği
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.13272Kendin 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
1OOP Temelleri
Harici DosyalarKütüphaneler ve ImportlarOOP'ye GirişSınıflar ve Nesnelerthis Anahtar KelimesiMetotlarÖrnek DeğişkenleriConstructor TemelleriÖzet - Basit Hesap Makinesi4Null Safety
Null Safety'ye GirişNullable ve Non-Nullable? ve ! OperatörleriLate Anahtar Kelimesi ve Null SafetyNull-Aware OperatörleriSınıflarda Null SafetyÖzet - Kullanıcı Profili Sistemi7Soyut Sınıflar ve Arayüzler
Soyut SınıflarSoyut MetotlarDart'ta ArayüzlerÖrtük ArayüzlerUygulama vs. GenişletmeÇoklu ArayüzlerÖzet - Şekil Hesaplayıcı10Koleksiyonlar ve Generic'ler
List, Set, Map Genel BakışTip Güvenli KoleksiyonlarGeneric SınıflarGeneric MetotlarGeneric KısıtlamalarIterable ve IteratorÖzet - Generic Depolama2Dart'ta Yapıcılar
Varsayılan Yapıcıİsimlendirilmiş Yapıcılarİlklendirme ListeleriSabit YapıcılarFabrika YapıcılarıYönlendiren YapıcılarÖzet - Şekil Oluşturucu5Kapsülleme
Public ve Private Üyeler_ Öneki KuralıKütüphane Düzeyinde GizlilikGetter ve Setter DetaylarıBilgi GizlemeÖzet - Öğrenci Kayıtları8Mixin'ler
Mixin'lere GirişMixin OluşturmaBirden Fazla Mixin KullanımıMixin'lerde on Anahtar KelimesiMixin vs KalıtımMixin vs ArayüzÖzet - Hayvan Sistemi11Özel Metotlar
toString() OverridehashCode ve == OverrideComparable Arayüzücall() MetodunoSuchMethod OverrideÖzet - Özel Koleksiyon14Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişSingleton KalıbıFactory KalıbıObserver KalıbıStrategy Kalıbı17Final Meydan Okumaları
E-Öğrenme PlatformuBankacılık SistemiOyun Karakter SistemiAraç Kiralama Servisi3Sınıf Özellikleri
Instance ve Statik ÜyelerFinal ve Const AlanlarLate DeğişkenlerStatik Metotlar ve AlanlarGetters ve SettersÖzet - Banka Hesabı Yöneticisi6Kalıtım
Temel Kalıtımsuper Anahtar KelimesiMetot Ezme@override Anotasyonufinal Sınıf Anahtar KelimesiYapıcı Metotlar ve KalıtımÖzet - Çalışan Hiyerarşisi9Çok Biçimlilik
Çok Biçimlilik TemelleriInterface'ler ile Çok BiçimlilikÇalışma Zamanı Tip Kontrolüis ve as OperatörleriCovariant Anahtar KelimesiÖzet - Ödeme İşlemcisi12Asenkron OOP
Futures ve async/awaitStream TemelleriStream Controller'larAsenkron KurucularSınıf Metotlarında Asenkron KullanımıÖzet - Data Fetcher15Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit KalıbıRepository Kalıbı