Skip to content
Snippets Groups Projects
Commit a2d96774 authored by Hallvard Trætteberg's avatar Hallvard Trætteberg
Browse files

Fikset kluss ved merging.

parent 626302b3
No related branches found
No related tags found
No related merge requests found
# Småplukk
Med mindre noe annet er sagt, så skal klassen implementeres.
## 1 - Iterasjon med iteratorer
Disse oppgavene dreier seg om ulik bruk av iteratorer. Med mindre noe annet er sagt, så skal klassen(e) implementeres.
### 1.1 - for-each, Iterable og Iterator
Forklar med tekst og kode sammenhengen mellom for-each-syntaksen, altså den på formen `for (<type> <var> : <uttrykk>) ...`, og **Iterable** og **Iterator**-grensesnittene.
Forklar med tekst og kode sammenhengen mellom for-each-syntaksen, altså den på formen `for (<type> <var> : <uttrykk>) ...`, og **Iterable**- og **Iterator**-grensesnittene.
Skriv svaret i [svar.md](../../svar.md)-fila.
### 1.2 - StringBuilderCharacterIterator
[StringBuilderCharacterIterator](StringBuilderCharacterIterator.java)-klassen skal implementere en iterator av tegnene (`Character`) inni en `StringBuilder`. Klassen `StringBuilder` er en `String`-aktig klasse med den (viktige) forskjellen at instanser kan endres etter opprettelsen.
[StringBuilderCharacterIterator](StringBuilderCharacterIterator.java)-klassen skal implementere en iterator av tegnene (Character) inni en `StringBuilder`. Klassen `StringBuilder` er en `String`-aktig klasse med den (viktige) forskjellen at instanser kan endres etter opprettelsen. Klassen testes av StringBuilderCharacterIteratorTest.
Klassen testes av StringBuilderCharacterIteratorTest.
- Implementer StringBuilderCharacterIterator.
### 1.3 - StringBooleanMetaIterator
[StringBooleanMetaIterator](StringBooleanMetaIterator.java)-klassen er en såkalt meta-iterator, ved at den bruker andre iteratorer som sin kilde av elementer. Akkurat denne meta-iteratoren tar inn to andre iteratorer, en for `String` og en for `Boolean`, hvilke elementer i den første som skal videreformidles eller filtreres bort styres av den andre. De to iteratorene kan antas å være like lange.
Klassen [StringBooleanMetaIterator](StringBooleanMetaIterator.java) er en såkalt meta-iterator, ved at den bruker andre iteratorer som sin kilde av elementer. Akkurat denne meta-iteratoren tar inn to andre iteratorer, hvilke elementer i den første som skal videreformidles eller filtreres bort styres av den andre. Den første itererer over strenger, den andre itererer over boolske verdier. De to iteratorene kan antas å være like lange.
Eksempel: Hvis den første iteratoren gir ut sekvensen `"meta-iteratorer", "er", "ikke", "kult"` og den andre gir ut `true, true, false, true` så skal StringBooleanMetaIterator-instansen gi ut `"meta-iteratorer", "er", "kult"`. Det tredje elementet (`"ikke"`) ble altså utelatt siden den tredje logiske verdien var `false`.
......@@ -26,6 +26,9 @@ Eksempel: Hvis den første iteratoren gir ut sekvensen `"meta-iteratorer", "er",
Klassen testes av StringBooleanMetaIteratorTest.
- Implementer StringBooleanMetaIterator.
- Du kan forvente at de to sekvensene (strenger og boolske verdier) er like lange.
### 1.4 - EverySecondMetaIterator og EverySecondMetaIteratorTest
[EverySecondMetaIterator](EverySecondMetaIterator.java) er også en meta-iterator. Den tar inn en annen iterator og slipper gjennom _annenhvert_ element.
......@@ -36,8 +39,8 @@ Klassen er "ferdig"-implementert i den forstand at den virker for et eksempel-ti
Din oppgave er skrive to testmetoder som identifiserer begge feilene (ved at testmetoden utløser unntak på vanlig testmetodevis):
- én testmetode skal identifiserer et annet tilfelle som implementasjonen kræsjer på
- en annen testmetoden skal identifisere den fundamentale feilen
- En testmetode skal identifiserer et annet tilfelle som implementasjonen kræsjer på.
- En annen testmetoden skal identifisere den fundamentale feilen.
Du skal altså _ikke_ rette feilene, men skrive gode testmetoder for å identifisere dem.
......@@ -45,4 +48,7 @@ Du skal altså _ikke_ rette feilene, men skrive gode testmetoder for å identi
Her er oppgaven å skrive de manglende metodene i [LambdaUtilities](LambdaUtilities.java) iht. det som står i javadoc-en over metodene. Metodesignaturene (parameter- og retur-typer) skal _ikke_ endres.
- Implementer metodene beskrevet i [LambdaUtilities](LambdaUtilities.java).
- Over hver metode i kildekoden finner dere en beskriver forventet oppførsel.
`main`-metoden inneholder eksempler må bruk av metodene. (Vi har ikke laget noen testklasse for dere til denne oppgaven.)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment