Realtidssystem. - Meddelanden och händelsehantering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 4

Storlek: px
Starta visningen från sidan:

Download "Realtidssystem. - Meddelanden och händelsehantering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 4"

Transkript

1 Realtidssystem - Meddelanden och händelsehantering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 4 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja) 1

2 Innehåll Meddelanden Monitorer som postfack - mailbox Trådkommunikation via mailbox / meddelanden 2

3 Buffer - en speciell monitor som är en brevlåda 3

4 Buffer - en speciell monitor som är en brevlåda Monitorer i allmänhet skyddar delade resurser. En speciell monitor är en buffer med metoder post och fetch, som erbjuder en form av kösystem och därmed ett dataflöde 3

5 Buffer - en speciell monitor som är en brevlåda Monitorer i allmänhet skyddar delade resurser. En speciell monitor är en buffer med metoder post och fetch, som erbjuder en form av kösystem och därmed ett dataflöde Data kan då vara information och/eller synkronisationsmedel 3

6 Buffer - en speciell monitor som är en brevlåda Monitorer i allmänhet skyddar delade resurser. En speciell monitor är en buffer med metoder post och fetch, som erbjuder en form av kösystem och därmed ett dataflöde Data kan då vara information och/eller synkronisationsmedel Data är då kallad meddelanden (messages) och själva buffer är en brevlåda (mailbox) 3

7 Buffer - en speciell monitor som är en brevlåda Monitorer i allmänhet skyddar delade resurser. En speciell monitor är en buffer med metoder post och fetch, som erbjuder en form av kösystem och därmed ett dataflöde Data kan då vara information och/eller synkronisationsmedel Data är då kallad meddelanden (messages) och själva buffer är en brevlåda (mailbox) Mellan Java-trådar (dvs inom samma program och minnesram) kan ett meddelande också vara en referens till ett objekt (Object) 3

8 Buffer - en speciell monitor som är en brevlåda Monitorer i allmänhet skyddar delade resurser. En speciell monitor är en buffer med metoder post och fetch, som erbjuder en form av kösystem och därmed ett dataflöde Data kan då vara information och/eller synkronisationsmedel Data är då kallad meddelanden (messages) och själva buffer är en brevlåda (mailbox) Mellan Java-trådar (dvs inom samma program och minnesram) kan ett meddelande också vara en referens till ett objekt (Object) class Buffer { } //... synchronized void post( Object o){ while( buff.size() >= maxsize) { wait(); } if( buff.isempty()) notifyall(); buff.add( o); } synchronized Object fetch( void){ while( buff.isempty()) { wait(); } if( buff.size() >= maxsize) notifyall(); return buff.remove(s); } 3

9 Skicka meddelanden - Mailbox 4

10 Skicka meddelanden - Mailbox Producer-Consumer (producent-konsument)-relationer är vanliga mellan olika trådar av ett program 4

11 Skicka meddelanden - Mailbox Producer-Consumer (producent-konsument)-relationer är vanliga mellan olika trådar av ett program Asymmetrisk synkronisering / signalering: producenten (producer) måste kunna fortsätta utan att den behöver vänta på konsumenten (consumer) 4

12 Skicka meddelanden - Mailbox Producer-Consumer (producent-konsument)-relationer är vanliga mellan olika trådar av ett program Asymmetrisk synkronisering / signalering: producenten (producer) måste kunna fortsätta utan att den behöver vänta på konsumenten (consumer) Information / data ska överföras och kallas för meddelande (message) 4

13 Skicka meddelanden - Mailbox Producer-Consumer (producent-konsument)-relationer är vanliga mellan olika trådar av ett program Asymmetrisk synkronisering / signalering: producenten (producer) måste kunna fortsätta utan att den behöver vänta på konsumenten (consumer) Information / data ska överföras och kallas för meddelande (message) Vi får asynkron kommunikation (signalering och dataöverföring) med lagring av information (buffering) och interaktion mellan aktiviteter (trådar) (activity interaction) 4

14 Skicka meddelanden - Mailbox Producer-Consumer (producent-konsument)-relationer är vanliga mellan olika trådar av ett program Asymmetrisk synkronisering / signalering: producenten (producer) måste kunna fortsätta utan att den behöver vänta på konsumenten (consumer) Information / data ska överföras och kallas för meddelande (message) Vi får asynkron kommunikation (signalering och dataöverföring) med lagring av information (buffering) och interaktion mellan aktiviteter (trådar) (activity interaction) Dessutom gäller för komplexa system som finns idag: 4

15 Skicka meddelanden - Mailbox Producer-Consumer (producent-konsument)-relationer är vanliga mellan olika trådar av ett program Asymmetrisk synkronisering / signalering: producenten (producer) måste kunna fortsätta utan att den behöver vänta på konsumenten (consumer) Information / data ska överföras och kallas för meddelande (message) Vi får asynkron kommunikation (signalering och dataöverföring) med lagring av information (buffering) och interaktion mellan aktiviteter (trådar) (activity interaction) Dessutom gäller för komplexa system som finns idag: Distribution (fördelning): Trådar är (eller måste förberedas för att bli) fördelade över flera datorer med nätverkskommunikation emellan dem 4

16 Skicka meddelanden - Mailbox Producer-Consumer (producent-konsument)-relationer är vanliga mellan olika trådar av ett program Asymmetrisk synkronisering / signalering: producenten (producer) måste kunna fortsätta utan att den behöver vänta på konsumenten (consumer) Information / data ska överföras och kallas för meddelande (message) Vi får asynkron kommunikation (signalering och dataöverföring) med lagring av information (buffering) och interaktion mellan aktiviteter (trådar) (activity interaction) Dessutom gäller för komplexa system som finns idag: Distribution (fördelning): Trådar är (eller måste förberedas för att bli) fördelade över flera datorer med nätverkskommunikation emellan dem Encapsulation (kapsling): Skyddmekanismer för jämlöpande exekvering och realtidsegenskaper kräver medel för utbyte av meddelanden mellan exekverande objekt (trådar) 4

17 Assistent och chef - producer och consumer Vi vill ha - asymmetrisk synkronisering - producer ska kunna jobba vidare utan att behöva vänta på consumer - överföring av information - ett meddelande (message) 5

18 Assistent och chef - producer och consumer Vi vill ha - asymmetrisk synkronisering - producer ska kunna jobba vidare utan att behöva vänta på consumer - överföring av information - ett meddelande (message) Hittills har vi kunnat göra detta med monitorer: 5

