public void Start() { // TODO: schaue ob alle Verarbeitungsschritte in FIs behandelt werden können DateTime nächsterSchritt = DateTime.Now; while (!IstFertig()) { if (DateTime.Now >= nächsterSchritt.AddSeconds(1 / 4.0)) { nächsterSchritt = DateTime.Now; Produktionseinrichtung prodEinr = GetAbholbereiteProduktionseinrichtung(); // wenn es eine abholbereite produktionseinrichtung gibt if (prodEinr != null) { // hole teil if (prodEinr is EingangsLager) { _AktuellesTeil = ((EingangsLager)prodEinr).TeilAusgeben(); } else if (prodEinr is Fertigungsinsel) { _AktuellesTeil = ((Fertigungsinsel)prodEinr).TeilZurueckgeben(); // _aktue } Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " < " + prodEinr.GetName()); if (_AktuellesTeil.SelbstTestTeil()) { Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > LagerAus"); FindeAusgangsLager().TeilFuerDenVersandEmpfangen(_AktuellesTeil); } else { Fertigungsinsel insel = GetSchnellsteFertigungsinsel(); // wenn es keine FI gibt die das teil verarbeiten kann if (insel == null) { Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > LagerEin"); findeEingangsLager().TeilZwischenlagern(_AktuellesTeil); } else { Console.WriteLine(_AktuellesTeil.GetSeriennummer() + " > " + insel.GetName()); insel.TeilEntgegennehmen(_AktuellesTeil); } } } } } Console.WriteLine("Robbie ist fertig. " + FindeAusgangsLager().GetBestand().Count + " Teile im Ausgangslager"); }
private void GibHistorieAus(Teil t) { string serienNummer = t.GetSeriennummer(); Console.Write("LagerAus: " + serienNummer + " "); foreach (Tuple <Verarbeitungsschritt, string> historienEintrag in t.LiefereHistorie()) { Console.Write("( " + historienEintrag.Item1 + " - " + historienEintrag.Item2 + " );"); } Console.Write("\n"); }