Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen OOP-Prinzipien: Abstraktion | Oop
Java Oop
course content

Kursinhalt

Java Oop

Java Oop

1. Arbeiten mit der IDE
2. Oop
3. Schnittstelle

book
OOP-Prinzipien: Abstraktion

Abstraktion

Wir sind nun beim letzten, aber sehr wichtigen Prinzip der OOP angekommen: Abstraktion. Das Wort "Abstraktion" klingt recht abstrakt, und kurz gesagt besagt dieses Prinzip, dass wir uns auf Abstraktionen und nicht auf spezifische Implementierungen stützen sollten. Das mag zunächst kompliziert erscheinen. Beginnen wir mit der Definition:

Zum Beispiel gibt es eine Klasse namens Person, von der viele verschiedene Klassen abgeleitet werden. Person verfügt über verschiedene Felder und Methoden, die allen Klassen gemeinsam sind. Bei einer Klasse wie BasketballPlayer, wird jedoch das Merkmal height entscheidend, während es bei einer Klasse wie Driver, das Merkmal height unwichtig und irrelevant ist. Hier kommt die Abstraktion ins Spiel. Durch die Vererbung von einer Abstraktion kann das height-Attribut optional gemacht werden, sodass es dort, wo es nicht benötigt wird, nicht verwendet werden muss.

Das klingt vielleicht kompliziert, daher folgt nun ein Beispiel:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Die Klasse Car stellt nichts Konkretes dar. Es gibt kein allgemeines Car; es gibt Limousinen, Lastwagen, Traktoren. Daher verlassen wir uns auf die Abstraktion namens Car. Zur weiteren Vereinfachung: Car ist eine Vorlage, anhand derer wir spezifische Fahrzeugklassen erstellen.

Beachten Sie die Syntax:

Dies ist die Syntax zur Deklaration einer abstrakten Klasse. Beachten Sie auch die Syntax zur Deklaration einer abstrakten Methode:

Eine abstrakte Methode besitzt keinen Rumpf; dies ist ihr Hauptmerkmal. Unterklassen einer abstrakten Klasse werden diese abstrakte Methode überschreiben, um ihre eigene Implementierung zu definieren, unter Verwendung von Polymorphie.

Werfen wir einen genaueren Blick darauf, was eine abstrakte Klasse ist:

Beachten Sie, dass kein Objekt einer abstrakten Klasse erstellt werden kann; dies führt zu einem Fehler:

Abstrakte Klassen befreien uns davon, uns nur mit "Objekten" zu beschäftigen; sie bieten einen Grundzustand und ein Grundverhalten. Am Beispiel von Fahrzeugen sollte jedes Fahrzeug ein Modell, ein Baujahr, eine Höchstgeschwindigkeit und eine Farbe besitzen. Sie sollten sich außerdem bewegen und anhalten können. Das ist alles; darauf aufbauend entwerfen Sie Ihre spezifischen Klassen anhand dieser abstrakten Vorlage.

Regeln zur Erstellung einer abstrakten Klasse

  1. Eine abstrakte Klasse ist eine Klasse, die mindestens eine abstrakte Methode enthält. Sie können eine abstrakte Klasse ohne abstrakte Methoden erstellen, aber dann erfüllt sie keinen Zweck. Sie können keine Objekte einer abstrakten Klasse instanziieren;

  2. Abstrakte Methoden können nur innerhalb einer abstrakten Klasse existieren; Sie können keine abstrakten Methoden außerhalb einer abstrakten Klasse erstellen;

  3. Methoden innerhalb einer abstrakten Klasse können entweder abstrakte Methoden oder Methoden mit Implementierungen sein;

  4. Eine Klasse, die von einer abstrakten Klasse erbt, muss alle abstrakten Methoden überschreiben;

  5. Es kann von maximal einer Klasse (abstrakt oder nicht-abstrakt) geerbt werden;

  6. Eine abstrakte Klasse sollte die gemeinsamen Eigenschaften und das Verhalten ihrer erbenden Klassen repräsentieren. Wir werden dies ausführlicher besprechen, wenn wir die SOLID-Prinzipien behandeln.

Betrachten wir ein Beispiel, um zu verstehen, wie Unterklassen abstrakte Methoden durch Vererbung von einer abstrakten Klasse überschreiben sollten, am Beispiel der Kindklasse Truck:

Hier ist der Code aus dem Screenshot, überarbeitet für bessere Lesbarkeit und Klarheit:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Schauen wir uns im Detail an, was oben geschrieben steht:

  • Erste Folie: Es wird eine Unterklasse Truck erstellt, die von der abstrakten KlasseCar erbt. Die IDE weist darauf hin, dass die erforderlichen Methoden implementiert werden müssen;

  • Zweite Folie: Die notwendigen Methoden werden überschrieben. Zum Beispiel wird angegeben, dass der Truck losfährt und anschließend anhält;

  • Dritte Folie: Im main-Modul wird ein Objekt erstellt. Beachte die verwendete Syntax: Car name = new Truck();. Die Objekterstellung beginnt mit der Abstraktion und endet mit einer konkreten Implementierung. Dies wird als Komposition bezeichnet. Anschließend werden die Felder nach Bedarf zugewiesen und die überschriebenen Methoden aufgerufen.

Voilà! Wenn alles verständlich ist, wurde die Verwendung einer abstrakten Klasse erfolgreich erlernt!

Zusammenfassung

Abstraktion ist wahrscheinlich das am schwierigsten zu verstehende Prinzip der OOP, und es ist sehr wahrscheinlich, dass du im Moment noch nicht alles vollständig erfasst hast. Aber denke nicht, dass du damit allein bist. Abstraktion ist ein Konzept, das den meisten Entwicklern anfangs schwerfällt. Mit der Zeit wirst du besser verstehen, wie man effektiv mit Abstraktion und abstrakten Klassen arbeitet. Abstraktion ist ein entscheidendes Prinzip, da sie es ermöglicht, unsere Programme erweiterbar und sehr flexibel zu gestalten.

1. Was ist Abstraktion in der objektorientierten Programmierung?

2. Welche der folgenden Aussagen über Abstraktion sind richtig?

3. Was ist der Zweck einer abstrakten Klasse in Java?

4. Wie trägt Abstraktion zur Wartbarkeit von Code bei?

question mark

Was ist Abstraktion in der objektorientierten Programmierung?

Select the correct answer

question mark

Welche der folgenden Aussagen über Abstraktion sind richtig?

Select the correct answer

question mark

Was ist der Zweck einer abstrakten Klasse in Java?

Select the correct answer

question mark

Wie trägt Abstraktion zur Wartbarkeit von Code bei?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 7

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

course content

Kursinhalt

Java Oop

Java Oop

1. Arbeiten mit der IDE
2. Oop
3. Schnittstelle

book
OOP-Prinzipien: Abstraktion

Abstraktion

Wir sind nun beim letzten, aber sehr wichtigen Prinzip der OOP angekommen: Abstraktion. Das Wort "Abstraktion" klingt recht abstrakt, und kurz gesagt besagt dieses Prinzip, dass wir uns auf Abstraktionen und nicht auf spezifische Implementierungen stützen sollten. Das mag zunächst kompliziert erscheinen. Beginnen wir mit der Definition:

Zum Beispiel gibt es eine Klasse namens Person, von der viele verschiedene Klassen abgeleitet werden. Person verfügt über verschiedene Felder und Methoden, die allen Klassen gemeinsam sind. Bei einer Klasse wie BasketballPlayer, wird jedoch das Merkmal height entscheidend, während es bei einer Klasse wie Driver, das Merkmal height unwichtig und irrelevant ist. Hier kommt die Abstraktion ins Spiel. Durch die Vererbung von einer Abstraktion kann das height-Attribut optional gemacht werden, sodass es dort, wo es nicht benötigt wird, nicht verwendet werden muss.

Das klingt vielleicht kompliziert, daher folgt nun ein Beispiel:

Car.java

Car.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Die Klasse Car stellt nichts Konkretes dar. Es gibt kein allgemeines Car; es gibt Limousinen, Lastwagen, Traktoren. Daher verlassen wir uns auf die Abstraktion namens Car. Zur weiteren Vereinfachung: Car ist eine Vorlage, anhand derer wir spezifische Fahrzeugklassen erstellen.

Beachten Sie die Syntax:

Dies ist die Syntax zur Deklaration einer abstrakten Klasse. Beachten Sie auch die Syntax zur Deklaration einer abstrakten Methode:

Eine abstrakte Methode besitzt keinen Rumpf; dies ist ihr Hauptmerkmal. Unterklassen einer abstrakten Klasse werden diese abstrakte Methode überschreiben, um ihre eigene Implementierung zu definieren, unter Verwendung von Polymorphie.

Werfen wir einen genaueren Blick darauf, was eine abstrakte Klasse ist:

Beachten Sie, dass kein Objekt einer abstrakten Klasse erstellt werden kann; dies führt zu einem Fehler:

Abstrakte Klassen befreien uns davon, uns nur mit "Objekten" zu beschäftigen; sie bieten einen Grundzustand und ein Grundverhalten. Am Beispiel von Fahrzeugen sollte jedes Fahrzeug ein Modell, ein Baujahr, eine Höchstgeschwindigkeit und eine Farbe besitzen. Sie sollten sich außerdem bewegen und anhalten können. Das ist alles; darauf aufbauend entwerfen Sie Ihre spezifischen Klassen anhand dieser abstrakten Vorlage.

Regeln zur Erstellung einer abstrakten Klasse

  1. Eine abstrakte Klasse ist eine Klasse, die mindestens eine abstrakte Methode enthält. Sie können eine abstrakte Klasse ohne abstrakte Methoden erstellen, aber dann erfüllt sie keinen Zweck. Sie können keine Objekte einer abstrakten Klasse instanziieren;

  2. Abstrakte Methoden können nur innerhalb einer abstrakten Klasse existieren; Sie können keine abstrakten Methoden außerhalb einer abstrakten Klasse erstellen;

  3. Methoden innerhalb einer abstrakten Klasse können entweder abstrakte Methoden oder Methoden mit Implementierungen sein;

  4. Eine Klasse, die von einer abstrakten Klasse erbt, muss alle abstrakten Methoden überschreiben;

  5. Es kann von maximal einer Klasse (abstrakt oder nicht-abstrakt) geerbt werden;

  6. Eine abstrakte Klasse sollte die gemeinsamen Eigenschaften und das Verhalten ihrer erbenden Klassen repräsentieren. Wir werden dies ausführlicher besprechen, wenn wir die SOLID-Prinzipien behandeln.

Betrachten wir ein Beispiel, um zu verstehen, wie Unterklassen abstrakte Methoden durch Vererbung von einer abstrakten Klasse überschreiben sollten, am Beispiel der Kindklasse Truck:

Hier ist der Code aus dem Screenshot, überarbeitet für bessere Lesbarkeit und Klarheit:

Car.java

Car.java

Truck.java

Truck.java

Main.java

Main.java

copy
123456789
public abstract class Car { String model; int year; int maxSpeed; String color; public abstract void move(); public abstract void stop(); }

Schauen wir uns im Detail an, was oben geschrieben steht:

  • Erste Folie: Es wird eine Unterklasse Truck erstellt, die von der abstrakten KlasseCar erbt. Die IDE weist darauf hin, dass die erforderlichen Methoden implementiert werden müssen;

  • Zweite Folie: Die notwendigen Methoden werden überschrieben. Zum Beispiel wird angegeben, dass der Truck losfährt und anschließend anhält;

  • Dritte Folie: Im main-Modul wird ein Objekt erstellt. Beachte die verwendete Syntax: Car name = new Truck();. Die Objekterstellung beginnt mit der Abstraktion und endet mit einer konkreten Implementierung. Dies wird als Komposition bezeichnet. Anschließend werden die Felder nach Bedarf zugewiesen und die überschriebenen Methoden aufgerufen.

Voilà! Wenn alles verständlich ist, wurde die Verwendung einer abstrakten Klasse erfolgreich erlernt!

Zusammenfassung

Abstraktion ist wahrscheinlich das am schwierigsten zu verstehende Prinzip der OOP, und es ist sehr wahrscheinlich, dass du im Moment noch nicht alles vollständig erfasst hast. Aber denke nicht, dass du damit allein bist. Abstraktion ist ein Konzept, das den meisten Entwicklern anfangs schwerfällt. Mit der Zeit wirst du besser verstehen, wie man effektiv mit Abstraktion und abstrakten Klassen arbeitet. Abstraktion ist ein entscheidendes Prinzip, da sie es ermöglicht, unsere Programme erweiterbar und sehr flexibel zu gestalten.

1. Was ist Abstraktion in der objektorientierten Programmierung?

2. Welche der folgenden Aussagen über Abstraktion sind richtig?

3. Was ist der Zweck einer abstrakten Klasse in Java?

4. Wie trägt Abstraktion zur Wartbarkeit von Code bei?

question mark

Was ist Abstraktion in der objektorientierten Programmierung?

Select the correct answer

question mark

Welche der folgenden Aussagen über Abstraktion sind richtig?

Select the correct answer

question mark

Was ist der Zweck einer abstrakten Klasse in Java?

Select the correct answer

question mark

Wie trägt Abstraktion zur Wartbarkeit von Code bei?

Select the correct answer

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 2. Kapitel 7
some-alt