Oppgaver uke 9

 

Oppgave 1:
Vi skal lage et program med kaffedrikkere (tråd), en barista (tråd), og ett bord (monitor). Bordet kan ha uendelig mange kaffer på seg. 
  1. Lag klassen Barista som er en tråd. Alle har et array med ulike kaffedrikkerprivate final String[] drikker = {"Americano", "Café au lait", "Caffè latte", "Caffè mocca", "Espresso", "Cortado"};
    I tillegg tar Baristaen inn et bord (Som du skal lage i oppgave E) som vedkommende kan servere kaffen på, og en id.  
  2. Implementer metoden run() til barista. Hver barista lager 10 kaffer, og disse drikkene skal velges tilfeldig fra liste drikker (TIPS: bruk java.util.Random for å få et tall mellom 0 og lengden til drikker). Baristaen skal sa skrive ut sin id og hvilken drikke som blir laget. Før vedkommende servere kaffen på bordet. Når 10 kaffer er servert skal baristaen sende inn at det er “tomt”
  3. Lag klassen Kaffedrikker som er en tråd.  Kaffedrikker skal ta inn et  bord vedkommende kan hente kaffe fra, og en id.
  4. Implementer metode run i Kaffedrikke. Denne skal ha en teller som teller antall kaffer som kaffedrikkeren får drukket.  Så lenge kaffedrikeren får beskjed om at det ikke er tomt skal vedkommende printe sin id og hvilken kaffe som ble drukket. Når det ikke er flere kaffer for kaffedrikkeren å drikke skal vedkommende printe sin id og hvor mange kaffekopper som ble drukket.
  5. Lag klassen Bord. Lag en metode som serverer kaffe (legger de til i bordet), husk at det kan være uendelig mange kaffer på bordet om gang. Lag også en metode hentKaffe som henter en kaffe fra bordet så lenge det er en kaffe der, og signaliserer til Kaffedrikker når det er tomt.
  6. Lag klasseen Hovedprogram som lager et Bord, 2 baristaer og 10 kaffedrikkere. Test gjerne med ulike verdier for å se hvordan programmet oppfører seg) 
Oppgave 2:

Vi tenker oss en brusautomat (vår monitor) som inneholder et gitt antall brusbokser. Videre har vi kunder (tråder) som forsøker å ta brusbokser ut av automaten. Vi har også én person (tråd) som er ansvarlig for å fylle opp automaten når den er tom. PS: husk at du må bruke locks der det passer seg (kun en tråd kan endre på en verdi om gangen).

  1. Brusautomaten vår har en metode refill (som den som er ansvarlig for å fylle opp brusautomaten bruker). Metoden skal fylle opp brusatomaten til dens kapasitet. Men dette kan kun gjøres når den er tom. Derfor må denne metoden vente (tips Condition) til det er tomt i brusautomaten. Når brusmaskinen blir fylt opp skal det printes en liten beskjed som gir sier nettopp dette  
  2. Brusautomat skal ha metoden kjopBrus, denne metoden skal la de som kaller på den ta seg en brus (dette gjøres ved å senke antall brus som er i brusmaskinen). Så lenge det ikke er noen brus i maskinen må man stå å vente (tips Condition). Når man får kjøpt en brus skal det printes ut en beskjed om nettopp dette.
  3.  Lag klassen MaskinFyller, denne personen prøver å fylle opp maskinen hvert 5 sekund
  4. Lag klassen BrusDrikker, hver brus drikker venter mellom 0-3 sekunder før den tar en ny brus (Dette kan gjøres ved bruk av random)). BrusDrikker skal også ta inn et random tall mellom 5-15 som er antall brus de har planer om å drikke
Publisert 27. mars 2023 09:56 - Sist endret 12. apr. 2023 19:31