19 Assistent och chef - producer och consumer Vi vill ha - asymmetrisk synkronisering - producer ska kunna jobba vidare utan att behöva vänta på consumer - överföring av information - ett meddelande (message) Hittills har vi kunnat göra detta med monitorer: står för metodanrop A (p) put() Postfack / mailbox get() C (c) lägger dokument i inkorgen tar dokument från inkorgen 5

20 Assistent och chef - producer och consumer Vi vill ha - asymmetrisk synkronisering - producer ska kunna jobba vidare utan att behöva vänta på consumer - överföring av information - ett meddelande (message) Hittills har vi kunnat göra detta med monitorer: står för metodanrop A (p) put() Postfack / mailbox get() C (c) lägger dokument i inkorgen tar dokument från inkorgen Vi inför begreppet Mailbox (brevlåda) när vi använder monitorn så här och ritar den lite annorlunda 5

21 Assistent och chef - producer och consumer Vi vill ha - asymmetrisk synkronisering - producer ska kunna jobba vidare utan att behöva vänta på consumer - överföring av information - ett meddelande (message) Hittills har vi kunnat göra detta med monitorer: står för metodanrop A (p) put() Postfack / mailbox get() C (c) lägger dokument i inkorgen tar dokument från inkorgen Vi inför begreppet Mailbox (brevlåda) när vi använder monitorn så här och ritar den lite annorlunda Mailbox står för dataflöde A (p) C (c) lägger dokument i inkorgen tar dokument från inkorgen 5

22 Mailboxar i system Kommunikation mellan trådar leder ofta till ett helt mailbox-nätverk P1 P2 C C1/P1 C2/P2 6

23 Cafeteria ++ Cafeteria Jag fixar mackorna! Jag vill ha... Idag: - pasta - mackor efter önskemål 7

24 Cafeteria ++ Cafeteria Beställningar Räkor Jag fixar mackorna! Jag vill ha... Idag: - pasta - mackor efter önskemål 7

25 Cafeteria ++ Cafeteria Beställningar Skagenröra Jag fixar mackorna! Jag vill ha... Idag: - pasta - mackor efter önskemål (Räkor) 7

26 Cafeteria ++ Cafeteria Beställningar Skagenröra Ost Jag fixar mackorna! Jag vill ha... Tonfisk Idag: - pasta - mackor efter önskemål Ost Salami Kalkon (Räkor) 7

27 Cafeteria ++ Cafeteria Beställningar Ost Tonfisk Jag fixar mackorna! Jag vill ha... Ost Idag: - pasta - mackor efter önskemål Salami Kalkon (Skagenröra) 7

28 Kommunikationsprinciper 8

29 Kommunikationsprinciper Samma princip gäller både för operativsystemprocesser och trådar inom ett program 8

30 Kommunikationsprinciper Samma princip gäller både för operativsystemprocesser och trådar inom ett program En tråd kan lägga meddelanden i flera lådor (mailbox) 8

31 Kommunikationsprinciper Samma princip gäller både för operativsystemprocesser och trådar inom ett program En tråd kan lägga meddelanden i flera lådor (mailbox) En mailbox kan (i Java) hanterar olika typer av meddelanden 8

32 Kommunikationsprinciper Samma princip gäller både för operativsystemprocesser och trådar inom ett program En tråd kan lägga meddelanden i flera lådor (mailbox) En mailbox kan (i Java) hanterar olika typer av meddelanden En tråd har i de flesta fallen enbart en mailbox den hämtar / läser meddelanden ifrån - annars kan det blir problem, att hämta ett meddelande är blockerande 8

33 Kommunikationsprinciper Samma princip gäller både för operativsystemprocesser och trådar inom ett program En tråd kan lägga meddelanden i flera lådor (mailbox) En mailbox kan (i Java) hanterar olika typer av meddelanden En tråd har i de flesta fallen enbart en mailbox den hämtar / läser meddelanden ifrån - annars kan det blir problem, att hämta ett meddelande är blockerande Meddelande-objekt måste vara serialized (omvandlat till ett byte-flöde) för att kunna skickas till en annan OS-process 8

34 Kommunikationsprinciper Samma princip gäller både för operativsystemprocesser och trådar inom ett program En tråd kan lägga meddelanden i flera lådor (mailbox) En mailbox kan (i Java) hanterar olika typer av meddelanden En tråd har i de flesta fallen enbart en mailbox den hämtar / läser meddelanden ifrån - annars kan det blir problem, att hämta ett meddelande är blockerande Meddelande-objekt måste vara serialized (omvandlat till ett byte-flöde) för att kunna skickas till en annan OS-process Inom en process / ett program, alltså mellan trådar, kan vi skicka pekare (pointers) / objektreferenser eller en kopia av hela objektet 8

35 Kommunikationsprinciper Samma princip gäller både för operativsystemprocesser och trådar inom ett program En tråd kan lägga meddelanden i flera lådor (mailbox) En mailbox kan (i Java) hanterar olika typer av meddelanden En tråd har i de flesta fallen enbart en mailbox den hämtar / läser meddelanden ifrån - annars kan det blir problem, att hämta ett meddelande är blockerande Meddelande-objekt måste vara serialized (omvandlat till ett byte-flöde) för att kunna skickas till en annan OS-process Inom en process / ett program, alltså mellan trådar, kan vi skicka pekare (pointers) / objektreferenser eller en kopia av hela objektet Hur kan man säkerställa att inte innehållet i ett meddelande blir ändrat av en annan tråd...??? 8

36 Kommunikation mellan trådar/processer Lokal Fördelad Synkron Objekt-metodanrop RPC (C) / RMI (Java) Synkron Monitor-metodanrop Databas Asynkron Händelsebuffer (event buffer) Flöde (stream) (pipe/file/socket) 9

37 Kommunikation mellan trådar/processer Lokal Fördelad Synkron Objekt-metodanrop RPC (C) / RMI (Java) Synkron Monitor-metodanrop Databas Asynkron Händelsebuffer (event buffer) Flöde (stream) (pipe/file/socket) Synkron hantering av händelser (events): 9

38 Kommunikation mellan trådar/processer Lokal Fördelad Synkron Objekt-metodanrop RPC (C) / RMI (Java) Synkron Monitor-metodanrop Databas Asynkron Händelsebuffer (event buffer) Flöde (stream) (pipe/file/socket) Synkron hantering av händelser (events): Javas princip för händelsehantering (AWT / Swing) (OBS: en tråd!) - firing events vs posting events 9

