# Øving 5: Grensesnitt

**Øvingsmål**
* Lære hva grensesnitt er og hvordan disse defineres
* Lære hvordan man implementerer et grensesnitt
* Kjenne til grunnleggende funksjonelle grensesnitt

**Øvingskrav**
* Kunne lage grensesnitt og implementere disse med andre klasser
* Kunne bruke grensesnittene Comparable<T> og Comparator<T>
* Kunne bruke grensesnittene Iterable<T> og Iterator<T>

## Dette må du gjøre
### Del 1: Programmering
Gjør **minst to** av oppgavene under. Oppgavene (unntatt Twitter) skal lagres i `ovinger/src/main/java/interfaces`. 
Filer til Twitter-oppgaven skal lagres i `ovinger/src/main/java/interfaces.twitter`.

* [CardContainer](./CardContainer.md) 
* [CardComparison](./CardComparison.md)
* [CardPredicate](./CardPredicate.md)
* [Twitter](./Twitter.md)
* [Named](./Named.md)
* [BinaryComputingIterator](./BinaryComputingIterator.md) 
* [StringGrid](./StringGrid.md)
* [RPNKalkulator med funksjonelle grensesnitt](./RPNCalc.md)

Disse oppgavene har noe ulik vanskelighetsgrad og omfang, og trolig stigende (i.e. CardContainer den enkleste og StringGrid den vanskeligste). 
Alle er høyst eksamensrelevante og det anbefales følgelig å ta en titt på alle sammen.

### Del 2: Debugging
Gjør følgende oppgave om debugging og vis frem løsningen til studass på sal: 

*  [StringMergingIterator](./StringMergingIterator.md)

### Del 3: Sekvensdiagram
Lag et [sekvensdiagram](https://www.ntnu.no/wiki/display/tdt4100/Sekvensdiagrammer) som viser samhandlingen mellom et 
`StringMergingIterator`-objekt og dens argumenter. Dvs. lag et [sekvensdiagram](https://www.ntnu.no/wiki/display/tdt4100/Sekvensdiagrammer) 
som viser hvordan `StringMergingIterator` gjennom metodekall fletter verdiene fra de to gitte iteratorene (som blir tatt inn som argumentene til 
`StringMergingIterator`-objektet).

### Hjelp / mistanke om bugs

Ved spørsmål eller behov for hjelp konsulter studassen din i saltiden hans / hennes. Du kan også oppsøke andre studasser på sal eller legge ut et innlegg på [Piazza](https://piazza.com/).

### Godkjenning

Last opp kildekode på Blackboard innen den angitte innleveringsfristen. Innlevert kode skal demonstreres for en læringsassistent innen én uke etter innleveringsfrist. Se for øvrig Blackboard-sidene for informasjon rundt organisering av øvingsopplegget og det tilhørende øvingsreglementet.