Skip to content

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());
}

Frei für alle Anfänger