public class Exempel1 { public static void main(string[] args) {

Relevanta dokument
4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Tentamen. Lösningsförslag

OOP Tenta

Instuderingsfrågor, del D

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

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

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Föreläsning 8: Exempel och problemlösning

Dugga i Grundläggande programmering STS, åk

Del A (obligatorisk för alla)

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

OOP Omtenta

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

Lösningsförslag till tentamen

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Konstruktion av klasser med klasser

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

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

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 bänken.

Lösningsförslag övning 2.

TDDE10 TDDE11, 725G90. Objektorienterad programmering i Java, Föreläsning 3 Erik Nilsson, Institutionen för Datavetenskap, LiU

System.out.println("Jaså du har "+ antaldollar + " stycken.");

Lösningsförslag till exempeltenta 2

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

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Den som bara har en hammare tror att alla problem är spikar

Programmering för språkteknologer II, HT2011. Rum

Föreläsning 12: Exempel och problemlösning

Lösningar för tenta 2 DAT043,

SI-pass 4. Johan Brook och Jesper Persson. 25 september Diskutera och svara på om påståendena nedan är äkta sanningar eller listiga lögner.

Klasshierarkier. Klasser kan byggas på redan definierade klasser

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

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

Tentamen, EDAA20/EDA501 Programmering

Lösningsförslag till tentamen

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

Lösningsförslag till tentamen i EDAF25 Objektorienterad modellering och design Helsingborg

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

OOP Objekt-orienterad programmering

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

JAVAUTVECKLING LEKTION 8

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Föreläsning 3-4 Innehåll

OOP Tentamen

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h

OOP Omtenta

Tentamen i Objektorienterad programmering

Arv. Objektorienterad och komponentbaserad programmering

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Laboration 13, Arrayer och objekt

Lösningsförslag till tentamen

Svaret kan ges i Javakod (eller i UML-klassdiagram). public class A { B minb;... } public class B { <B:s många variabler och metoder> } Lösning:

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

Föreläsning 1 Datastrukturer (DAT037)

JAVA Mer om klasser och objektorientering

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

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

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

Tentamen i Programmering

Instuderingsuppgifter läsvecka 6 - LÖSNINGAR

Chapter 4: Writing Classes/ Att skriva egna klasser.

Exempel på användning av arv: Geometriska figurer

Lösningsförslag till tentamen

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Lösningsförslag, tentamen FYTA11 Javaprogrammering

OOP Omtenta

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

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

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

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

Tentamen på kursen DA7351, Programmering , kl Malmö högskola Teknik och samhälle. DA7351, Programmering

Tentamen Nätverksprogrammering Lösningsförslag

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

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

Tentamen Nätverksprogrammering Lösningsförslag

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Klasshierarkier - repetition

Föreläsning 4. ADT Kö Kö JCF Kö implementerad med en cirkulär array Kö implementerad med en länkad lista

Malmö högskola 2007/2008 Teknik och samhälle

DIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Tentamen , Grundläggande programmering i Java

Tentamen , Introduktion till Java, dtaa98, dtea53

"if"-satsen. Inledande programmering med C# (1DV402)

DAT043 Objektorienterad Programmering

Algoritmer. Två gränssnitt

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

Recitation 4. 2-D arrays. Exceptions

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Skillnader mellan Python och Java

Föreläsning 14. Filhantering

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Transkript:

public class Exempel1 { public static void main(string[] args) { //skapa objekt som representerar processerna Kernel process1 = new TestProcess("Process 1", "Hej Anna!"); Kernel process2 = new TestProcess("Process 2", "Hej Bertil!"); //starta processer (lämna init-mode) Kernel.startProcesses(); public class TestProcess extends Kernel { private String message; TestProcess(String name, String message) { //tala om för kärnan att detta är en process createstdprocess(name, NoTimer); this.message = message; //denna metod representerar processen public void System.out.println(message); 1

class Utskrift { //mutexsemafor public static BinarySemaphore mutex = new BinarySemaphore(1); public static void main(... public class Even extends Kernel { Even() { createstdprocess("jämna", NoTimer); public void //skriver ut jämna tal i = 0; //första jämna talet Utskrift.mutex.binWait(); för att skriva ut System.out.println(i); Utskrift.mutex.binSignal(); //släpp mutex i+=2; public class Odd extends Kernel { Odd() { createstdprocess("udda", NoTimer); public void //skriver ut jämna tal i = 1; //första udda talet Utskrift.mutex.binWait(); för att skriva ut System.out.println(i); Utskrift.mutex.binSignal(); //släpp mutex i+=2; 2

class Utskrift2 { //mutexsemaforer public static BinarySemaphore mutexodd = new BinarySemaphore(0); public static BinarySemaphore mutexeven = new BinarySemaphore(1); public static void main(... public class Even extends Kernel { Even() { createstdprocess("jämna", NoTimer); public void //skriver ut jämna tal i = 0; //första jämna talet Utskrift2.mutexEven.binWait(); för att skriva ut System.out.println(i); Utskrift2.mutexOdd.binSignal(); //lämna över mutex till Odd i+=2; public class Odd extends Kernel { Odd() { createstdprocess("udda", NoTimer); public void //skriver ut jämna tal i = 1; //första udda talet Utskrift2.mutexOdd.binWait(); för att skriva ut System.out.println(i); Utskrift2.mutexEven.binSignal(); //lämna över mutex till Even i+=2; 3

class Main { public static BinarySemaphore mutex = new BinarySemaphore(1); //global class Reader { //läs databasen Main.mutex.binSignal(); //släpp mutex class Writer { //skriv databasen Main.mutex.binSignal(); //släpp mutex 4

class Main { //lås för databasen public static BinarySemaphore rw = new BinarySemaphore(1); class Reader { public static int nr = 0; //antal läsare i databasen //mutexlås för nr public static BinarySemaphore mutexr = new BinarySemaphore(0); nr = nr+1; if (nr == 1) Main.rw.binWait(); //en läsare mer i databasen //om först, lås databasen (för skrivare) //läs databasen nr = nr-1; //en läsare mindre if (nr==0) Main.rw.binSignal(); //om sist, släpp lås till databasen class Writer { Main.rw.binWait(); //lås databasen //skriv databasen Main.rw.binSignal(); //släpp låset 5

class Main { //lås för databasen public static BinarySemaphore rw = new BinarySemaphore(1); class Reader { public static int nr = 0; //antal läsare i databasen //mutexlås för nr public static BinarySemaphore mutexr = new BinarySemaphore(0); mutexr.binwait(); nr = nr+1; if (nr == 1) Main.rw.binWait(); mutexr.binsignal(); //en läsare mer i databasen //om först, lås databasen (för skrivare) //släpp mutex //läs databasen mutexr.binwait(); nr = nr-1; //en läsare mindre if (nr==0) Main.rw.binSignal(); //om sist, släpp lås till databasen mutexr.binsignal(); //släpp mutex class Writer { Main.rw.binWait(); //lås databasen //skriv databasen Main.rw.binSignal(); //släpp låset 6

class Main { public static BinarySemaphore mutex = new BinarySemaphore(1); //global class Reader { public static int nr = 0; //antal läsare i databasen public static BinarySemaphore block = new BinarySemaphore(0); public static int delayed = 0; //antal väntande läsare (block.binwait()) if (Writer.nw>0) { //kan vi gå in direkt? delayed=delayed+1; //vi ställer oss is kö Main.mutex.binSignal(); //släpper mutex block.binwait(); //och väntar (får sedan mutex) nr = nr+1; //vi går in (vi har nu mutex) if (delayed>0) { //släppa in fler läsare? delayed=delayed-1; //en mindre på kö block.binsignal(); //som vi släpper in (överlämna mutex) else Main.mutex.binSignal(); //släpp mutex (lämnade inte över) //läs databasen (här har vi inte mutex) nr = nr-1; //vi går ut if (nr==0 & Writer.delayed>0) { //släppa in skrivare? Writer.delayed = Writer.delayed-1; //en skrivare mindre i kön Writer.block.binSignal(); //släpp in skrivare (pass baton) else Main.mutex.binSignal(); //släpp mutex 7

class Writer { public static int nw = 0; //antal skrivare i databasen (0 eller 1) public static BinarySemaphore block = new BinarySemaphore(0); public static int delayed = 0; //antal väntande skrivare (block.binwait()) if (Reader.nr>0 nw>0) { delayed=delayed+1; Main.mutex.binSignal(); block.binwait(); nw = nw+1; Main.mutex.binSignal(); //kan vi gå in direkt? //en skrivare mer i kön //släpper mutex //ställer oss i kö //vi går in (vi har nu mutex) //vi släpper aldrig in fler //skriv databasen (här har vi inte mutex) nw = nw-1; //vi går ut if (Reader.delayed>0) { //finns läsare på kö? Reader.delayed=Reader.delayed-1; //en läsare mindre i kö Reader.block.binSignal(); //släpp in en läsare (pass baton) else if (delayed>0) { //finns skrivare på kö? delayed=delayed-1; //en skrivare mindre i kö block.binsignal(); //släpp in skrivare (pass baton) else Main.mutex.binSignal(); //släpp mutex (ingen ville in) 8