Klassen vs. Objekte
Teil des Abschnitts Objektorientierte Programmierung der Dart-Journey von Coddy. Lektion 4 von 110.
Klassen und Objekte dienen unterschiedlichen Zwecken. Eine Klasse ist ein Bauplan, während ein Objekt das ist, was Sie aus diesem Bauplan erstellen.
Hier ist ein Beispiel für eine Klasse mit Instanzvariablen:
class Dog {
String name = '';
String breed = '';
}Die innerhalb einer Klasse deklarierten Variablen (wie name und breed) gehören zu jedem Objekt, das aus dieser Klasse erstellt wurde. Wir werden Instanzvariablen später im Detail untersuchen.
Erstellen Sie mehrere Objekte aus derselben Klasse:
Dog dog1 = Dog();
Dog dog2 = Dog();Jedes Objekt kann seine eigenen eindeutigen Werte für diese Variablen haben:
dog1.name = 'Nicky';
dog1.breed = 'Siberian Husky';
dog2.name = 'Teemon';
dog2.breed = 'Labrador';Verwenden Sie den Punkt-Operator ., um auf die Variablen eines Objekts zuzugreifen:
print('${dog1.name} is a ${dog1.breed}');
print('${dog2.name} is a ${dog2.breed}');Ausgabe:
Nicky is a Siberian Husky
Teemon is a LabradorWesentlicher Unterschied: Die Klasse Dog definiert die Struktur, die alle Hunde teilen, während dog1 und dog2 einzelne Objekte mit ihren eigenen, einzigartigen Daten sind.
Aufgabe
EinfachVervollständigen Sie den Code, um zwei Studenten-Objekte aus der Klasse Student zu erstellen und deren Variablen zu setzen.
student.dart: Enthält die KlasseStudent(gesperrt)driver.dart: Erstellen Sie zwei Objekte und setzen Sie deren Daten
Setzen Sie die folgenden Werte:
student1: Name ist'Alice'mit der Note'A'student2: Name ist'Bob'mit der Note'B'
Probier es selbst
import 'student.dart';
void main() {
// TODO: Erstelle zwei Student-Objekte
// TODO: Setze name und grade für student1 (name: 'Alice', grade: 'A')
// TODO: Setze name und grade für student2 (name: 'Bob', grade: 'B')
print('${student1.name} has grade ${student1.grade}');
print('${student2.name} has grade ${student2.grade}');
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
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