public class Geraet{ // 6 Punkte private String id; protected boolean defekt = false; protected Nachrichtenschlange schlange; public Geraet(String id, Nachrichtenschlange s){ this.id = id; schlange = s; } public String holeId(){ return id; } }
public class Kaffeevollautomat extends Geraet { // 22 Punkte private int milch; private int kaffee; private int tassen; public Kaffeevollautomat(String id, Nachrichtenschlange s) { super(id,s); } public void fuelle(int kaffee, int milch) { this.kaffee += kaffee; this.milch += milch; } public void erzeugeTasseKaffee(boolean mitMilch) { boolean erzeugeTasse = true; double random = Math.random() * 100; if(defekt) return; if (random <= 2) { defekt = true; Nachricht n = new Nachricht(holeId(), "Mahlwerk defekt"); schlange.neueNachricht(n); return; } if(mitMilch&&milch<10){ schlange.neueNachricht(new Nachricht(holeId(),"Milch fehlt")); erzeugeTasse=false; } if (kaffee<25){ schlange.neueNachricht(new Nachricht(holeId(),"Kaffee fehlt")); erzeugeTasse=false; } if(erzeugeTasse){ System.out.print("Tasse Kaffe "); if(mitMilch){ System.out.print("mit"); milch -=10; } else System.out.print("ohne"); System.out.println(" Milch ausgeben"); kaffee-=25; tassen++; if (tassen%10==0){ String s = tassen + "Tassen ausgegeben"; schlange.neueNachricht(new Nachricht(holeId(),s)); } } } }
public class Nachricht { // 4 Punkte private String id; private String text; public Nachricht(String id, String text){ this.id = id; this.text = text; } public void drucke(){ System.out.printf("%s : %s \n", id, text); } }
import java.util.ArrayList; // 10 Punkte public class Nachrichtenschlange { private ArrayList<Nachricht> liste = new ArrayList<Nachricht>(); public void neueNachricht(Nachricht n) { liste.add(n); } public void drucke() { int i; System.out.println("Nachrichtenschlange"); for (i = 0; i < liste.size(); i++) { System.out.print((i+1) + ". "); liste.get(i).drucke(); } } public void drucke2() { int i=1; System.out.println("Nachrichtenschlange"); for (Nachricht nachricht: liste) { System.out.print(i + ". "); nachricht.drucke(); i++; } } }
public class Main { // 8 Punkte public static void main(String[] args) { Nachrichtenschlange ns = new Nachrichtenschlange(); Kaffeevollautomat kv = new Kaffeevollautomat("Maximus R306", ns); kv.fuelle(700, 70); double random; for (int i = 0; i < 30; i++) { random = Math.random()*100; if (random <= 50) { kv.erzeugeTasseKaffee(true); } else { kv.erzeugeTasseKaffee(false); } } ns.drucke(); } }
Projekt mit IntelliJ: 2021-So-FIA-A1-Lsg.zip
Alle Klassen als PDF: 2021-So-FIA-A1-Lsg.pdf