39 Kommunikation mellan trådar/processer Lokal Fördelad Synkron Objekt-metodanrop RPC (C) / RMI (Java) Synkron Monitor-metodanrop Databas Asynkron Händelsebuffer (event buffer) Flöde (stream) (pipe/file/socket) Synkron hantering av händelser (events): Javas princip för händelsehantering (AWT / Swing) (OBS: en tråd!) - firing events vs posting events Motsvarande EventObject för realtid / flertrådiga system: RTEvent 9

40 Kommunikation mellan trådar/processer Lokal Fördelad Synkron Objekt-metodanrop RPC (C) / RMI (Java) Synkron Monitor-metodanrop Databas Asynkron Händelsebuffer (event buffer) Flöde (stream) (pipe/file/socket) Synkron hantering av händelser (events): Javas princip för händelsehantering (AWT / Swing) (OBS: en tråd!) - firing events vs posting events Motsvarande EventObject för realtid / flertrådiga system: RTEvent Motsvarande synkron händelsehantering i se.lth.cs.realtime: Kolla klassdokumentationen till RTEventListener, RTEventListenerList och JThread 9

41 Kommunikation mellan trådar/processer Lokal Fördelad Synkron Objekt-metodanrop RPC (C) / RMI (Java) Synkron Monitor-metodanrop Databas Asynkron Händelsebuffer (event buffer) Flöde (stream) (pipe/file/socket) Synkron hantering av händelser (events): Javas princip för händelsehantering (AWT / Swing) (OBS: en tråd!) - firing events vs posting events Motsvarande EventObject för realtid / flertrådiga system: RTEvent Motsvarande synkron händelsehantering i se.lth.cs.realtime: Kolla klassdokumentationen till RTEventListener, RTEventListenerList och JThread Vi pratar INTE enkeltrådig synkron kommunikation i kursen! 9

42 Händelser som meddelanden 10

43 Händelser som meddelanden java.util.eventobject erbjuder en händelse-klass som kan användas för meddelanden, där det också är möjligt att få en referens till källan, alltså den skickande tråden / det skickande objektet 10

44 Händelser som meddelanden java.util.eventobject erbjuder en händelse-klass som kan användas för meddelanden, där det också är möjligt att få en referens till källan, alltså den skickande tråden / det skickande objektet se.lth.cs-realtime.event.rtevent är en subklass som har tidsstämpel, dvs objekten (instanserna) har en ålder (jfr java.awt.inputevent) 10

45 Händelser som meddelanden java.util.eventobject erbjuder en händelse-klass som kan användas för meddelanden, där det också är möjligt att få en referens till källan, alltså den skickande tråden / det skickande objektet se.lth.cs-realtime.event.rtevent är en subklass som har tidsstämpel, dvs objekten (instanserna) har en ålder (jfr java.awt.inputevent) vi utnyttjar just sådana tidsstämplade händelser (events) för asynkron kommunikation mellan trådar (posting events) - tidsstämpel är en förutsättning för att kunna uppfylla realtidskrav! 10

46 Händelser som meddelanden java.util.eventobject erbjuder en händelse-klass som kan användas för meddelanden, där det också är möjligt att få en referens till källan, alltså den skickande tråden / det skickande objektet se.lth.cs-realtime.event.rtevent är en subklass som har tidsstämpel, dvs objekten (instanserna) har en ålder (jfr java.awt.inputevent) vi utnyttjar just sådana tidsstämplade händelser (events) för asynkron kommunikation mellan trådar (posting events) - tidsstämpel är en förutsättning för att kunna uppfylla realtidskrav! OBS: jämför med grafikhantering, t ex swing eller andra grafik-bibliotek, som för det mesta sker enkeltrådigt (hela programmet är möjligen flertrådig, medans grafiken hanteras inom en tråd som vanligtvis är applikationens huvudtråd ) 10

