Göm menyn

TDDC74 Programmering: Abstraktion och modellering

Project

Vt2 2009

Abstraktioner

Abstraktioner som ni säkert har koll på vid det här laget är viktigt i Scheme, och andra liknande språk.

De gör livet lättare av ett par anledningar

  • Ni slipper ändra på 1000 ställen i er kod om ni vill ändra något i en funktion eller en datatyp.
  • Koden blir lättare att läsa, procedurnamn som är förklarande gör livet mycket lättare för både er och andra
  • Koden blir MYCKET lättare att felsöka (tro mig, det är inte kul att spendera onödig tid på att felsöka ett parantesfel eller något annatenkelt), detta spar oftast oerhört mycket tid i sluttampen när koden börjar bli lång och saker ballar ur. Dvs det blir mycket lättare att isolera fel.
  • Ni som siktar på högre betyg bör ha väl genomtänkta och uppdelade abstraktioner...

Abstraktioner kan delas upp i ett par kategorier beroende på funktion.

  • Generella definitioner (General definitions)
  • Saker som t.ex (define game-board (make-gameboard)) och andra globala variabler.
  • Selektorer (Selectors)
  • Car, cdr, vector-ref etc, procedurer som hämtar ut specifik information ur datatyper och objekt. exempelvis (ask pjäs 'type) är en typisk selektor. eller (cdr pjäs)...osv.
  • Mutatorer (Mutators)
  • set-car!, set-cdr!, vector-set! osv. (ask pjäs set-type 'white) exempelvis. Dvs procedurer som ändrar i datatyper och objekt.
  • Konstruktorer (Constructors)
  • Kopieringsprocedurer, procedurer som skapar nya datatyper, ex (make-board) och motsvarande. Cons hör hemma här.
  • Komparatorer (Comparators)
  • Jämförande procedurer, eq?, list-equal?, equal?, =, långa (and (sak) (not annan_sak))-satser och saker. Detta är till stor hjälp när man skall reda ut långa cond-satser. Även (game-ended?), (place-empty? place), (valid-move? move) osv... Helt enkelt saker som returnerar bool-värden (#t och #f). Värt att tänka på är att cond och if behandlar alla värden utom *#f *som *#t, dvs (if 'ful_symbol 'true_värde 'false_värde) kommer returnera 'true_värde.
  • Verktyg (Utilities)
  • Abstraktioner som inte passar in under ovanstående.

Kommentering

Först i varje kod-fil skall det finnas ett s.k kodhuvud där ni berättar följande

  • Syfte med filen
  • Vilka/vem som skrivit den
  • Senaste ändring och datum.

Alla procedurer skall kommenteras med följande, dock behövs inte Beskrivning på små enkla procedurer där det är uppenbart vad som görs.

  • Beskrivning, vad proceduren gör
  • Indatatyper
  • Utdatatyper

Exempel

En exempelfil från Sebastian Abrahamssons projekt.


Sidansvarig: Anders Märak Leffler
Senast uppdaterad: 2009-03-19