57 lines
1.3 KiB
Markdown
57 lines
1.3 KiB
Markdown
<!--
|
|
title: Klassen
|
|
description: Folien für Klassen in Programmieren 1
|
|
url: https://git.henriburau.de/tutorien/programmieren-1
|
|
header: Programmieren 1 **Tutorium**
|
|
footer: Henri Burau und Eva Meinen
|
|
-->
|
|
|
|
# Klassen
|
|
Vorlagen für konkrete Exemplare. Bestehen aus Methoden und Variablen. Eine Klasse ist ein neuer Datentyp.
|
|
|
|
```java
|
|
class Counter {
|
|
private int counts = 0;
|
|
|
|
public void countUp() {
|
|
counts++;
|
|
}
|
|
|
|
public int getCount() {
|
|
return counts;
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Benutzen von Klassen
|
|
Erzeugen von neuen Exemplaren mit `new`. Methoden werden mit der Punktnotation an einem Exemplar aufgerufen.
|
|
|
|
```java
|
|
public static void main(String[] args) {
|
|
Counter counter = new Counter();
|
|
System.out.printf(counter.getCount());
|
|
counter.countUp();
|
|
counter.countUp();
|
|
System.out.printf(counter.getCount());
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
# Aufgaben
|
|
|
|
Schreibe eine Klasse Schaf. Das Schaf soll zwei Felder haben:
|
|
* `age` (in Tagen gemessen, Ganzzahl)
|
|
* `health` (Maximal 10, Minimal 0, Fließkommazahl)
|
|
|
|
Folgende Methoden braucht das Schaf:
|
|
* `getHealth` gibt die aktuelle `health` zurück
|
|
* `damage double ` verringert die `health` um `amount`
|
|
* `feed double` erhöht die `health` um `amount`
|
|
* `sleep` macht das Schaf einen Tag älter
|
|
* `getAge` gibt `age` zurück
|
|
* `isAlive` ist das Schaf noch am Leben?
|
|
* `isAdult` ist das Schaf erwachsen (älter als 10 Tage)?
|