Rückblick – Shape Builder
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 16 von 110.
Aufgabe
EinfachErstellen wir eine Rectangle-Klasse, die alle Konstruktor-Techniken zusammenführt, die du in diesem Kapitel gelernt hast. Du erstellst eine vielseitige Formklasse, die auf mehrere Arten instanziiert werden kann.
Du organisierst deinen Code in zwei Dateien:
rectangle.dart: Definiere eineRectangle-Klasse mit folgenden Bestandteilen:- Zwei
final double-Felder:widthundheight - Zwei berechnete
final double-Felder:areaundperimeter - Einen Hauptkonstruktor, der
widthundheightentgegennimmt und eine Initialisierungsliste verwendet, umarea(width × height) undperimeter(2 × (width + height)) zu berechnen - Einen benannten Konstruktor
Rectangle.square(double side), der mit gleicher Breite und Höhe an den Hauptkonstruktor weiterleitet - Einen benannten Konstruktor
Rectangle.golden(double width), der mithilfe des Goldenen Schnitts ein Rechteck erstellt (height = width × 1.618) und an den Hauptkonstruktor weiterleitet - Einen konstanten Konstruktor
Rectangle.unit(), der ein 1×1-Rechteck erstellt (dafür benötigst du einen separaten const-Konstruktor) - Eine
display()-Methode, die die Informationen des Rechtecks ausgibt
- Zwei
main.dart: Importiere deine Rechteckklasse und erstelle 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 mithilfe des konstanten Konstruktors (erstelle es als Kompilierzeitkonstante)
display()für jedes Rechteck in der oben aufgeführten Reihenfolge auf.- Ein benutzerdefiniertes Rechteck mit der Breite
Die display()-Methode sollte exakt in diesem Format ausgeben:
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 Schlüsselwort thisMethodenInstanzvariablenGrundlagen von KonstruktorenRückblick – Einfacher Taschenrechner4Null-Sicherheit
Einführung in die Null-SicherheitNullable vs. Non-NullableDie Operatoren ? und !Late-Schlüsselwort und Null-SicherheitNull-bewusste OperatorenNull-Sicherheit in KlassenRückblick – Benutzers профilsystem7Abstrakte Klassen & Interfaces
Abstrakte KlassenAbstrakte MethodenInterfaces in DartImplizite InterfacesImplementieren vs. ErweiternMehrere InterfacesZusammenfassung – Formrechner10Collections & Generics
Übersicht über List, Set und MapTypsichere CollectionsGenerische KlassenGenerische MethodenGenerische EinschränkungenIterable & IteratorRückblick – Generischer Speicher13Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungErweiterungsmethodenAufrufbare KlassenVersiegelte Klassen (Dart 3)Records (Dart 3)Muster & Matching (3.0)Enums mit Methoden16Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und Benutzerklassen2Konstruktoren in Dart
StandardkonstruktorBenannte KonstruktorenInitialisierungslistenKonstantenkonstruktorenFactory-KonstruktorenWeiterleitende KonstruktorenRückblick – Shape Builder5Kapselung
Öffentliche vs. private MemberDie _-Präfix-KonventionBibliotheksweite SichtbarkeitTiefergehende Getter & SetterInformationsverbergungRückblick – Studierendendaten8Mixins
Einführung in MixinsMixins erstellenMehrere Mixins verwendenDas Schlüsselwort „on“ in MixinsMixin vs. VererbungMixin vs. SchnittstelleRückblick – Tiersystem11Spezielle Methoden
toString()-ÜberschreibunghashCode- & ==-ÜberschreibungComparable-Schnittstellecall()-MethodenoSuchMethod-ÜberschreibungWiederholung – Benutzerdefinierte Collection14Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFabrikmusterBeobachtermusterStrategiemuster17Abschließende Herausforderungen
E-Learning-PlattformBankingsystemSpielcharaktersystemFahrzeugvermietung3Klassen-Eigenschaften
Instanz- vs. statische MemberFinal- und Const-FelderLate-VariablenStatische Methoden und FelderGetter und SetterRückblick – Bankkontoverwaltung6Vererbung
Grundlegende VererbungDas Schlüsselwort superMethodenüberschreibungDie Annotation @overrideDas Schlüsselwort final für KlassenKonstruktoren und VererbungZusammenfassung – Mitarbeiterhierarchie9Polymorphismus
Grundlagen des PolymorphismusPolymorphismus über InterfacesLaufzeit-TypüberprüfungDie Operatoren is & asCovariant-SchlüsselwortZusammenfassung – ZahlungsprozessorÜbe selbstständig: Online-Dart-Compiler