47 Klassen RTEvent public abstract class RTEvent extends EventObject { protected long timestamp; // Creation time in ms. protected volatile transient Object owner; // Responsible thread. public RTEvent(); public RTEvent(Object source); public RTEvent(long ts); public RTEvent(Object source, long ts); public final Object getowner() public double getseconds() public long getmillis() public long getnanos() } // Use current Thread & TimeMillis. // Set source, default timestamp. // Set timestamp, default source // Override both defaults. 11

48 Mailbox - Monitor - Semafor 12

49 Mailbox - Monitor - Semafor En Mailbox kan implementeras med en Monitor, och en Semafor kan anses vara den enklaste typen av Monitor (eller användas för att bygga en sådan) 12

50 Mailbox - Monitor - Semafor En Mailbox kan implementeras med en Monitor, och en Semafor kan anses vara den enklaste typen av Monitor (eller användas för att bygga en sådan) Om vi skickar tomma meddelanden blir en Mailbox till en Semafor: 12

51 Mailbox - Monitor - Semafor En Mailbox kan implementeras med en Monitor, och en Semafor kan anses vara den enklaste typen av Monitor (eller användas för att bygga en sådan) Om vi skickar tomma meddelanden blir en Mailbox till en Semafor: värdet av räknaren i semaforen motsvarar antalet meddelanden i mailboxen 12

52 Mailbox - Monitor - Semafor En Mailbox kan implementeras med en Monitor, och en Semafor kan anses vara den enklaste typen av Monitor (eller användas för att bygga en sådan) Om vi skickar tomma meddelanden blir en Mailbox till en Semafor: värdet av räknaren i semaforen motsvarar antalet meddelanden i mailboxen send -metod motsvarar give() 12

53 Mailbox - Monitor - Semafor En Mailbox kan implementeras med en Monitor, och en Semafor kan anses vara den enklaste typen av Monitor (eller användas för att bygga en sådan) Om vi skickar tomma meddelanden blir en Mailbox till en Semafor: värdet av räknaren i semaforen motsvarar antalet meddelanden i mailboxen send -metod motsvarar give() receive -metod motsvarar take() 12

54 Mailbox - Monitor - Semafor En Mailbox kan implementeras med en Monitor, och en Semafor kan anses vara den enklaste typen av Monitor (eller användas för att bygga en sådan) Om vi skickar tomma meddelanden blir en Mailbox till en Semafor: värdet av räknaren i semaforen motsvarar antalet meddelanden i mailboxen send -metod motsvarar give() receive -metod motsvarar take() Samtliga tre metoder för resursdelning och kommunikation mellan trådar är alltså likvärdiga och lika mäktiga - valet beror dock på situationen och den omedelbara lämpligheten av en viss metod. Se alla tre laborationer för jämförelse! 12

55 RTEventBuffer - begränsad lagring 13

56 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter 13

57 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... 13

58 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer 13

59 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer erbjuder full asymmetrisk synkronisation - meddelanden hanteras när trådarna behöver göra det 13

60 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer erbjuder full asymmetrisk synkronisation - meddelanden hanteras när trådarna behöver göra det När det inte finns GC tillgänglig, blir obegränsad oftast till en form av pool -hantering, då meddelanden återanvänds 13

61 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer erbjuder full asymmetrisk synkronisation - meddelanden hanteras när trådarna behöver göra det När det inte finns GC tillgänglig, blir obegränsad oftast till en form av pool -hantering, då meddelanden återanvänds Nackdel med obegränsade lagringskapaciteter 13

62 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer erbjuder full asymmetrisk synkronisation - meddelanden hanteras när trådarna behöver göra det När det inte finns GC tillgänglig, blir obegränsad oftast till en form av pool -hantering, då meddelanden återanvänds Nackdel med obegränsade lagringskapaciteter Inte riktigt bra när det krävs ett omedelbart svar, dvs synkron kommunikation 13

63 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer erbjuder full asymmetrisk synkronisation - meddelanden hanteras när trådarna behöver göra det När det inte finns GC tillgänglig, blir obegränsad oftast till en form av pool -hantering, då meddelanden återanvänds Nackdel med obegränsade lagringskapaciteter Inte riktigt bra när det krävs ett omedelbart svar, dvs synkron kommunikation Någonstans finns det en faktisk begränsning av resurserna 13

64 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer erbjuder full asymmetrisk synkronisation - meddelanden hanteras när trådarna behöver göra det När det inte finns GC tillgänglig, blir obegränsad oftast till en form av pool -hantering, då meddelanden återanvänds Nackdel med obegränsade lagringskapaciteter Inte riktigt bra när det krävs ett omedelbart svar, dvs synkron kommunikation Någonstans finns det en faktisk begränsning av resurserna RTEventBuffer 13

65 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer erbjuder full asymmetrisk synkronisation - meddelanden hanteras när trådarna behöver göra det När det inte finns GC tillgänglig, blir obegränsad oftast till en form av pool -hantering, då meddelanden återanvänds Nackdel med obegränsade lagringskapaciteter Inte riktigt bra när det krävs ett omedelbart svar, dvs synkron kommunikation Någonstans finns det en faktisk begränsning av resurserna RTEventBuffer Realtidssystem - det krävs ofta också bra koll på resurserna, en obegränsad Mailbox med kopiering-vid-sändning skulle inte kunna garanteras hålla måttet - och garanti är just det som ett realtidssystem kräver 13

66 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer erbjuder full asymmetrisk synkronisation - meddelanden hanteras när trådarna behöver göra det När det inte finns GC tillgänglig, blir obegränsad oftast till en form av pool -hantering, då meddelanden återanvänds Nackdel med obegränsade lagringskapaciteter Inte riktigt bra när det krävs ett omedelbart svar, dvs synkron kommunikation Någonstans finns det en faktisk begränsning av resurserna RTEventBuffer Realtidssystem - det krävs ofta också bra koll på resurserna, en obegränsad Mailbox med kopiering-vid-sändning skulle inte kunna garanteras hålla måttet - och garanti är just det som ett realtidssystem kräver GC och Javas objekthanteringsmekanismer tillåter att man kan skicka objektreferenser till delad minne istället för att skicka djupa kopior av objekt. Det gör att storleken av meddelanden kan vara flexibelt även med en fast storlek på lagringen (Mailbox) 13

67 RTEventBuffer - begränsad lagring Fördelar med obegränsade lagringskapaciteter varje meddelande allokeras dynamiskt, man måste inte veta storleken etc... kopieringen av meddelanden när de skickas gör att man inte måste hantera delad minne (shared memory), dvs samma mekanism fungerar inom eller mellan OS-processer erbjuder full asymmetrisk synkronisation - meddelanden hanteras när trådarna behöver göra det När det inte finns GC tillgänglig, blir obegränsad oftast till en form av pool -hantering, då meddelanden återanvänds Nackdel med obegränsade lagringskapaciteter Inte riktigt bra när det krävs ett omedelbart svar, dvs synkron kommunikation Någonstans finns det en faktisk begränsning av resurserna RTEventBuffer Realtidssystem - det krävs ofta också bra koll på resurserna, en obegränsad Mailbox med kopiering-vid-sändning skulle inte kunna garanteras hålla måttet - och garanti är just det som ett realtidssystem kräver GC och Javas objekthanteringsmekanismer tillåter att man kan skicka objektreferenser till delad minne istället för att skicka djupa kopior av objekt. Det gör att storleken av meddelanden kan vara flexibelt även med en fast storlek på lagringen (Mailbox) detaljer i kompendiet! 13

68 Klassen RTEventBuffer ), ) [4] [3] [2] growth [1] [5] [6] fetchat RTEvent[] buffer currsize==7 [0] [11] [7] postat [10] [8] [9] 14

69 Klassen RTEventBuffer RTEventBuffer: En mailbox för hantering av meddelanden av typ RTEvent ), ) [5] [6] [4] [3] [2] fetchat RTEvent[] buffer currsize==7 growth [1] [0] [11] [7] postat [10] [8] [9] 14

70 Klassen RTEventBuffer RTEventBuffer: En mailbox för hantering av meddelanden av typ RTEvent Konstruktorer: public RTEventBuffer() public RTEventBuffer( int maxsize) public RTEventBuffer( int maxsize, Object lock) ), ) [5] [6] [4] [3] [2] fetchat RTEvent[] buffer currsize==7 growth [1] [0] [11] [7] postat [10] [8] [9] 14

71 Klassen RTEventBuffer RTEventBuffer: En mailbox för hantering av meddelanden av typ RTEvent Konstruktorer: public RTEventBuffer() public RTEventBuffer( int maxsize) public RTEventBuffer( int maxsize, Object lock) Exempel med maxsize == 12, currsize == 7 ), ) [5] [6] [4] [3] [2] fetchat RTEvent[] buffer currsize==7 growth [1] [0] [11] [7] postat [10] [8] [9] 14

