Programmieren_2/10-termin.md

70 lines
1.6 KiB
Markdown

<!--
title: Termin 9
description: Folien für den ersten Termin in Programmieren 2
url: https://git.henriburau.de/tutorien/programmieren-2
header: Programmieren 2 **Tutorium**
footer: Henri Burau
-->
# Termin 10
---
# Fragen
---
# Links
[https://git.haw-hamburg.de/pm2-tutorium](https://git.haw-hamburg.de/pm2-tutorium)
- Aufgaben
- Tutoriumsfolien
* In Präsentationsansicht: [https://wi-pm2-tut.informatik.haw-hamburg.de](https://wi-pm2-tut.informatik.haw-hamburg.de/)
---
# Plan für heute
Fragestunde
---
# Fragen
* Was ist die Lösung der Feinschmeckeraufgabe aus der Generics Vorlesung? "Wie mache ich aus einem `Sec<Object>` das nur `String` enthält ein `Set<String>`?"
* Warum ist in der Referenzlösung eine Map in der Wertklassenaufgabe?
* Wie wende ich die Regel "Producer extends consumer super (PECS)" an?
---
# Feinschmeckeraufgabe
---
# Map in Wertklasse
---
# PECS
"Producer extends consumer super" beschreibt das Benutzen von `extends` und `super` bei Collections als generische Parameter.
---
Wenn man in einer Methode nur Sachen aus einer Collection **entnimmt** dann ist die Collection für uns ein Producer und wir benutzen `extends`.
```java
public void listeAuf(Collection<? extends Thing> coll) {
// Sachen aus der Collection herrausnehmen
}
```
Wenn man nur Sachen in die Collection **einfügt** dann ist die Collection für uns ein Consumer und wir benutzen `super`.
```java
public void packeRein(Collection<? super Thing> coll) {
// Sachen in die Collection einfügen
}
```
Will man beides machen (einfügen und entnehmen) dann muss ein fester Typ genutzt werden.