01.08.2013 Views

Datorstödd inlärning av grammatik och språkteori - Stp

Datorstödd inlärning av grammatik och språkteori - Stp

Datorstödd inlärning av grammatik och språkteori - Stp

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

2 Grammatikmodellen<br />

I det här kapitlet kommer jag att ge en beskrivning <strong>av</strong><br />

<strong>grammatik</strong>modellen <strong>och</strong> dess byggstenar: objektorientering,<br />

dependens<strong>grammatik</strong> <strong>och</strong> unifiering. Låt mig först presentera<br />

<strong>grammatik</strong>modellens byggstenar, sedan <strong>grammatik</strong>modellen.<br />

2.1 Objektorientering<br />

Objektorienterad programmering är en metodik för<br />

datorprogrammering <strong>och</strong> systemutveckling där ett program betraktas som<br />

en modell <strong>av</strong> en verklig eller imaginär fysisk värld <strong>av</strong> objekt.<br />

Objektorientering har fått stor användning för grafiska arbetsstationer<br />

<strong>och</strong> persondatorer där det är naturligt att beskriva det som syns på<br />

skärmen som objekt. Simula, som publicerades 1973 <strong>och</strong> som fick stor<br />

spridning inom Norden, var det första programspråk som rymde<br />

objektorienterade begrepp. Termen objektorientering kom dock först<br />

kring 1980 med programspråket Smalltalk. Sedan dess har<br />

objektorienterade programspråk ökat i popularitet <strong>och</strong> antal (NE, 1994).<br />

Exempel på moderna objektorienterade programspråk är C++ <strong>och</strong><br />

Prolog++ i vilka <strong>grammatik</strong>modellen är skriven.<br />

2.1.1 Centrala begrepp<br />

Centrala begrepp i objektorienterad programmering är: klass, objekt,<br />

instans, metod, nedärvning, överskrivning samt inkapsling.<br />

En klass är en abstrakt datatyp som kan ses som en beskrivning <strong>av</strong> (en<br />

mall för) konkreta objekt, s.k. instanser <strong>av</strong> klassen. Klasserna innehåller<br />

en beskrivning <strong>av</strong> vilka data (attribut) <strong>och</strong> vilka metoder instanserna skall<br />

ha. En metod hos ett objekt är en procedur/funktion, som endast opererar<br />

på objektets egna data.<br />

Klasserna bildar en hierarki genom att varje ny klass definieras som en<br />

underklass till noll, en eller flera tidigare definierade klasser. Utöver sina<br />

egna attribut <strong>och</strong> metoder ärver en klass alla attribut <strong>och</strong> metoder från<br />

sina överordnade klasser vilka i sin tur har ärvt alla attribut <strong>och</strong> metoder<br />

från sina överordnade klasser... Detta kallas för nedärvning. En instans <strong>av</strong><br />

en klass får klassens egna <strong>och</strong> alla dess nedärvda egenskaper.<br />

Om klassen A har en metod, vars namn är M, <strong>och</strong> B är en underordnad<br />

klass till A, medför arvsmekanismen att B får en metod vars namn är M.<br />

Om inget annat anges är det metoden som är definierad i A som 'knyts'<br />

till namnet M. Det finns en möjlighet att definiera om (specialisera) M i<br />

B. Detta kallas för att överskriva M i B. Om C i sin tur är en<br />

3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!