72 Klassen RTEventBuffer RTEventBuffer: En mailbox för hantering av meddelanden av typ RTEvent Konstruktorer: public RTEventBuffer() public RTEventBuffer( int maxsize) public RTEventBuffer( int maxsize, Object lock) Exempel med maxsize == 12, currsize == 7 ), ) [5] [6] [4] [3] [2] fetchat RTEvent[] buffer currsize==7 growth [1] [0] [11] Hämta meddelande ur lådan: RTEvent fetch() [7] postat [10] [8] [9] 14

73 Klassen RTEventBuffer RTEventBuffer: En mailbox för hantering av meddelanden av typ RTEvent Konstruktorer: public RTEventBuffer() public RTEventBuffer( int maxsize) public RTEventBuffer( int maxsize, Object lock) Exempel med maxsize == 12, currsize == 7 ), ) [5] [6] [4] [3] [2] fetchat RTEvent[] buffer currsize==7 growth [1] [0] [11] Hämta meddelande ur lådan: RTEvent fetch() [7] postat [10] Skicka meddelande till lådan: RTEvent post( RTEvent ev) [8] [9] 14

74 Metoder i RTEventBuffer 15

75 Metoder i RTEventBuffer Metoder för att skicka eller hämta meddelanden av typ RTEvent: 15

76 Metoder i RTEventBuffer Metoder för att skicka eller hämta meddelanden av typ RTEvent: RTEvent post( RTEvent e) // standard: kalla dopost() // och returnera null void dopost( RTEvent e) // blockerande final RTEvent trypost( RTEvent e) // ej blockerande final RTEvent dofetch() // blockerande final RTEvent tryfetch() // ej blockerande 15

77 Metoder i RTEventBuffer Metoder för att skicka eller hämta meddelanden av typ RTEvent: RTEvent post( RTEvent e) // standard: kalla dopost() // och returnera null void dopost( RTEvent e) // blockerande final RTEvent trypost( RTEvent e) // ej blockerande final RTEvent dofetch() // blockerande final RTEvent tryfetch() // ej blockerande trypost ger null om uppdraget lyckades, annars kommer meddelandet tillbaka (jfr bounce because of overflow i din e-post-brevlåda) tryfetch ger null om uppdraget misslyckades, eller ger meddelandet som kunde hämtas 15

78 Metoder i RTEventBuffer Metoder för att skicka eller hämta meddelanden av typ RTEvent: RTEvent post( RTEvent e) // standard: kalla dopost() // och returnera null void dopost( RTEvent e) // blockerande final RTEvent trypost( RTEvent e) // ej blockerande final RTEvent dofetch() // blockerande final RTEvent tryfetch() // ej blockerande trypost ger null om uppdraget lyckades, annars kommer meddelandet tillbaka (jfr bounce because of overflow i din e-post-brevlåda) tryfetch ger null om uppdraget misslyckades, eller ger meddelandet som kunde hämtas Kolla status: 15

79 Metoder i RTEventBuffer Metoder för att skicka eller hämta meddelanden av typ RTEvent: RTEvent post( RTEvent e) // standard: kalla dopost() // och returnera null void dopost( RTEvent e) // blockerande final RTEvent trypost( RTEvent e) // ej blockerande final RTEvent dofetch() // blockerande final RTEvent tryfetch() // ej blockerande trypost ger null om uppdraget lyckades, annars kommer meddelandet tillbaka (jfr bounce because of overflow i din e-post-brevlåda) tryfetch ger null om uppdraget misslyckades, eller ger meddelandet som kunde hämtas Kolla status: boolean isempty() boolean isfull() void awaitempty() void awaitnotempty() void awaitfull() void awaitnotfull() 15

80 Metoder i RTEventBuffer Metoder för att skicka eller hämta meddelanden av typ RTEvent: RTEvent post( RTEvent e) // standard: kalla dopost() // och returnera null void dopost( RTEvent e) // blockerande final RTEvent trypost( RTEvent e) // ej blockerande final RTEvent dofetch() // blockerande final RTEvent tryfetch() // ej blockerande trypost ger null om uppdraget lyckades, annars kommer meddelandet tillbaka (jfr bounce because of overflow i din e-post-brevlåda) tryfetch ger null om uppdraget misslyckades, eller ger meddelandet som kunde hämtas Kolla status: boolean isempty() boolean isfull() void awaitempty() void awaitnotempty() void awaitfull() void awaitnotfull() Mer i kompendiet och dokumentationen av se.lth.cs.realtime 15

81 Trådar med mailbox - exempel 16

