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'
Spickzettel
Eine Klasse ist ein Bauplan, der die Struktur und das Verhalten von Objekten definiert. Ein Objekt ist eine Instanz, die aus einer Klasse erstellt wurde.
Definieren Sie eine Klasse mit Instanzvariablen:
class Dog {
String name = '';
String breed = '';
}Erstellen Sie Objekte aus einer Klasse:
Dog dog1 = Dog();
Dog dog2 = Dog();Greifen Sie auf Objektvariablen zu und ändern Sie diese mit dem Punkt-Operator .:
dog1.name = 'Nicky';
dog1.breed = 'Siberian Husky';
dog2.name = 'Teemon';
dog2.breed = 'Labrador';Greifen Sie auf Objektvariablen zu:
print('${dog1.name} is a ${dog1.breed}');
// Ausgabe: Nicky is a Siberian HuskyProbier 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 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