Add termin1
This commit is contained in:
parent
d950b92770
commit
8f24570fa4
25
01-termin.md
25
01-termin.md
|
@ -26,7 +26,7 @@ Henri Burau
|
||||||
|
|
||||||
Online Programming Platform for Software Engineering Eduation
|
Online Programming Platform for Software Engineering Eduation
|
||||||
[https://oppsee.haw-hamburg.de](https://oppsee.haw-hamburg.de)
|
[https://oppsee.haw-hamburg.de](https://oppsee.haw-hamburg.de)
|
||||||
* Wir sind auf der Suche nach motivierten Mitarbeitern
|
* Wir sind auf der Suche nach motivierten Mitarbeiter:innen
|
||||||
- Plattform-Entwickler (Go, Javascript, Typescript)
|
- Plattform-Entwickler (Go, Javascript, Typescript)
|
||||||
- Aufgaben-Entwickler (Java)
|
- Aufgaben-Entwickler (Java)
|
||||||
- (UX-Designer)
|
- (UX-Designer)
|
||||||
|
@ -37,7 +37,7 @@ Online Programming Platform for Software Engineering Eduation
|
||||||
|
|
||||||
Was passiert im Tutorium?
|
Was passiert im Tutorium?
|
||||||
|
|
||||||
* Besprechung und Anwendung der Konzepte aus der Vorlesung
|
* Besprechung und Anwendung der Konzepte aus der Vorlesung
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -46,10 +46,9 @@ Was passiert im Tutorium?
|
||||||
- Aufgaben
|
- Aufgaben
|
||||||
- Tutoriumsfolien
|
- Tutoriumsfolien
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# Hilfestellung im Praktikum
|
# Hilfestellung für das Praktikum
|
||||||
|
|
||||||
Fragen dürfen gerne gestellt werden, wenn:
|
Fragen dürfen gerne gestellt werden, wenn:
|
||||||
|
|
||||||
|
@ -57,3 +56,21 @@ Fragen dürfen gerne gestellt werden, wenn:
|
||||||
* Klar gesagt wird was schon ausprobiert wurde
|
* Klar gesagt wird was schon ausprobiert wurde
|
||||||
* Eine Vermutung geäußert wird was falsch ist
|
* Eine Vermutung geäußert wird was falsch ist
|
||||||
* Mich keiner auf WA anschreibt und mich nach den Lösungen fragt
|
* Mich keiner auf WA anschreibt und mich nach den Lösungen fragt
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Feedback
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Plan für heute
|
||||||
|
|
||||||
|
Themen:
|
||||||
|
|
||||||
|
- **Testen und Asserts**
|
||||||
|
- **Polymorphie und Vererbung**
|
||||||
|
- Generizität
|
||||||
|
- Reflections
|
||||||
|
- Implementationsvererbung
|
||||||
|
- Exceptions
|
||||||
|
- Module
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
<!--
|
||||||
|
title: Assertions
|
||||||
|
description: Folien für Assertions in Programmieren 2
|
||||||
|
url: https://git.haw-hamburg.de/pm2-tutorium/slides
|
||||||
|
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.
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
<!--
|
||||||
|
title: Polymorphie und Vererbung
|
||||||
|
description: Folien für Polymorphie und Vererbung in Programmieren 2
|
||||||
|
url: https://git.haw-hamburg.de/pm2-tutorium/slides
|
||||||
|
header: Programmieren 2 **Tutorium**
|
||||||
|
footer: Henri Burau
|
||||||
|
-->
|
||||||
|
|
||||||
|
# Polymorphie und Vererbung
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Typ und Implementation
|
||||||
|
Der **Typ** ist die Außenansicht auf einen Dienstleister.
|
||||||
|
- Welche Operationen gibt es?
|
||||||
|
- Wie rufe ich diese auf?
|
||||||
|
|
||||||
|
Die **Implementation** ist die Innenansicht auf einen Dienstleister.
|
||||||
|
- Wie wird eine Operation umgesetzt?
|
||||||
|
- Welche Felder habe ich?
|
||||||
|
|
||||||
|
---
|
||||||
|
# Klassen und Interfaces
|
||||||
|
|
||||||
|
**Klassen** haben immer eine Doppelrolle, da sie sowohl einen Typ als auch eine Implementation definieren.
|
||||||
|
**Interfaces** sollten immer nur einen Typ definieren.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Vererbung
|
||||||
|
Weitergeben von bereits geschriebenen Code an Subklassen. Sinnvoll
|
||||||
|
auch zum Aufstellen einer Vererbungshierarchie.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Deklaration
|
||||||
|
|
||||||
|
```java
|
||||||
|
class Shape {
|
||||||
|
public String toString() {
|
||||||
|
return "Shape";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Rectangle extends Shape {
|
||||||
|
public String toString() {
|
||||||
|
return "Rectangle";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Circle extends Shape {
|
||||||
|
public String toString() {
|
||||||
|
return "Circle";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Benutzung
|
||||||
|
|
||||||
|
```java
|
||||||
|
// In main...
|
||||||
|
Shape shape = new Shape();
|
||||||
|
Rectangle rectangle = new Rectangle();
|
||||||
|
shape.toString();
|
||||||
|
rectangle.toString();
|
||||||
|
shape = rectangle;
|
||||||
|
shape.toString();
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Aufgaben
|
||||||
|
* Schreibe eine Klasse `Cow`, welche dieselben Methoden hat wie ein `Sheep`
|
||||||
|
* Ergänze `Cow` und `Sheep` um eine Methode `String makeNoise()`, ein `Schaf` soll `"Mäh"` zurückgeben, eine `Cow` `"Muh"`.
|
||||||
|
* Schreibe nun eine Klasse `Animal`. Von dieser Klasse sollen `Sheep` und `Cow` erben. Alle Methoden die bei `Sheep` und `Cow` genau gleich sind, sollen nun in die Superklasse `Animal` verschoben werden.
|
||||||
|
|
Loading…
Reference in New Issue