82 Trådar med mailbox - exempel class Producer extends Thread { Consumer receiver; MyMessage msg; public Producer( Consumer rec) { receiver = rec; } } public void run() { while( true) { char c = getchar(); msg = new MyMessage( c); receiver.putevent( msg); } } class MyMessage extends RTEvent { character ch; public MyMessage( char data) { } super(); ch = data; // timestamp! 16

83 Trådar med mailbox - exempel class Producer extends Thread { Consumer receiver; MyMessage msg; public Producer( Consumer rec) { receiver = rec; } } public void run() { while( true) { char c = getchar(); msg = new MyMessage( c); receiver.putevent( msg); } } class MyMessage extends RTEvent { character ch; public MyMessage( char data) { } super(); ch = data; // timestamp! class Consumer extends Thread { RTEventBuffer mailbox; public Consumer( int size) { mailbox = new RTEventBuffer( size); } public void putevent( RTEvent ev) { mailbox.post( ev); // in context of producer! } } public void run() { RTEvent m; while( true) { m = mailbox.fetch(); // in context of consumer! if( m instanceof MyMessage) { MyMessage msg = (MyMessage) m; usechar( msg.ch); } else { //... handle other messages } } //... 16

84 Trådar med mailbox - exempel class Producer extends Thread { Consumer receiver; MyMessage msg; public Producer( Consumer rec) { receiver = rec; } } public void run() { while( true) { char c = getchar(); msg = new MyMessage( c); receiver.putevent( msg); } } class MyMessage extends RTEvent { character ch; public MyMessage( char data) { } super(); ch = data; // timestamp! class Consumer extends Thread { RTEventBuffer mailbox; public Consumer( int size) { mailbox = new RTEventBuffer( size); } public void putevent( RTEvent ev) { mailbox.post( ev); // in context of producer! } } public void run() { RTEvent m; while( true) { m = mailbox.fetch(); // in context of consumer! if( m instanceof MyMessage) { MyMessage msg = (MyMessage) m; usechar( msg.ch); } else { //... handle other messages } } //... se.lth.cs.realtime erbjuder olika typer av trådar som har en mailbox (RTEventBuffer) inbyggd och som kan alltså kommunicera via RTEvent-meddelanden Se kompendiet, övning 5 och laboration 3 för detaljer 16

85 Kursöversikt - var är vi nu? Realtidssystem - jämlöpande processer under tidsgarantikrav (Föreläsning 1) Jämlöpande exekvering, trådhantering, hantering av delade resurser ömsesidig uteslutning, signalering, datahantering, trådkommunikation semafor: föreläsning 1, 2 övning 1, 2 laboration 1 Tidskrav, systemhantering, schemaläggning resursallokering, schemaläggning, prioritetshantering schemaläggningsanalys dödläge: föreläsning 5 övning 5 monitor: föreläsning 3 övning 3, 4 laboration 2 schemaläggning + analys: föreläsning 6, 7 övning 7 mailbox: föreläsning 4 övning 5, 6 laboration 3 17

86 Laboration 2, förberedelse 18

87 Laboration 2, förberedelse Förberedelse inför laboration 2 (hiss) 18

88 Laboration 2, förberedelse Förberedelse inför laboration 2 (hiss) Uppgiften förklaras lite mera ingående 18

89 Laboration 2, förberedelse Förberedelse inför laboration 2 (hiss) Uppgiften förklaras lite mera ingående Vi tittar på wait / notify! 18

90 Laboration 2, förberedelse Förberedelse inför laboration 2 (hiss) Uppgiften förklaras lite mera ingående Vi tittar på wait / notify! Målet är att bygga ett designförslag (klass-diagram + flöde för trådarnas operationer i monitorn) för laborationsprogrammet 18

91 Sammanfattning Recap monitorer Mailbox, meddelanden och händelsehantering för trådkommunikation och informationsutbyte Man borde kunna bygga ett litet program med några trådar som kommunicerar med hjälp av mailboxar och kunna hantera laboration 3. Man borde kunna resonera över vilken mekanism ( fristående semaforer, monitorer, både Java-monitorer eller hembakade, eller trådbunden mailbox) som passar bra i vilka situationer och tänka ut mindre exempel för varje Lästips: e-bok: Kap 6 (s ) kompendium: Kap 2-4 ( Mailboxes) 19

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5

Realtidssystem. - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 5 Realtidssystem - Dödläge - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 5 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial

Läs mer

Exam Concurrent and Real-Time Programming

Exam Concurrent and Real-Time Programming LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Exam Concurrent and Real-Time Programming 2018 08 23, 14.00 19.00 1. Vad är prioritetsinversion? Illustrera med ett enkelt exempel. Redogör

Läs mer

Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2

Realtidssystem. - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 2 Realtidssystem - Semaforer, trådsynkronisering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 2 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad

Läs mer

Realtidssystem. - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-14

Realtidssystem. - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-14 Realtidssystem - Monitorer, synkroniserade metoder - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-14 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt

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

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

Läs mer

Realtidssystem. - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1

Realtidssystem. - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1 Realtidssystem - Introduktion, jämlöpande exekvering - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 1 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar

Läs mer

Concurrency Saker händer samtidigt. Process En instans av ett program

Concurrency Saker händer samtidigt. Process En instans av ett program Concurrency Saker händer samtidigt Hur gör vi flera saker samtidigt på en dator? - Dela på en CPU - Flera CPU Flera processer på en dator. Operativsystemet (OS) tilldelar dem körtid (time slices, prioritet)

Läs mer

Classes och Interfaces, Objects och References, Initialization

Classes och Interfaces, Objects och References, Initialization Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class

Läs mer

Tentamen Lösningar EDA698 Realtidssystem

Tentamen Lösningar EDA698 Realtidssystem LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Lösningar EDA698 Realtidssystem 13 10 22, 14:00 19:00 1. Prioriteter, korrekthet a) Realtidsproblemet kvarstår. Det finns ingen garanti

Läs mer

Realtidssystem. - Introduktion, jämlöpande exekvering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1

Realtidssystem. - Introduktion, jämlöpande exekvering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 1 Realtidssystem - Introduktion, jämlöpande exekvering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 1 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage)

Läs mer

Tentamen EDA698 Realtidssystem (Helsingborg)

Tentamen EDA698 Realtidssystem (Helsingborg) LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen EDA698 Realtidssystem (Helsingborg) 2014 10 28, 14.00 19.00 Det är tillåtet att använda Java snabbreferens och miniräknare, samt ordbok.

Läs mer

Tråd C (ms) T (ms) A 4 16 B 3 10 C 4 25 D 2 12

Tråd C (ms) T (ms) A 4 16 B 3 10 C 4 25 D 2 12 LUNDS TEKNISKA HÖGSKOLA Datavetenskap Realtidsprogrammering : EDA040 DAT040 Tentamensskrivning - Realtidsprogrammering 2006-06-01, kl 8.00-13.00 Anvisningar: Tillåtna hjälpmedel: inga utöver Java snabbreferens.

Läs mer

Trådar. Aktiva objekt

Trådar. Aktiva objekt Föreläsning 11 Trådar 1 Aktiva objekt Det är välkänt från vardagslivet att saker händer samtidigt. Aktiva objekt gör saker på eget initiativ, medan passiva objekt endast gör saker när de blir ombedda.

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016 Objektorienterad Programkonstruktion Föreläsning 2 2 nov 2016 Objekt - klass Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 Objekt - klass Objekt - klass Objekt - klass + Objekt - klass public class

Läs mer

Realtidssystem. - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Realtidssystem. - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6 Realtidssystem - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698 (Mats Lilja)

Läs mer

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:

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

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 Innehåll Trådar i Java swing- klassen Timer Klient-Server-program Trådar Tråd = enkel process Ett program kan ha flera trådar, flera

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar.

/* * * Lösningsförslag tentamen DIT950 * Datum * */ /* * -1 - */ För samtliga gäller,se föreläsningsanteckningar. * * Lösningsförslag tentamen DIT950 * Datum 150317 * * -1 - För samtliga gäller,se föreläsningsanteckningar. * - 2 - (Diagram visas inte, kontakta mig för ev frågor) // a C c = new A(); // Compile! Sub

Läs mer

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02

Realtidssystem. - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02 Realtidssystem - Semaforer, trådsynkronisering - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp 2015-09-02 Stora delar baserad på: Föreläsningsmaterial EDA040 (Klas Nilsson, Mathias Haage) samt EDA698

Läs mer

Tentamen i Objektorienterad modellering och design

Tentamen i Objektorienterad modellering och design Lunds Tekniska Högskola Datavetenskap Tentamen EDA061 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Vid bedömningen kommer hänsyn att tas till lösningens kvalitet. UML-diagram

Läs mer

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/4 2014 Innehåll Kort om Javas Exceptions Trådar i Java swing- klassen Timer Klient-Server-program Javas Exceptions Checked måste hanteras,

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

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018

Static vs Dynamic binding Override vs Overload. Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018 Static vs Dynamic binding Override vs Overload Objekt-orienterad programmering och design Alex Gerdes och Sólrún Halla Einarsdóttir, 2018 Quiz: Gissa typen? Object o = new Square(100,100); Polygon p =

Läs mer

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt Föreläsning 4 Klasser Och Objekt Klass Beskrivning av en objekttyp Beskriver egenskaper och beteende (fält och metoder) Klassen fungerar som en ritning Objekt skapas från klassbeskrivningen - instansieras

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

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized.

Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas (inbyggda monitor) synchronized. 2EMHNWRULHQWHUDG5HDOWLGVSURJUDPPHULQJ Java: kort introduktion. Trådar. Något om mutex, Dekkers algoritm och monitorer. Javas ("inbyggda monitor") synchronized. previous next Java Java är konstruerat på

Läs mer

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser.

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/ Exempel: Implementation av Schackpjäser. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 31/3 2017 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack Klassen Object

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

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID

Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Föreläsning 17 UTBLICK: FORTSÄTTNINGSKURSER I DATAVETENSKAP + ANDROID Vad gör vi här? Programmeringsteknik fördjupningskurs (EDAA01; 7,5hp) Valfri för F, N & BME (kan läsas från åk 2 eller i sommar!) Avancerad

Läs mer

Tentamen i Objektorienterad modellering och design Helsingborg

Tentamen i Objektorienterad modellering och design Helsingborg Lunds Tekniska Högskola Datavetenskap Emelie Engström Tentamen EDAF25 2016 10-26, 08:00 13:00 Tentamen i Objektorienterad modellering och design Helsingborg Tentamen består av en teoridel om totalt 5 poäng

Läs mer

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max 30p i denna halvtentamen Hjälpmedel:

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

LÖSNINGSFÖRSLAG

LÖSNINGSFÖRSLAG LÖSNINGSFÖRSLAG - 100406 Uppgift 1. a) Objekten som tillhör en icke-muterbar klass är oförändliga, dvs de behåller under hela sin livstid det tillstånd som de fick när de skapades. Icke-muterbara objekt

