Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen OOP-Prinzipien: Abstraktion | Section
Practice
Projects
Quizzes & Challenges
Quizze
Challenges
/
Grundlagen der Objektorientierten Programmierung in Java

bookOOP-Prinzipien: Abstraktion

Swipe um das Menü anzuzeigen

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 haben wir eine Klasse namens Person, von der viele verschiedene Klassen abgeleitet werden. Person besitzt verschiedene Felder und Methoden, die allen Klassen gemeinsam sind. Wenn wir jedoch eine Klasse namens BasketballPlayer, haben, wird das Merkmal height entscheidend, während das Merkmal Driver für eine Klasse wie height irrelevant und nicht wichtig ist. Hier kommt die Abstraktion ins Spiel. Durch die Vererbung von einer Abstraktion können wir das height-Attribut optional machen, sodass wir es dort nicht verwenden müssen, wo es nicht notwendig ist.

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 existieren Limousinen, Lastwagen, Traktoren. Daher stützen wir uns auf die Abstraktion namens Car. Zur weiteren Vereinfachung: Car ist eine Vorlage, auf deren Basis spezifische Fahrzeugklassen erstellt werden.

Beachte die Syntax:

public abstract class className{ }.

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

public abstract returnValue methodName();

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.

Im Folgenden betrachten wir genauer, was eine abstrakte Klasse ist:

Beachte, 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 grundlegenden Zustand und Verhalten. Am Beispiel von Autos sollte jedes Auto ein Modell, ein Baujahr, eine Höchstgeschwindigkeit und eine Farbe besitzen. Außerdem sollte es sich bewegen und anhalten können. Das ist alles; darauf aufbauend entwirfst du deine 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. Es ist möglich, eine abstrakte Klasse ohne abstrakte Methoden zu erstellen, aber dann erfüllt sie keinen Zweck. Es ist nicht möglich, Objekte einer abstrakten Klasse zu instanziieren;
  2. Abstrakte Methoden können nur innerhalb einer abstrakten Klasse existieren; außerhalb einer abstrakten Klasse können keine abstrakten Methoden erstellt werden;
  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. Dies wird im Detail behandelt, wenn die SOLID-Prinzipien besprochen werden.

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

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

  • Erste Folie: Wir erstellen eine Unterklasse Truck, die von der abstrakten Klasse Car erbt. Wir sehen, dass die IDE uns auffordert, die erforderlichen Methoden zu implementieren;

  • Zweite Folie: Wir überschreiben die notwendigen Methoden. Zum Beispiel schreiben wir, dass der Truck losgefahren und dann gestoppt ist;

  • Dritte Folie: Wir erstellen ein Objekt in der main-Methode. Achten Sie auf die verwendete Syntax: Car name = new Truck();. Wir beginnen mit der Objekterstellung durch Abstraktion und enden mit einer konkreten Implementierung. Dies wird als Komposition bezeichnet. Anschließend weisen wir den Feldern nach Bedarf Werte zu und rufen die überschriebenen Methoden auf.

Voilà! Wenn Sie alles verstanden haben, wissen Sie jetzt, wie man eine abstrakte Klasse verwendet!

Zusammenfassung

Abstraktion ist wahrscheinlich das am schwierigsten zu verstehende Prinzip der OOP, und es ist sehr wahrscheinlich, dass Sie im Moment noch nicht alles verstanden haben. Aber denken Sie nicht, dass Sie damit allein sind. Abstraktion ist ein Konzept, das den meisten Entwicklern anfangs schwerfällt. Mit der Zeit werden Sie besser verstehen, wie Sie effektiv mit Abstraktion und abstrakten Klassen arbeiten können. Abstraktion ist ein entscheidendes Prinzip, da sie es ermöglicht, Programme erweiterbar und sehr flexibel zu gestalten.

1. Was ist Abstraktion in der objektorientierten Programmierung?

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

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 zutreffend?

Select all correct answers

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 1. Kapitel 20

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

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

Abschnitt 1. Kapitel 20
some-alt