Imperativ programmering

Storlek: px
Starta visningen från sidan:

Download "Imperativ programmering"

Transkript

1 Imperativ programmering Vad är det? Ett programmeringsparadigm att jämföras med funktionell programmering och logikprogrammering. Vanlig programmering Programmen skrivs som en sekvens av satser (kommandon) Programmen struktureras med hjälp av procedurer (subrutiner, underprogram, funktioner... ) Kommandon ändrar tillstånd och funktioner kan ha sidoeekter Den äldsta programmeringsmetodiken på grund av dess nära koppling till hårdvaran (von Neuman-modellen) De äldsta språken (Fortran, algol, C,... ) konstruerades för den tekniken ( )

2 Imperativ programmering forts Ett centralt begrepp i all programmering är abstraktion. Med detta menas att man döljer tekniska detaljer, nner gemensamma drag hos problem och hittar generella lösningar. Programmeringsspråken i sig innehåller abstraktioner i form av grundläggande operationer i själva språket (aritmetik på olika datatyper, selektion, iteration), fördenierade funktioner (t ex printf, getchar, sin... ) Funktioner är det äldsta sättet för programmeraren att skapa egna abstraktioner. Andra abstraktionsmekanismer: moduler, klasser, paket ( )

3 Imperativ programmering forts På 60-talet havererade många större programmeringsprojekt och andra drabbades av kraftiga förseningar skenande kostnader, Dessutom: Programmen uppfyllde inte kravspecikationen och koden gick inte att förstå och underhålla Motmedel: Software engineering Nya programmeringstekniker ( )

4 Strukturerad programmering Edsger Dijkstra: Go To Statement Considered Harmful. Böhm och Jacopini: Alla beräkningsbara funktioner kan implementeras med kontrollstrukturerna sekvens, selektion typ if (och/eller switch) och iteration typ while, (och/eller for, do). Handlar således mycket om att programmera utan goto. Dock brukar man acceptera strukturerade goto-satser som break, continue, return och throw. Pascal utvecklades av Niklaus Wirth som var en av profeterna för strukturerad programmering. Pascal resulterar i monolitiska program. ( )

5 Objektorienterad programmering (OOP) Hittills hade programmen strukturerats runt algoritmer. Ole-Johan Dahl och Kristen Nygaard utvecklade Simula 67 där programmen i stället (kunde) struktureras kring de data som skulle behandlas vilket lade grunden för det objektorientering. Språket innehöll väsentliga mekanismer som man förknippar med med OOP: klasser, klasshierarkier, inkapsling, information hiding, objekt, polymor ( )

6 Objektorientering: klasser Klassen är det mest centrala begreppet i OOP. En klass är en abstraktion av något begrepp ett program hanterar. Man kan också säga att en klass är en (ritning till en) modell av något. Exempel: Klassen Car i traksimlueringen. En verklig bil har många egenskaper men vi modellerar endast de egenskaper vi behöver. Klassen Queue är en abstraktion (modell) för en kö oavsett vad som nns i kön Klassen (egentligen interfacet) Map är en abstraktion av en avbildning Klassen Addition är en abstraktion av alla möjliga additioner Klassen SyntaxException är en abstraktion av alla syntaxfel användaren kan göra ( )

7 Klasser forts En klass-beskrivning innehåller en förteckning över attribut (data) operationer (metoder) som ingår. I Java nns denieras alltid metoderna i klassen (undantag: abstrakta klasser) men i t ex C++ ligger ofta denitionerna på annat ställe (.h respektive.c-ler) Klasser kan instansieras till objekt dvs man skapar en modell enligt ritningen. I denna process allokeras minnesutrymme för för attributen och dessa tilldelas attributen konkreta värden. Instansieringen initieras med operatorn new och själva initieringen utförs av koden i en konstruktor. ( )

8 Inkapsling En annan viktig princip är inkapsling eller information hiding vilket innebär att all åtkomst till objektet skall gå via ett väldenierade interface-metoder och att användaren av klassen inte skall behöva känna till detaljer i klassens implementation. Man vinner att problemet blir strukturerat man behöver inte tänka på allt hela tiden att klassen själv kan kontrollera att den används på rätt sätt att det går att ändra i implementationen (för att rätta fel, öka eektivitet mm) utan att användarkoden behöver ändras. ( )

9 Inkapsling forts Inkapsling åstadkommes genom att ge attribut och metoder har olika synlighet: private förhindrar access från alla andra klasser paket förhindra access från andra paket protected förhindra access från andra klasser än subklasser public inga hinder ( )

10 Klasshierarkier och arv De olika klasserna i ett program kan byggas i hierarkier (basklasser subklasser). Klasser högre upp i hierarkien representerar högre abstraktionsnivåer medan klasser lägre ner står för ökad specialisering. Exempel: Fordon > Motorfordon > Lastbil Component > Container > Window > Frame > JFrame ( )

11 Klasshierarkier och arv forts Collection<E> contains(...) add(...) remove(...) iterator()... Set<E>... SortedSet<E>... List<E>... Interface TreeSet<E> HashSet<E> LinkedList<E> ArrayList<E> Vector<E> Klasser Stack<E>... ( )

12 Klasshierarkier och arv forts Map<K,V> containskey(...) containsvalue(...) put(...) get(...)... SortedMap<K,V>... Interface TreeMap<K,V>... HashTable<K,V>... HashMap<K,V>... Klasser Properties<K,V>... ( )

13 Klasshierarkier och arv forts Sexpr abstract String getname() abstract Sexpr eval(map) abstract int priority() Sexpr diff(sexpr) double getvalue() boolean isconstant()... Command abstract Atom abstract Unary abstract Binary abstract String tostring() Sexpr argument String tostring() int priority() Sexpr left Sexpr right String tostring() Vars Sexpr eval(map) Quit Sexpr eval(map) Variable String ident Sexpr eval(map) String getname() Sexpr diff(sexpr) Constant Sin Cos Exp Log Evaluation Addition Subtraction Multiplication Division Assignment double value Quotation Differentiation Sexpr eval(map) String getname() Sexpr diff(sexpr) double getvalue() boolean isconstant() Negation Sexpr eval(map) String getname() Sexpr diff(sexpr) Sexpr eval(map) String getname() Sexpr diff(sexpr) int priority() ( )

14 Polymor Polymor existerar i många former (:-) De aritmetiska operatorerna är polymorfa eftersom de utför olika operationer beroende på operandernas typer (heltal, yttal) I bl a C++ kan man lägga till egna denitioner för olika datatyper (klasser) för alla operatorer (så kallad operatoröverlagring) Samma namn på funktioner (metoder) som har olika signatur Mest väsentligt för OOP: Man kan deniera en metod på era ställen i en klasshierarki och det är den som passar typen (klassen) bäst som som används dynamisk bindning. Exempel: tostring(), isconstant(), getvalue() Mallar (generics) kan ses som ett hjälpmedel för att åstadkomma polymor ( )

