Skip to content
On this page
5. Abstraction
1

Abstraction

Objektorientierte Programmierung 2

05.06.2023
5. Abstraction
2

Werkzeuge der Abstraktion

  • Klasse
  • Interface
  • Vererbung
  • Abstrakte Klasse
  • Generics
05.06.2023
5. Abstraction
3

Warum abstrahieren?

  • Code wiederverwenden
  • Code testbar machen
  • Code mit weniger Fehlern erstellen
  • weniger Copy-Paste
05.06.2023
5. Abstraction
4

Klasse

  • Eine Klasse ist ein Datentyp, welcher Attribute und Methoden haben kann.
  • static beschreibt Attribute und Methoden, welche ohne Instanz verwendet werden können (stateless).
  • Attribute und Methoden hängen immer an einer Instanz einer Klasse und sind darum stateful.
05.06.2023
5. Abstraction
5

Instrumente einer Klasse

  • extends heisst die Klasse erbt von einer anderen Klasse
  • implements heisst die Klasse implementiert ein Interface
05.06.2023
5. Abstraction
6

Erben

Eine Klasse, welche von einer Basisklasse erbt, beinhaltet alle Attribute und Methoden der Basisklasse.

Eine Klasse kann immer nur von genau einer anderen Klasse erben.

05.06.2023
5. Abstraction

Erben: Beispiel

7
java
public class Character {

	private String name = "";

	public Character(String name) {
		this.name = name;
	}

	void introduce() {
		System.out.println("Hi, I am " + name);
	}
}

class Mario extends Character {

	public Mario(String name) {
		super("Mario");
	}
}
05.06.2023
5. Abstraction
8

final class

Eine Klasse, welche als final deklariert wurde, kann nicht weitervererbt werden.

05.06.2023
5. Abstraction
9

Interfaces

Ein Interface beschreibt mindestens eine Methode, welche von der Klasse implementiert werden muss.

Eine Klasse, welche ein Interface implementiert, kann immer in das Interface gecastet werden.

05.06.2023
5. Abstraction
10

Interfaces zur Abstraktion

Interfaces sind absolut zentral bei der Abstraktion. Sie erlauben das saubere trennen von Funktionalität einer Klasse.

Interfaces dienen als Hauptinstrument um hohe Testbarkeit und Modularität zu erreichen.

05.06.2023
5. Abstraction
11

Namen von Interfaces

Oft werden Verben im Partizip verwendet. Clickable, Drawable, Observable. Der Name beschreibt oft, was das Interface "machen kann".

05.06.2023
5. Abstraction
12

Interfaces Beispiel

java
interface Presentable {
	void present();
}

public class Character implements Presentable {

	private String name;

	@Override
	public void present() {
		System.out.println("Hey, I am " + name);
	}
}
05.06.2023
5. Abstraction
13

Anonyme Objekte von Interfaces instanzieren

java
interface Presentable {
	void present();
}

public class Main {

	public static void main(String[] args) {
		Presentable mario = new Presentable() {
			@Override
			public void present() {
				System.out.println("Hi, it's a me, Mario");
			}
		};
	}
}
05.06.2023
5. Abstraction
14

Abstrakte Klassen

Interfaces versprechen Methoden. Interfaces können nie Attribute vorschreiben. Abstrakte Klassen erlauben genau das.

Abstrakte Klassen können nicht instanziert werden.

05.06.2023
5. Abstraction
15

Abstrakte Klasse wie ein Interface verwenden

Wie beim Interface können abstrakte Klassen Methoden als abstract deklarieren. Das heisst, die Methode muss von der erbenden Klasse implementiert werden. Diese Funktionalität widerspiegelt 1:1, was mit Interfaces möglich ist.

05.06.2023
5. Abstraction

Beispiel abstract class

16
java

abstract class Character {
	String name;

	public Character(String name) {
		this.name = name;
	}

	abstract void present();
}

class Mario extends Character {

	public Mario(String name) {
		super("Mario");
	}

	@Override
	public void present() {
		System.out.println("Hi, it'sa me, " + name);
	}
}
05.06.2023