Gå til hovedindhold

TuT Interfaces

Tech uden Tech øvelser - Denne artikel er en del af en serie.
Del 8: Denne artikel

Læringsmål
#

De studerende kan efter aktiviteten:

  • Forklare hvad et interface er; en kontrakt der beskriver hvad noget kan, ikke hvad det er
  • Forklare hvordan én klasse kan implementere flere interfaces
  • Skelne mellem interface (kontrakt) og klasse (implementation)
  • Skelne mellem referencens type og objektets type

Forudsætninger
#

De studerende forventes at kende til:

  • Klasser og objekter i Java
  • Begrebet metode og returtype

Kort beskrivelse
#

Hver studerende tegner sig selv i midten af et ark og tilføjer de “interfaces” de implementerer i dagligdagen — fx Friend, Student, SonInLaw, Mom, Colleague. Ved hvert interface skriver de hvilke metoder det tilbyder. Hvad kan du i den rolle? Hvad forventer andre af dig?

Tegningen bliver en direkte analogi til Java-interfaces. En person implementerer mange kontrakter, og hver kontrakt eksponerer et bestemt sæt operationer.

Faglig kontekst
#

  • Semester/fag: 1. semester, objektorienteret programmering
  • Holdstørrelse: Skalerer til alle holdstørrelser
  • Organisering: I grupper. Nogle præsenterer for klassen bagefter

Trin-for-trin
#

  1. Underviseren introducerer opgaven: Tegn dig selv. Tilføj de roller du har i livet. Skriv hvad hver rolle forventer af dig — hvad kan du i den rolle?
  2. De studerende tegner i grupper (10–15 min.).
  3. Frivillige præsenterer for klassen. Underviseren stiller spørgsmål: Kan din Friend-rolle og din Student-rolle have samme metode? Kan de have forskellig implementation?
  4. Underviseren kobler tegningerne til Java-interfaces: person = klasse, rolle = interface, metoder = kontrakt.
  5. De studerende skriver Java-kode for ét eller flere af deres egne interfaces.

Materialer
#

  • Blankt A3-papir, ét ark pr. studerende
  • Tusser. Helst farvede så interfaces er visuelle adskilte

Tidsforbrug
#

Tegning: 20 min. Præsentationer og kobling til Java: 20 min. I alt ca. 35–40 min.

Modtagelse
#

De studerende forstod intuitivt at underviseren kunne have metoder som Mom, som ikke kunne kaldes, når hun optrådte som Teacher. Det var lidt svært for dem lave interfaces og metoder for sig selv, men den analoge form med papir gjorde, at de bare kunne starte forfra.

Selv de svageste studerende endte med at stå og forklare hinanden at “Du er jo Bror for dine søskende, men Ven for os”.

Udvidelser
#

  • Lad de studerende finde en metode der går igen på tværs af flere interfaces (fx listen()) og diskuter hvad det betyder for implementation
  • Brug tegningerne som udgangspunkt for en klassediskussion om forskellen på interface og abstrakt klasse

Noter til underviseren
#

Aktiviteten virker fordi den er personlig uden at være udstillende — der er ingen forkerte roller og ingen forkert tegning. Det er helt fint at vælge neutrale roller som Student, Citizen og Passenger — man behøver ikke dele noget personligt for at pointen lander. Underviseren bør gøre dette eksplicit i opgaveformuleringen.

Det frugtbare diskussionspunkt er når to interfaces har metoder med samme navn men forskellig betydning — fx listen() som Friend og listen() som Student. Det åbner for at interfaces beskriver forventninger, ikke adfærd, og at implementationsklassen bestemmer hvad der faktisk sker.

Koblingen til Java er tæt og sker samme dag — tegningen er introduktionen, ikke en opvarmning.

Man må godt prøve flere gange
Tech uden Tech øvelser - Denne artikel er en del af en serie.
Del 8: Denne artikel