Programmieren_2/assert.md

49 lines
1.5 KiB
Markdown

<!--
title: Assertions
description: Folien für Assertions in Programmieren 2
url: https://git.henriburau.de/tutorien/programmieren-2
header: Programmieren 2 **Tutorium**
footer: Henri Burau
-->
# Vertragsmodell
Definiert das Verhältnis zwischen Klient und Dienstleister.
Ein Dienstleister kann Vorbedingungen für eine Dienstleistungen definieren. Der Klient
kann dann korrekte Ergebnisse erwarten, solange er die Vorbedingungen einhält.
Verträge im Vertragsmodell konzentrieren sich immer auf die Operationen einer Klasse.
In PM2 konzentrieren wir uns vor allem auf die Vorbedingungen.
---
# Assertions
Assertions sind die Umsetzung von Teilen des Vertragsmodells in Java.
```java
int wert = 1;
assert wert < 5 : "wert muss kleiner fünf sein";
// ausgelöst, wenn Condition(wert < 5) nicht gilt.
```
Wird eine Assertion ausgelöst, dann wird das Programm beendet.
**Achtung:** `assert` muss enabled werden
---
## Aufgaben
1) Gegeben ist eine Methode `int getTriangleArea(int a, int b, int c)`, die die Fläche eines Dreiecks berechnet. Wie würde man sicherstellen, dass `a` und `b` kleiner sind als die Hypothenuse `c`?
* ```java
assert c > b && c > a : "Die Hypothenuse darf nicht kürzer als die beiden Schenkel sein."
```
2) Wie würde man überprüfen ob ein String `input` leer oder gleich `null` ist?
* ```java
assert input != null && !input.isEmpty() : "Der String darf nicht null oder leer sein";
```
3) Ergänze die Methoden `damage` und `feed` um eine Implementation und sinnvolle Überprüfungen des Vertragsmodells.