Zusammenfassung – Shape Builder
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy — Lektion 16 von 110.
Aufgabe
EinfachLassen Sie uns eine Rectangle-Klasse erstellen, die alle Konstruktor-Techniken vereint, die Sie in diesem Kapitel gelernt haben. Sie werden eine vielseitige Form-Klasse erstellen, die auf verschiedene Arten instanziiert werden kann.
Sie werden Ihren Code in zwei Dateien organisieren:
rectangle.dart: Definieren Sie eineRectangle-Klasse mit Folgendem:- Zwei
final doubleFelder:widthundheight - Zwei berechnete
final doubleFelder:areaundperimeter - Ein Hauptkonstruktor, der
widthundheightentgegennimmt und eine Initialisierungsliste verwendet, umarea(width × height) undperimeter(2 × (width + height)) zu berechnen - Ein benannter Konstruktor
Rectangle.square(double side), der mit gleicher Breite und Höhe an den Hauptkonstruktor weiterleitet - Ein benannter Konstruktor
Rectangle.golden(double width), der ein Rechteck unter Verwendung des Goldenen Schnitts (height = width × 1.618) erstellt und an den Hauptkonstruktor weiterleitet - Ein konstanter Konstruktor
Rectangle.unit(), der ein 1×1 Rechteck erstellt (hierfür benötigen Sie einen separaten const-Konstruktor) - Eine
display()Methode, welche die Informationen des Rechtecks ausgibt
- Zwei
main.dart: Importieren Sie Ihre Rectangle-Klasse und erstellen Sie vier Rechtecke:- Ein benutzerdefiniertes Rechteck mit der Breite
4.0und der Höhe3.0 - Ein Quadrat mit der Seitenlänge
5.0 - Ein Goldenes Rechteck mit der Breite
10.0 - Ein Einheitsrechteck unter Verwendung des konstanten Konstruktors (erstellen Sie es als Compile-Zeit-Konstante)
display()für jedes Rechteck in der oben aufgeführten Reihenfolge auf.- Ein benutzerdefiniertes Rechteck mit der Breite
Die display() Methode sollte in genau diesem Format drucken:
Rectangle [width]x[height] | Area: [area] | Perimeter: [perimeter]Erwartete Ausgabe:
Rectangle 4.0x3.0 | Area: 12.0 | Perimeter: 14.0
Rectangle 5.0x5.0 | Area: 25.0 | Perimeter: 20.0
Rectangle 10.0x16.18 | Area: 161.8 | Perimeter: 52.36
Rectangle 1.0x1.0 | Area: 1.0 | Perimeter: 4.0Probier es selbst
import 'rectangle.dart';
void main() {
// TODO: Erstelle ein benutzerdefiniertes Rechteck mit der Breite 4.0 und der Höhe 3.0
// TODO: Erstelle ein Quadrat mit der Seitenlänge 5.0
// TODO: Erstelle ein Goldenes Rechteck mit der Breite 10.0
// TODO: Erstelle ein Einheitsrechteck unter Verwendung des konstanten Konstruktors
// (erstelle es als Compile-Zeit-Konstante unter Verwendung von 'const')
// TODO: Rufe display() für jedes Rechteck in der oben aufgeführten Reihenfolge auf
}
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienBibliotheken & ImportsEinführung in die OOPKlassen vs. ObjekteDas this-SchlüsselwortMethodenInstanzvariablenKonstruktor-GrundlagenWiederholung – Einfacher Taschenrechner4Null-Sicherheit
Einführung in Null-SicherheitNullable vs. Non-NullableDie ? und ! OperatorenLate-Schlüsselwort & Null-SicherheitNull-aware OperatorenNull-Sicherheit in KlassenZusammenfassung – Benutzerprofil-System7Abstrakte Klassen & Interfaces
Abstrakte KlassenAbstrakte MethodenInterfaces in DartImplizite InterfacesImplementieren vs. ErweiternMehrfache InterfacesRückblick – Shape Calculator10Collections & Generics
Überblick über List, Set und MapTypsichere CollectionsGenerische KlassenGenerische MethodenGenerische ConstraintsIterable & IteratorZusammenfassung – Generische Speicherung13Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungExtension MethodsCallable ClassesSealed Classes (Dart 3)Records (Dart 3)Patterns & Matching (3.0)Enums mit Methoden16Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen2Konstruktoren in Dart
Standard-KonstruktorBenannte KonstruktorenInitialisierungslistenKonstante KonstruktorenFactory-KonstruktorenWeiterleitende KonstruktorenZusammenfassung – Shape Builder5Kapselung
Öffentliche vs. private MemberDie _ Präfix-KonventionSichtbarkeit auf Library-EbeneGetter & Setter im DetailInformation HidingRückblick – Schülerdatensätze8Mixins
Einführung in MixinsMixins erstellenMehrere Mixins verwendenDas on-Schlüsselwort in MixinsMixin vs. VererbungMixin vs. InterfaceZusammenfassung - Tiersystem11Spezielle Methoden
toString() überschreibenhashCode & == überschreibenComparable-Interfacecall()-MethodenoSuchMethod überschreibenZusammenfassung – Eigene Collection14Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster3Klasseneigenschaften
Instanz- vs. statische MemberFinal & Const FelderLate-VariablenStatische Methoden & FelderGetter und SetterZusammenfassung – Bankkonto-Manager6Vererbung
Grundlagen der VererbungDas super-SchlüsselwortMethoden überschreibenDie @override-AnnotationDas final-Klassen-SchlüsselwortKonstruktoren & VererbungRückblick – Mitarbeiter-Hierarchie9Polymorphismus
Polymorphismus-GrundlagenPolymorphismus über InterfacesTypprüfung zur LaufzeitDie is & as OperatorenDas covariant SchlüsselwortZusammenfassung – Payment Processor