Läs mer

TDDD78 Viktiga begrepp, del 2

TDDD78 Viktiga begrepp, del 2 jonas.kvarnstrom@liu.se 2015 TDDD78 Viktiga begrepp, del 2 Identitet och likhet Är likhet och identitet samma sak? Oj, vi har samma kläder på oss idag! Nej, men likadana! Besserwisser 3 Detta är två rutor

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2012 05 28, 8.00 13.00 Del 1 1. Time To Live (TTL) anger hur många routrar ett multicastpaket

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2008 05 26, 8.00 13.00 1. a) Raden sent = input.read(buffer); läser in så många bytes (dock max

Läs mer

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser.

Abstrakt klass. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/ Exempel: Implementation av Schackpjäser. DD2385 Programutvecklingsteknik Några bilder till föreläsning 4 7/4 2014 Innehåll Abstrakta klasser Klasshierarki och typhierarki Polymorfism och dynamisk bindning Polymorfi-exempel: Schack UML-översikt

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

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Objektorienterad Programkonstruktion. Föreläsning dec 2015 Objektorienterad Programkonstruktion Föreläsning 12 14 dec 2015 Parallella Problem I program med flera parallella exekveringstrådar kan det uppstå problem, fel och andra fenomen som inte förekommer i enkeltrådade

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2016 05 31, 8.00 13.00 Del 1 1. a) Vid multicast skickas ett datagram från en sändande dator

Läs mer

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043,

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043, Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043, 2017-02-20 Aktiva objekt och trådar Multitasking, parallella program Vanliga datorer har kunna köra flera program skenbart samtidigt

Läs mer

Tentamen EDA698 Realtidssystem (Helsingborg)

Tentamen EDA698 Realtidssystem (Helsingborg) LUNDS TEKNISKA HÖGSKOLA 1(10) Institutionen för datavetenskap Tentamen EDA698 Realtidssystem (Helsingborg) 2013 08 23, 08.00 13.00 Det är tillåtet att använda Java snabbreferens och miniräknare, samt ordbok.

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

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

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

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 Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(5) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2018 03 14, 8.00 13.00 Del 1 1. Applikationslagret levererar data mellan applikationer och till

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

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

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... }

Java-syntax (arv) Exempel: public class Crow extends Bird {... } Jämför med Lab 1: public class FirstApp extends Frame {... } Föreläsning 3 Arv Kategorisering Stora program leder till många klasser (tänk liknelsen med en affär med många varor). Att dela in saker i kategorier är en vanlig strategi för att hantera stora komplexa

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

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

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

E02 The Review Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition Kurs: 1dv403 Webbteknik I Johan Leitet E02 - "The Review" Dagens agenda Identifierare Kommentarer Variabler Datatyper Operatorer Villkorssatser

Läs mer

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6 Realtidssystem - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp Föreläsning 6 Kursens innehåll motsvarar tidigare omgångar under beteckning EDA698 Stora delar baserad på: Föreläsningsmaterial

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

Klassdeklaration. Metoddeklaration. Parameteröverföring