15 Andra viktiga begrepp i diskuterat Iteratorer Undantag Parameteröverföringsmetoder: värdeanrop, referensanrop Tekniken att bygga rekursiva strukturer. Exempel: inlägg i mängd organiserad som ett BST (dvs ett TreeSet): TreeNode insert(int key, TreeNode r) { if (r==null) return new TreeNode(key); else if ( key < r.key ) r.left = insert(key, r.left); else if ( key > r.key ) { r.right = insert(key, r.right); return this; ( )

16 Java-detaljer Struktur: en klass per l (huvudsakligen). Paket. Objekthantering: alltid med referenser Minneshantering: automatisk Alltid konstruktorer. super Metoderna tostring() och equals(object o) static Arvshierarkier med extends Abstrakta klasser Interface (interface, implements) Generics: klasser med typparametrar ( )

17 C-programmering Struktur: deklarationer på.h-ler, implementationer på.c-ler. Preprocessor: #include, #define, #ifndef, #endif struct Funktioner: värdeanrop, värderetur, kan returnera struct Pekare och pekararitmetik. Arrayer Minneshantering: explicit med malloc och free. Ingen skräpsamling! ( )

18 Hur programmerar man objektorienterat i C Exempel: Klassen Die Använd struct i stället för klass: typedef struct die { int numberofsides; int value; die, *Die; ( )

19 Die i C Implementera konstruktorer som funktioner som returnerar pekare: Die newdie(int nos) { Die d = (Die) malloc(sizeof(die)); d->numberofsides = nos; roll(d); return d; ( )

20 Die i C Skriv accessfunktioner där en parameter svarar mot this-pekaren. int getvalue(die d) { return d->value; int roll(die d) { return d->value = rand()%(d->numberofsides) + 1; Det går inte att dölja attributen utan man måste vara disciplinerad! ( )

21 Användning av Die int main() { Die t1 = newdie(42); Die t2 = newdie(42); int n = 0; while ( roll(t1)!=roll(t2) ) n++; printf("tärningarna blev lika efter %d slag\n", n); printf("värdet var %d\n", getvalue(t1)); return 0; /* Körresultat: vranx$ gcc -o die die.c vranx$ die Tärningarna blev lika efter 7 slag Värdet var 16 */ ( )

22 Exempel: En map i C /* map.h Avbildning från teckensträngar till VT */ #ifndef map #define map #define VT void * // Definierar värdetyp typedef struct listnode { char *key; VT value; struct listnode *next; listnode, *link; typedef struct mapobj { link first; link current; mapobj, *Map; ( )

23 forts map.h Map newmap(); // Skapa map void deletemap(); // Frigör allt allokerat utrymme VT put(char *key, VT v, Map m); // Lagrar nyckel-värde-par VT get(char *key, Map m); // Söker värde int containskey(char *key, Map m); // Undersöker om värde finns void printmap(map m, void vprint(void *)); #endif // end of map.h ( )

24 Klasshierarkier i C? /* sexpr.h - deklarationsfil för symboliska uttryck */ #include "map.h" typedef enum stype { CONSTANT, VARIABLE, NEGATION, QUOTATION, EVALUATION, EXP, LOG, SIN, COS, ADDITION, SUBTRACTION, MULTIPLICATION, DIVISION, ASSIGNMENT, DIFFERENTIATION stype; typedef struct sexprobj { stype type; char *name; int priority; double value; struct sexprobj *left, *right; sexprobj, *Sexpr; ( )

25 sexpr.h forts // Konstruktorer Sexpr newconstant(double val); Sexpr newvariable(char *id); Sexpr newunary(stype type, char *name, int prio, Sexpr arg); Sexpr newbinary(stype type, char *name, int prio, Sexpr left, Sexpr right); Sexpr newnegation(sexpr arg); Sexpr newquotation(sexpr arg); Sexpr newevaluation(sexpr arg); Sexpr newexp(sexpr arg); Sexpr newlog(sexpr arg); Sexpr newsin(sexpr arg); Sexpr newcos(sexpr arg); Sexpr newaddition(sexpr left, Sexpr right); Sexpr newsubtraction(sexpr left, Sexpr right); Sexpr newmultiplication(sexpr left, Sexpr right); Sexpr newdivision(sexpr left, Sexpr right); Sexpr newassignment(sexpr left, Sexpr right); Sexpr newdifferentiation(sexpr left, Sexpr right); ( )

26 sexpr.h forts // Symbolisk aritmetik (klassen Symbolic) Sexpr negate(sexpr a); Sexpr sine(sexpr a); Sexpr cosine(sexpr a); Sexpr expe(sexpr a); Sexpr loge(sexpr a); Sexpr add(sexpr a, Sexpr b); Sexpr subtract(sexpr a, Sexpr b); Sexpr multiply(sexpr a, Sexpr b); Sexpr divide(sexpr a, Sexpr b); Sexpr diff(sexpr a, Sexpr b); ( )

27 sexpr.h forts // För utskrift (tostring-metoder) void print(sexpr s); // Evaluering (eval-metoderna) Sexpr eval(sexpr e, Map m); // Felhantering void evaluationerror(char *msg, Sexpr e); // end of sexpr.h ( )

28 Sexpr i C forts Axplock ur sexpr.c /* sexpr.c */ #include <setjmp.h> #include "sexpr.h" #include "map.h" extern jmp_buf environment; // Återstartsmiljö efter fel Sexpr newconstant(double value) { // Konstruktor för Constant Sexpr o = (Sexpr) malloc(sizeof(sexprobj)); char *s = (char*) malloc(15*sizeof(char)); o->type = CONSTANT; o->value = value; sprintf(s, "%0.4g", value); o->name = s; o->priority = 10; o->left = o->right = NULL; return o; ( )

29 sexpr.c : konstruktor för Unary Sexpr newunary(stype type, char *name, int priority, Sexpr arg) { Sexpr o = (Sexpr) malloc(sizeof(sexprobj)); o->type = type; o->left = NULL; o->right = arg; o->value = 0; o->name = strdup(name); o->priority = priority; return o; ( )

30 sexpr.c : konstruktor för Binary Sexpr newbinary(stype type, char *name, int priority, Sexpr left, Sexpr rig Sexpr o = (Sexpr) malloc(sizeof(sexprobj)); o->type = type; o->left = left; o->right = right; o->value = 0; o->name = strdup(name); o->priority = priority; return o; ( )

31 sexpr.c : några konstruktorer Sexpr newnegation(sexpr arg) { return newunary(negation, "-", 9, arg); // super Sexpr newquotation(sexpr arg) { return newunary(quotation, "\"", 9, arg); // super Sexpr newevaluation(sexpr arg) { return newunary(evaluation, "&", 9, arg); // super Sexpr newaddition(sexpr left, Sexpr right) { return newbinary(addition, "+", 3, left, right); // super ( )

32 sexpr.c : print void print(sexpr s) { if (s->left!= NULL) { if (s->left->priority < s->priority) putchar('('); print(s->left); if (s->left->priority < s->priority) putchar(')'); printf("%s ", s->name); if (s->right!= NULL) { if (s->priority >= s->right->priority) putchar('('); print(s->right); if (s->priority >= s->right->priority) putchar(')'); // På Sexpr-nivån! ( )

33 sexpr.c : eval Sexpr eval(sexpr e, Map m) { Sexpr result= newvariable("*error*"); switch (e->type) { case CONSTANT: result = e; break; case VARIABLE: if (containskey(e->name, m)) result = (Sexpr) get(e->name, m); else result = e; break; case NEGATION: result = negate(eval(e->right, m)); break; case QUOTATION: result = e->right; break; case EVALUATION: result = eval( eval(e->right, m), m); break; case SIN: result = sine( eval(e->right, m) ); break; ( )

34 sexpr.c : eval forts case ADDITION: result = add(eval(e->left, m), eval(e->right, m)); break; case SUBTRACTION: result = subtract(eval(e->left, m), eval(e->right, m)); break; case MULTIPLICATION: result = multiply(eval(e->left, m), eval(e->right, m)); break; case DIVISION: result = divide(eval(e->left, m), eval(e->right, m)); break; case ASSIGNMENT: result = eval(e->left, m); put(e->right->name, (void *)result, m); break; case DIFFERENTIATION: result = diff(eval(e->left, m), e->right); break; default: evaluationerror("eval not yet defined", e); return result; ( )

35 sexpr.c : add Symbolisk aritmetik: Sexpr add(sexpr a, Sexpr b) { if (a->type==constant && b->type==constant) return newconstant(a->value + b->value); else if (iszero(a)) return b; else if (iszero(b)) return a; else return newaddition(a,b); ( )

36 sexpr.c : di Sexpr diff(sexpr y, Sexpr x) { switch (y->type) { case CONSTANT: return newconstant(0.); case VARIABLE: if (strcmp(y->name,x->name)==0) return newconstant(1.); else return newconstant(0.); case NEGATION: return negate(diff(y->right,x)); case ADDITION: return add(diff(y->left,x), diff(y->right,x)); case SUBTRACTION: return subtract(diff(y->left,x), diff(y->right,x));... default: evaluationerror("kan inte derivera", y); return NULL; ( )

37 sexpr.c : evaluationerror void evaluationerror(char *msg, Sexpr e) { printf("*** Evalueringsfel: %s \n", msg); printf(" Vid operationen %s\n", e->name); longjmp(environment, 99); // Till återstartpunkten ( )

38 parser.h /* parser.h */ #include "tokenizer.h" #include "map.h" #include "sexpr.h" void statement(tokenizer t); Sexpr assignment(tokenizer t); Sexpr expression(tokenizer t); Sexpr term(tokenizer t); Sexpr factor(tokenizer t); Sexpr primary(tokenizer t); void syntaxerror(char *msg, Tokenizer t); ( )

39 parser.c : main /* parser.c */ #include <stdio.h> #include <setjmp.h> #include <string.h> #include "parser.h" #include "tokenizer.h" #include "map.h" #include "sexpr.h" jmp_buf environment; const int MAX_LINE_LENGTH=1000; int main() { char line[max_line_length]; Tokenizer tn = newtokenizer(line); Map map = newmap(); while (1) { ( )

40 parser.c : main forts setjmp(environment); // Återstart efter fel do { printf("? "); fgets(line, MAX_LINE_LENGTH, stdin); while (strlen(line)<=1); // Så länge tomma rader resettokenizer(tn); nexttoken(tn); if (strcmp(tn->sval,"quit")==0) break; else if (strcmp(tn->sval, "vars")==0 ) { printmap( map, print ); else { Sexpr e = assignment(tn); if ( tn->ttype!=tt_eos ) syntaxerror("förväntade radslut", tn); nexttoken(tn); print(e); printf("\n"); e = eval(e, map); print(e); printf("\n"); ( )

41 parser.c : statement void statement(tokenizer t) { Sexpr result; result = assignment(t); printf(" = "); print(result); printf("\n"); if ( t->ttype!=tt_eos ) syntaxerror("förväntade radslut", t); nexttoken(t); ( )

42 parser.c : assignment Sexpr assignment(tokenizer t) { Sexpr result = expression(t); while(t->ttype=='=') { nexttoken(t); if ( t->ttype!=tt_word ) syntaxerror("expected identifier after '='", t); else result = newassignment(result, newvariable(t->sval)); nexttoken(t); return result; ( )

43 parser.c : expression Sexpr expression(tokenizer t) { Sexpr sum = term(t); char c; while ( ((c=t->ttype)=='+') (c=='-') ) { nexttoken(t); if (c=='+') { sum = newaddition(sum, term(t)); else { sum = newsubtraction(sum, term(t)); return sum; ( )

44 parser.c : primary Sexpr primary(tokenizer t) { char *sval; Sexpr result = NULL; switch (t->ttype) { case '(': nexttoken(t); result = assignment(t); if ( t->ttype!=')' ) syntaxerror("förväntade ')'", t); nexttoken(t); break; case '-': nexttoken(t); result = newnegation(primary(t)); break; case '"': nexttoken(t); result = newquotation(primary(t)); break; ( )

45 parser.c : primary forts case '&': nexttoken(t); result = newevaluation(primary(t)); break; case TT_NUMBER: result = newconstant(t->nval); nexttoken(t); break; case TT_WORD: sval = strdup(t->sval); nexttoken(t); if ( strcmp(sval, "exp") == 0 ) result = newexp(primary(t)); else if ( strcmp(sval, "log") == 0 ) result = newlog(primary(t)); else if ( strcmp(sval, "sin") == 0 ) result = newsin(primary(t)); else if ( strcmp(sval, "cos") == 0 ) result = newcos(primary(t)); else result = newvariable(sval); break; default: syntaxerror("oväntat token", t); ( )

46 parser.c : syntaxerror void syntaxerror(char *msg, Tokenizer t) { printf("*** Syntaxfel: %s\n", msg); printf(" vid tokentyp %d '%s'\n", t->ttype, t->sval); longjmp(environment, 99); // Till återstarpunkten return; ( )

47 Annat för objektorientering Funktion med olika signatur? Nja. Man kan ha variabelt antal och variabla typer till funktioner. Se stdarg.h med funktionerna va_start, va_arg och va_end Måste själv hålla reda på antal och typer. Jfr t ex printf. Dynamisk bindning? Tja, man kan lagra funktionspekare i poster ( )

48 Funktionspekare: exempel typedef struct sexpr { int (*eval)(); sexpr, *Sexpr; Sexpr newsexpr(int (*eval)()) { Sexpr e = (Sexpr) malloc(sizeof(sexpr)); e->eval = eval; return e; int foo() {return 17; int fie() {return 42; int main() { Sexpr e = newsexpr(foo); Sexpr f = newsexpr(fie); printf("%d %d\n", e->eval(), f->eval()); /* Output: */ ( )

Avslutning. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 17 december 2010

Avslutning. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 17 december 2010 Avslutning Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 17 december 2010 Tentan Två delar: en C-del (20p) och en Java-del (20p) Normalt krävs 18p för att få godkänt, minst 7p på varje del Skillnad

Läs mer

Obligatorisk uppgift 5

Obligatorisk uppgift 5 (5 oktober 2018 Symbolisk kalkylator 1 ) Obligatorisk uppgift 5 En kalkylator som hanterar uttryck symboliskt dvs värden är uttryck inte bara tal. Uppgiften exemplifierar: objektorientering återanvändning

Läs mer

public boolean containskey(string key) { return search(key, head)!= null; }

public boolean containskey(string key) { return search(key, head)!= null; } Tentamen Programmeringsteknik II 2009-05-26 med lösningar Skrivtid: 0900-1200 Uppgifter 1. Programbilagan ListMap.java innehåller en klass som implementerar en avbildning mellan mängden strängar och mängden

Läs mer

Observera. Tentamen Programmeringsteknik II Skrivtid:

Observera. Tentamen Programmeringsteknik II Skrivtid: Tentamen Programmeringsteknik II 2016-10-19 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Fyll i försättssidan

Läs mer

Obligatorisk uppgift 5: Symbolisk kalkylator

Obligatorisk uppgift 5: Symbolisk kalkylator Informationsteknologi Tobias Wrigstad IOOP HT10 Obligatorisk uppgift 5: Symbolisk kalkylator Moment: Objektorientering med klasshierarkier, arv och dynamisk bindning samt dynamiska strukturer, undantag,

Läs mer

Symboliska konstanter const

Symboliska konstanter const (5 oktober 2010 T11.1 ) Symboliska konstanter const Tre sätt som en preprocessormacro med const-deklaration med enum-deklaration (endast heltalskonstanter) Exempel: #define SIZE 100 const int ANSWER =

Läs mer

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Tentamen Programmeringsteknik II 2016-10-19 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Fyll i försättssidan

Läs mer

Konstruktion av klasser med klasser

Konstruktion av klasser med klasser Konstruktion av klasser med klasser Klasser kan byggas på redan denierade klasser genom att klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: Klassen PairOfDice har två attribut attribut

Läs mer

List.java. List.java. Printed by Tom Smedsaas

List.java. List.java. Printed by Tom Smedsaas Dec 17, 08 8:35 Page 1/2 /** class List * Representerar en länkad lista av godtyckliga objekt public class List { /** class ListNode * Noder i listor protected static class ListNode { protected Object

Läs mer

Klasshierarkier - repetition

Klasshierarkier - repetition Klasshierarkier - repetition Klasser kan byggas på redan denierade klasser, egna och/eller färdigskrivna, genom: I att klassobjekt används som attribut (instansvariabler): har-relation. Exempel: traksystemet

Läs mer

List.java. List.java. Printed by Tom Smedsaas

List.java. List.java. Printed by Tom Smedsaas Mar 03, 08 17:48 Page 1/3 class List * Representerar en länkad lista av godtyckliga objekt public class List { ListNode * Noder i listor protected static class ListNode { protected Object data; protected

Läs mer

Obligatorisk uppgift 5: Symbolisk kalkylator

Obligatorisk uppgift 5: Symbolisk kalkylator Informationsteknologi Tom Smedsaas IOOP ht09 Obligatorisk uppgift 5: Symbolisk kalkylator Moment: Objektorientering med klasshierarkier, arv och dynamisk bindning samt dynamiska strukturer, undantag, samlingar

Läs mer

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en

Klassen BST som definierar binära sökträd med tal som nycklar och enda data. Varje nyckel är unik dvs förekommer endast en Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Inledning Skrivningen innehåller ett antal bilagor: Bilagan listsandtrees innehåller fyra klasser: Klassen List med några grundläggande

Läs mer

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Tentamen Programmeringsteknik II 2017-05-29 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Fyll i försättssidan

Läs mer

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck Betrakta följande uttryck a +(b + c) d + e (f + g h) Parsing med Recursive Descent, Avbildningsklasser Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 22 november 2010 Beräkning med regler: multiplikation

Läs mer

Obligatorisk uppgift: Symbolisk kalkylator

Obligatorisk uppgift: Symbolisk kalkylator Informationsteknologi Programmeringsteknik II 22 augusti 2018 Obligatorisk uppgift: Symbolisk kalkylator Moment: Dynamiska strukturer (särskilt trädstrukturer), klasshierarkier, arv, dynamisk bindning,

Läs mer

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Tentamen Programmeringsteknik II 2017-10-23 Skrivtid: 14:00 19:00 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Fyll i försättssidan

Läs mer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper.

Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10. Skriv bara på framsidan av varje papper. Tentamen Programmeringsteknik II och NV2 (alla varianter) 2008-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Maximal poäng är 40. För betygen 3 krävs 18 poäng. För betygen 4, 5 kommer något

Läs mer

Klasshierarkier. Klasser kan byggas på redan definierade klasser

Klasshierarkier. Klasser kan byggas på redan definierade klasser Klasshierarkier Klasser kan byggas på redan definierade klasser på två sätt: Klassobjekt används som dataattribut när en ny klass beskrivs. Exempel: klassen partikel består av ett antal attribut av typen

Läs mer

Exempel ( )

Exempel ( ) Exempel Antag att vi vill ha en generell stack. En stack är en mekanism som man kan lagra i och hämta från enligt principen sist in, först ut (eng LIFO). Man skall alltså kunna Skapa en stack Lägga värden

Läs mer

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel.

Tentamen Programmeringsteknik II för STS Skrivtid: Inga hjälpmedel. Tentamen Programmeringsteknik II för STS 2007-03-09 Skrivtid: 1500-2000 Inga hjälpmedel. Tänk på följande OBS: För betygen 4, 5 och VG kommer något högre gränser än normalt användas. Skriv läsligt! Använd

Läs mer

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254

Rekursion. Att tänka rekursivt Att programmera rekursivt i Java Exempel. Programmeringsmetodik -Java 254 Rekursion Rekursion är en grundläggande programmeringsteknik M h a rekursion kan vissa problem lösas på ett mycket elegant sätt Avsnitt 11 i kursboken: Att tänka rekursivt Att programmera rekursivt i Java

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik II 2013-06-05 Skrivtid: 1400-1700 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja

Läs mer

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om? Algoritmer och datastrukturer Allmänt om kursen Kort javagrund repetition - Klasser, metoder, objekt och referensvariabler, - Hierarkiska klass strukturer - Arrayer och arrayer av objekt - Collection ramverket

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna! Tentamen Programmeringsteknik II 2013-10-22 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja

Läs mer

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel.

Tentamen Programmeringsteknik 2 och MN Skrivtid: Inga hjälpmedel. Tentamen Programmeringsteknik 2 och MN2 2006-03-10 Skrivtid: 0900-1400 Inga hjälpmedel. Tänk på följande OBS: För betygen 4, 5 och VG kommer något högre gränser än normalt användas. Skriv läsligt! Använd

Läs mer

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander F4 Klasser och Metoder ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Klasser och objekt Klasser definierar (utgör idén) Objekt instantierar (utgör förekomsten) En klassdefinition Många

Läs mer

Tommy Färnqvist, IDA, Linköpings universitet

Tommy Färnqvist, IDA, Linköpings universitet Föreläsning 9 Pekare, länkade noder, länkade listor TDDD86: DALP Utskriftsversion av föreläsning i Datastrukturer, algoritmer och programmeringsparadigm 25 september 2015 Tommy Färnqvist, IDA, Linköpings

Läs mer

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

Läs mer

Tentamen Programmeringsteknik II Inledning. Anmälningskod:

Tentamen Programmeringsteknik II Inledning. Anmälningskod: Tentamen Programmeringsteknik II 2016-01-11 Inledning I bilagan finns ett antal mer eller mindre ofullständiga klasser. Några ingår i en hierarki: List, SortedList, SplayList och ListSet enligt vidstående

Läs mer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

Länkade strukturer. (del 2)

Länkade strukturer. (del 2) Länkade strukturer (del 2) Översikt Abstraktion Dataabstraktion Inkapsling Gränssnitt (Interface) Abstrakta datatyper (ADT) Programmering tillämpningar och datastrukturer 2 Abstraktion Procedurell abstraktion

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public

Läs mer

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

public och private Obs: private inte skyddar mot access från andra objekt i samma klass. public och private En metod som är public får anropas från alla metoder i alla klasser. Ett attribut som är public får avläsas och ändras från alla metoder i alla andra klasser. En metod som är private

Läs mer

Generiska datatyper. Parametrisk Polymorfism: Generics. Generisk lista. Utvikning: Typer

Generiska datatyper. Parametrisk Polymorfism: Generics. Generisk lista. Utvikning: Typer Generiska datatyper Parametrisk Polymorfism: Generics Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 9 december 2010 Hittills har vi sett att klasser och interface definierar nya typer som kan användas

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna!

Tentamen Programmeringsteknik II Skrivtid: Hjälpmedel: Java-bok (vilken som helst) Skriv läsligt! Använd inte rödpenna! Tentamen Programmeringsteknik II 2014-01-09 Skrivtid: 0800-1300 Hjälpmedel: Java-bok (vilken som helst) Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja

Läs mer

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo Objektorienterade språk Historik Simula 67 Smalltalk 80 Procedurorienterad programmering Subprogram Programbibliotek Dataorienterad programmering Abstrakta datatyper Objektbaserade språk, föregångare till

Läs mer

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Arv Fundamental objekt-orienterad teknik arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier Programmeringsmetodik -Java 165 Grafisk respresentation: Arv

Läs mer

Grafik, grafiska användargränssnitt och rörliga bilder

Grafik, grafiska användargränssnitt och rörliga bilder (22 maj 2015 F14.1 ) Grafik, grafiska användargränssnitt och rörliga bilder Viktigt: Grafiska komponenter: Fönster, etiketter, knappar, textfält,... Tekniken med att med genom arv definiera t ex sitt eget

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F9:1 OOP Objekt-orienterad programmering Föreläsning 9 Arv och klasshierarkier Polymorfism OOP F9:2 Djur - String namn - int vikt + String getnamn() + int getvikt() + void ökavikt(int x) Ko - int mjölkvolym

Läs mer

Imperativ programmering. Föreläsning 4

Imperativ programmering. Föreläsning 4 Imperativ programmering 1DL126 3p Föreläsning 4 Imperativa paradigmer Ostrukturerad programmering Strukturerad programmering Procedurell programmering Objektorienterad programmering Klassbaserad programmering

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning XII: Interfaces, Enums, Generics, Collections Links for: interfaces, enums, generics, collections Ahmed Rezine IDA, Linköpings Universitet Hösttermin

Läs mer

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine

Outline. Objektorienterad Programmering (TDDC77) Abstrakta klasser. Abstrakta metoder. Abstrakta klasser. Gränssnitt. Uppräkningar (enum) Ahmed Rezine Objektorienterad Programmering (TDDC77) Föreläsning XII: Interfaces, Enums,, Collections Links for: interfaces, enums, generics, collections Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Abstrakta

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private Inkapsling tumregler Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler Tobias Wrigstad (baserat på material från Tom Smedsaas) 5 november 2010 1. Man skall

Läs mer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Mer om Interface Generiska klasser Undantag Nästlade klasser 1

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering! Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering! Samlingar Vi kommer att behöva hantera samlingar av objekt - Har oftast använd Array (fält) - Bra om

Läs mer

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser Föreläsning 8 Arv och abstrakta klasser Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen (extends) Den nya klassen behåller alla egenskaper som den gamla

Läs mer

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen ID1004 Objektorienterad programmering May 29, 2012 Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga

Läs mer

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer.

UML. Klassdiagr. Abstraktion. Relationer. Överskugg. Överlagr. Aktivitetsdiagram Typomv. Typomv. Klassdiagr. Abstraktion. Relationer. Översikt Klasshierarkier UML klassdiagram Relation mellan klasser mellan klasser och objekt Association ning ing andling Programmering tillämpningar och datastrukturer 2 UML UML Unified Modeling Language

Läs mer

DAT043 - föreläsning 8

DAT043 - föreläsning 8 DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns

Läs mer

Tentamen Imperativ och objektorienterad programmering

Tentamen Imperativ och objektorienterad programmering Tentamen Imperativ och objektorienterad programmering 2009-12-10 Skrivtid: 0800-1300 Inga hjälpmedel. Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja

Läs mer

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper.

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din kod överst i högra hörnet på alla papper. Tentamen Programmeringsteknik II 2016-05-30 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Börja alltid ny uppgift på nytt papper. Lägg

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning Generiska klasser Undantag Interface Nästlade klasser 1 Problem:

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp Föreläsning 4 Innehåll Abstrakta datatypen lista Definition Abstrakta datatypen lista egen implementering Datastrukturen enkellänkad lista Nästlade klasser statiska nästlade klasser inre klasser Listklasser

Läs mer

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista Abstrakt stack Abstrakt kö Länkade listor Abstrakta datatyper Det är ofta praktiskt att beskriva vilka operationer man vill kunna göra på sina

Läs mer

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean

Läs mer

Programmering A. Johan Eliasson johane@cs.umu.se

Programmering A. Johan Eliasson johane@cs.umu.se Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer

Läs mer

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2012-03-14 Skrivtid: 0800-1100 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

Läs mer

Introduktion till arv

Introduktion till arv Introduktion till arv 6 INTRODUKTION TILL ARV Arv Generell-Speciell Arv för att utnyttja det vi redan gjort Återanvändning Basklass Härledd klass Varför arv? Inför en subklass för att uttrycka specialisering

Läs mer

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Tentamen Programmeringsteknik II 2017-05-29 Skrivtid: 0800 1300 Tänk på följande Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper. Fyll i försättssidan

Läs mer

TDIU01 Programmering i C++

TDIU01 Programmering i C++ TDIU01 Programmering i C++ Föreläsning 6 - Klasser Eric Elfving, eric.elfving@liu.se Institutionen för datavetenskap (IDA) Avdelningen för Programvara och system (SaS) Klasser När vi skapade vår lista

Läs mer

OOP Tenta

OOP Tenta Stockholms universitet sid 1 OOP OOP Tenta 2012-01-14 10.00 15.00 Avser kurserna DSK1:OOP och GES:OOP Anvisningar Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt

Läs mer

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

Läs mer

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander F8 - Arv ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Arv och subklasser Klasser innehåller attribut och beteenden En subklass ärver dessa från föräldern Detta ger: Återanvänd kod

Läs mer

Länkade strukturer, parametriserade typer och undantag

Länkade strukturer, parametriserade typer och undantag Länkade strukturer, parametriserade typer och undantag Programmering för språkteknologer 2 Sara Stymne 2013-09-18 Idag Parametriserade typer Listor och länkade strukturer Komplexitet i länkade strukturer

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2014-03-15 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else Förkunskaper från tidigare föreläsningar: Objektorienterad Programmering (TDDC77) Föreläsning IX: Klasser och Objekt, Instantiering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2015 I STONE I Variabler,

Läs mer

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Metoden clone() Skapa kopior av existerande objekt. Interface Cloneable Deep vs.

Läs mer

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine. Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt

Läs mer

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container {

Innehåll. 1 Kort om dynamisk polymorfism. 2 Arv i C++ 3 Multipelt arv. 4 Något om statisk polymorfism. class Container { Innehåll EDAF30 Programmering i C++ Arv. Polymorfism. Sven Gestegård Robertz Datavetenskap, LTH 2015 1 Kort om dynamisk polymorfism Virtuella funktioner 2 Arv i C++ Konstruktorer och destruktorer Tillgänglighet

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Interface Generiska klasser Undantag

Läs mer

Övning från förra gången: readword

Övning från förra gången: readword (9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver

Läs mer

Arv. Objektorienterad och komponentbaserad programmering

Arv. Objektorienterad och komponentbaserad programmering Arv Objektorienterad och komponentbaserad programmering Arv Regel nr 1: Ett objektorienterat språk ska tillåta inkapsling av data Regel nr 2: Ett objektorienterat språk ska tillåta arv Regel nr 3: Ett

Läs mer

Föreläsning 4 Innehåll

Föreläsning 4 Innehåll Föreläsning 4 Innehåll Abstrakta datatypen lista Datastrukturen enkellänkad lista Nästlade klasser statiskt nästlade klasser inre klasser Listklasser i Java Implementera abstrakta datatyperna stack och

Läs mer

Imperativ programmering. Föreläsning 2

Imperativ programmering. Föreläsning 2 Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.

Läs mer

Repetition C-programmering

Repetition C-programmering Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition

Läs mer

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010 interface, motivation och bakgrund Antag att vi gör en generell listklass: public class List { protected static class ListNode { public

Läs mer

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist. Seminarium 3 Introduktion till Java Collections Framework Innehåll Generik Bakgrund Java Collections Framework interface och klasser för samlingar av element interfacen Iterator och Iterable och foreach-sats

Läs mer

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine

Outline. Objektorienterad Programmering (TDDC77) Signatur. Klassen calculator. Överlagring (overloading) Arv (inheritance) Ahmed Rezine Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Klassen calculator Signatur Calculator

Läs mer

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2 Övning vecka 6. TDA550 - Objektorienterad programvaruutveckling IT, fk Denna vecka ska vi titta på undantag, testning, generiska enheter, samlingar och designmönstret Iterator. Uppgift 1 Exceptions a)

Läs mer

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs

Tentamen, EDAA01 Programmeringsteknik fördjupningskurs LUNDS TEKNISKA HÖGSKOLA 1(3) Institutionen för datavetenskap Tentamen, EDAA01 Programmeringsteknik fördjupningskurs 2017 08 14, 8.00 13.00 Anvisningar: Denna tentamen består av 5 uppgifter. Preliminärt

Läs mer

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004

Lösningsförslag. Programmeringsmetodik, KV: Java och OOP. 17 januari 2004 Lösningsförslag Programmeringsmetodik, KV: Java och OOP 17 januari 2004 Examinator: Johan Karlsson Skrivtid: 9-15 Hjälpmedel: En av följande böcker: Barnes & Kölling: Objects First With Java a practical

Läs mer

Tentamen *:58/ID100V Programmering i C Exempel 3

Tentamen *:58/ID100V Programmering i C Exempel 3 DSV Tentamen *:58/ID100V Sid 1(5) Tentamen *:58/ID100V Programmering i C Exempel 3 Denna tentamen består av fyra uppgifter som tillsammans kan de ge maximalt 22 poäng. För godkänt resultat krävs minst

Läs mer

Föreläsning 2 Datastrukturer (DAT037)

Föreläsning 2 Datastrukturer (DAT037) Föreläsning 2 Datastrukturer (DAT037) Fredrik Lindblad 1 1 november 2017 1 Slides skapade av Nils Anders Danielsson har använts som utgångspunkt. Se http://www.cse.chalmers.se/edu/year/2015/course/dat037

Läs mer

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad

F5: Debriefing OU2, repetition av listor, träd och hashtabeller. Carl Nettelblad F5: Debriefing OU2, repetition av listor, träd och hashtabeller Carl Nettelblad 2017-04-24 Frågor Kommer nog inte att täcka 2 timmar Har ni frågor på OU3, något annat vi har tagit hittills på kursen, listor

Läs mer

Introduktion C-programmering

Introduktion C-programmering Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F10:1 OOP Objekt-orienterad programmering Föreläsning 10 Mer om arv och klasshierarkier Interface Hierarkier - många nivåer OOP F10:2 Djur Rovdjur Hovdjur Fåglar Fiskar Björn Kattdjur Ko Lamm Hjort

Läs mer

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder

Introduktion. Klasser. TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder Introduktion TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder OO är den mest använda programmeringsparadigmen idag, viktigt steg att lära sig och använda OO. Klasser är byggstenen i

Läs mer

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine.

Outline. Objektorienterad Programmering (TDDC77) Åsidosättning. Signatur. Åsidosättning. Abstrakta klasser. Ahmed Rezine. Objektorienterad Programmering (TDDC77) Föreläsning XI: åsidosättning, gränssnitt, uppräkning, hierarkier Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Signatur public static int parseint (

Läs mer