Appearance
Kapitel 7: Klassen und Objekte
7.1 Grundlegende Konzepte der objektorientierten Programmierung
- Klasse: Vorlage für Objekte
- Objekt: Instanz einer Klasse
- Attribut: Eigenschaften einer Klasse
- Methode: Funktionen einer Klasse
7.2 Klassendefinition
dart
class Person {
// Attribute
String name;
int alter;
// Methode
void vorstellen() {
print('Ich bin ' + name + ', ' + alter.toString() + ' Jahre alt');
}
}7.3 Erstellung und Verwendung von Objekten
dart
void main() {
// Objekt erstellen
Person person = Person();
person.name = 'Alice';
person.alter = 25;
// Attribute abfragen
print(person.name);
// Methode aufrufen
person.vorstellen();
}7.4 Konstruktoren
Standardkonstruktor
dart
class Person {
String name;
int alter;
// Standardkonstruktor
Person() {
name = 'Unbekannt';
alter = 0;
}
}Benutzerdefinierter Konstruktor
dart
class Person {
String name;
int alter;
// Benutzerdefinierter Konstruktor
Person(this.name, this.alter);
}Benannter Konstruktor
dart
class Person {
String name;
int alter;
// Benannter Konstruktor
Person.ausJSON(Map<String, dynamic> json) {
name = json['name'];
alter = json['alter'];
}
}Konstruktor-Kurzschreibweise
dart
class Person {
String name;
int alter;
// Kurzschreibweise
Person(this.name, this.alter);
}7.5 Klassenattribute
Instanzattribute
dart
class Person {
String name; // Instanzattribut
}Statische Attribute
dart
class Person {
static int anzahl = 0; // Statisches Attribut
Person() {
anzahl++;
}
}7.6 Klassenmethoden
Instanzmethoden
dart
class Person {
String name;
void vorstellen() { // Instanzmethode
print('Ich bin ' + name);
}
}Statische Methoden
dart
class MathUtils {
static int add(int a, int b) { // Statische Methode
return a + b;
}
}
void main() {
print(MathUtils.add(1, 2));
}7.7 Praxisbeispiel
dart
class Rechteck {
double breite;
double höhe;
Rechteck(this.breite, this.höhe);
double fläche() {
return breite * höhe;
}
double umfang() {
return 2 * (breite + höhe);
}
}
void main() {
Rechteck rechteck = Rechteck(5, 3);
print('Fläche: ' + rechteck.fläche().toString());
print('Umfang: ' + rechteck.umfang().toString());
}