Klassdeklaration. Metoddeklaration. Parameteröverföring Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P UME UNIVERSITET Datavetenskap 981212 TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P Datum : 981212 Tid : 9-15 HjŠlpmedel : Inga Antal uppgifter : 9 TotalpoŠng : 60 (halva pošngtalet kršvs normalt fšr

Läs mer

Distribuerade affärssystem

Distribuerade affärssystem Distribuerade affärssystem Kursens mål Bygga upp, strukturera och programmera distribuerade system med en flerskiktsarkitektur Beskriva och förklara teorier och uttryck som används inom affärskritiska

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 Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2014 06 02, 8.00 13.00 Del 1 1. a) TCP (Transmission Control Protocol) och UDP (User Datagram

Läs mer

Föreläsning 3: Händelsestyrda program och användargränssnitt

Föreläsning 3: Händelsestyrda program och användargränssnitt (2 september 2015 F3.1 ) Föreläsning 3: Händelsestyrda program och användargränssnitt Idag Från sekventiella till händelsestyrda program Lyssnare Kontroller Layout för ordning av kontroller (2 september

Läs mer

DAT043 - Föreläsning 7

DAT043 - Föreläsning 7 DAT043 - Föreläsning 7 Model-View-Controller, mer om klasser och interface (arv, ) 2017-02-06 Designmönstret Observer avläser Observer Observable meddelar Observer avläser En eller flera objekt registrerar

Läs mer

Dynamisk bindning och polymorfism

Dynamisk bindning och polymorfism Dynamisk bindning och polymorfism I C++ är pekare till basklasser polymorfa, dvs de kan peka på objekt av en subklass typ Vid statisk bindning sker all bindning vid kompileringen -> Vid ett metodanrop

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

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

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

Datastrukturer. föreläsning 3. Stacks 1

Datastrukturer. föreläsning 3. Stacks 1 Datastrukturer föreläsning 3 Stacks 1 Abstrakta datatyper Stackar - stacks Köer - queues Dubbeländade köer - deques Vektorer vectors (array lists) All är listor men ger tillgång till olika operationer

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

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

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och

Innehåll. dynamisk bindning. och programmering CRC) u Arv, polymorfi och Innehåll u OOP snabbintroduktion u Datatyper u Uttryck u Satser u Arv (intro) u Programvaruutveckling och programmering u Klassdesign och metodik (UML, CRC) u Arv, polymorfi och dynamisk bindning u Fält

Läs mer

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13

Tentamensskrivning Nätverksprogrammering (EDA095) , kl 8-13 LUNDS TEKNISKA HÖGSKOLA Datavetenskap Nätverksprogrammering 2006 LÖSNINGAR Tentamensskrivning Nätverksprogrammering (EDA095) 2004-05-27, kl 8-13 DEL 1 - Frågor av teoretisk, principiell eller utredande

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

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor i Java Först följer frågor av flervalstyp. Frågorna är inte ordnade efter svårighetsgrad. 1. Skillnaden mellan typerna int och

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

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid: Tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-17, TDA540 Dag: 2018-01-13, Tid: 14.00-18.00 Ansvarig: Examinator: Alex Gerdes Carlo A. Furia Förfrågningar: Alex

Läs mer

Föreläsning 2 Datastrukturer (DAT037)

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

Läs mer

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1

Målen med OOSU. Objektorienterad programmering. Objektorienterad programmering. Karlstads Universitet, Johan Öfverberg 1 Objektorienterad programmering Vi började med att programmera i main, sedan gick vi vidare till flera metoder i en klass. Nu är det dags för flera klasser. Objektorienterad programmering Relationer mellan

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

Föreläsning 3. Stack

Föreläsning 3. Stack Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista Evaluate postfix expressions Läsanvisningar

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. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002

Tentamen. Programmeringsmetodik, KV: Java och OOP. 17 januari 2002 Pedher Johansson Institutionen för datavetenskap LÖSNINGSFÖRSLAG Lösningsförslag Tentamen Programmeringsmetodik, KV: Java och OOP 17 januari 2002 Uppgift 1 (20 p) Teoriuppgifter Resultat och uppgifter

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

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur

Läs mer

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

Läs mer

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem).

TENTAMEN: Objektorienterad programmering. Läs detta! Skriv din tentamenskod på varje blad (så att vi inte slarvar bort dem). 1 (9) TENTAMEN: Objektorienterad programmering Läs detta! Uppgifterna är inte ordnade efter svårighetsgrad. Börja varje uppgift på ett nytt blad. Skriv din tentamenskod på varje blad (så att vi inte slarvar

Läs mer

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.

Tentamen. 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14. Tentamen 2D4135 vt 2004 Objektorienterad programmering, design och analys med Java Torsdagen den 3 juni 2004 kl 9.00 14.00, sal D31 Tentan har en teoridel och en problemdel. På teoridelen är inga hjälpmedel

Läs mer

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen i Algoritmer & Datastrukturer i Java Tentamen i Algoritmer & Datastrukturer i Java Hjälpmedel: Skrivhjälpmedel, miniräknare. Ort / Datum: Halmstad / 2010-03-16 Skrivtid: 4 timmar Kontaktperson: Nicolina Månsson Poäng / Betyg: Max 44 poäng

Läs mer

Tentamen EDA698 Realtidssystem (Helsingborg)

Tentamen EDA698 Realtidssystem (Helsingborg) LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen EDA698 Realtidssystem (Helsingborg) LUNDS TEKNISKA HÖGSKOLA 1(6) Institutionen för datavetenskap Det är tillåtet att använda Java snabbreferens

Läs mer

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y;

public interface Skrivbar { void skriv(); } public class Punkt implements Skrivbar { public double x; public double y; public interface Skrivbar { void skriv(); public class Punkt implements Skrivbar { public double x; public double y; public Punkt(double xx, double yy) { x = xx; y = yy; public Punkt() { @Override public

Läs mer

Tentamen Nätverksprogrammering Lösningsförslag

Tentamen Nätverksprogrammering Lösningsförslag LUNDS TEKNISKA HÖGSKOLA 1(7) Institutionen för datavetenskap Tentamen Nätverksprogrammering Lösningsförslag 2018 04 11, 8.00 13.00 Del 1 1. a) IP-numret identifierar en enskild dator på internet. b) Port-numret

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1

Ingenjörsfirman Stéen 2001-12-13 Java Sida 1 av 1 Java Sida 1 av 1 Java Mål och Syfte Målet med denna kurs i Java är att du direkt efteråt ska kunna börja utveckla dina första Javaapplikationer. Kursen ger dig många konkreta exempel på hur detta effektiva

Läs mer

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018 Static vs Dynamic binding Polymorfism Objekt-orienterad programmering och design (DIT95) Niklas Broberg, 2018 Diagnostiskt prov Shape + overlaps(shape): int return 1; Shape shape = new Shape(); Polygon

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer