70 lines
1.6 KiB
Markdown
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.
|