49 lines
1.5 KiB
Markdown
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.
|
|
|