Was ist ein Toaster

Es war einmal, in einem Königreich nicht weit von hier, ein König rief zwei seiner Berater zu einer Prüfung zusammen. Er zeigte ihnen beiden eine glänzende Metallkiste mit zwei Schlitzen im oberen Teil, einen Kontrollknopf und einen Hebel. „Was, glauben Sie, ist das?“

4-Scheiben Toaster – Schwarz : Toaster 4-Scheiben Toaster – Schwarz – Ein Berater, ein Elektroingenieur, antwortete zuerst. „Es ist ein Toaster“, sagte er. Der König fragte: „Wie würden Sie einen eingebetteten Computer dafür entwerfen? Der Berater: „Mit Hilfe eines Vier-Bit-Mikrocontrollers würde ich ein einfaches Programm schreiben, das den Dunkelheitsknopf liest und seine Position auf eine von 16 Dunkelschattierungen, von Schneeweiß bis Kohlenschwarz, quantifiziert. Das Programm würde diesen Dunkelheitsgrad als Index für eine 16-Elemente-Tabelle mit den anfänglichen Timerwerten verwenden. Dann würde es die Heizelemente einschalten und die Zeitschaltuhr mit dem aus der Tabelle ausgewählten Anfangswert starten. Am Ende der Zeitverzögerung würde es die Heizung ausschalten und den Toast aufleuchten lassen. Kommen Sie nächste Woche wieder, und ich werde Ihnen einen funktionierenden Prototyp zeigen.“

Der zweite Berater, ein Software-Entwickler, erkannte sofort die Gefahr eines solchen kurzsichtigen Denkens. Er sagte: „Toaster machen nicht nur Brot zu Toast, sie sind auch gewohnt, gefrorene Waffeln zu erwärmen. Was Sie vor sich sehen, ist in Wirklichkeit ein Frühstückskocher. Wenn die Untertanen Ihres Königreichs immer raffinierter werden, werden sie mehr Fähigkeiten verlangen. Sie werden einen Frühstückskocher brauchen, der auch Würstchen kochen, Speck braten und Rührei machen kann. Ein Toaster, der nur Toast macht, wird bald überflüssig sein. Wenn wir nicht in die Zukunft blicken, werden wir den Toaster in wenigen Jahren völlig neu gestalten müssen“.

„In diesem Sinne können wir eine intelligentere Lösung für das Problem formulieren. Erstens, schaffen Sie eine Klasse von Frühstücksnahrung. Spezialisieren Sie diese Klasse in Unterklassen: Getreide, Schweinefleisch und Geflügel. Der Spezialisierungsprozess sollte mit Körnern wiederholt werden, die in Toast, Muffins, Pfannkuchen und Waffeln unterteilt sind; Schweinefleisch, das in Wurst, Glieder und Speck unterteilt ist; und Geflügel, das in Rührei, hart gekochte Eier, pochierte Eier, Spiegeleier und verschiedene Omelett-Klassen unterteilt ist. „Die Klasse der Schinken-Käse-Omelettes verdient besondere Aufmerksamkeit, weil sie Eigenschaften aus den Klassen Schweinefleisch, Milchprodukte und Geflügel erben muss. Wir sehen also, dass das Problem ohne Mehrfachvererbung nicht richtig gelöst werden kann. Zur Laufzeit muss das Programm das richtige Objekt erstellen und eine Nachricht an das Objekt senden, die besagt: „Kochen Sie selbst“. Die Semantik dieser Botschaft hängt natürlich von der Art des Objekts ab, daher haben sie eine andere Bedeutung als ein Stück Toast und nicht als Rührei“.

„Wenn wir den bisherigen Prozess überprüfen, sehen wir, dass die Analysephase gezeigt hat, dass die primäre Anforderung darin besteht, jede Art von Frühstücksnahrung zu kochen. In der Entwurfsphase haben wir einige abgeleitete Anforderungen entdeckt. Insbesondere benötigen wir eine objektorientierte Sprache mit Mehrfachvererbung. Natürlich wollen die Benutzer nicht, dass die Eier kalt werden, während der Speck gebraten wird, also ist auch eine gleichzeitige Verarbeitung erforderlich. „Wir dürfen die Benutzerschnittstelle nicht vergessen. Dem Hebel, der das Essen absenkt, fehlt es an Vielseitigkeit, und der Dunkelheitsknopf ist verwirrend. Die Benutzer werden das Produkt nur dann kaufen, wenn es eine benutzerfreundliche, grafische Oberfläche hat. Wenn der Frühstückskocher angeschlossen ist, sollten die Benutzer einen Cowboy-Stiefel auf dem Bildschirm sehen. Benutzer klicken darauf, und die Meldung „Booten“ erscheint auf dem Bildschirm. Die Benutzer können ein Menü aufklappen und auf die Lebensmittel klicken, die sie kochen wollen. „Nachdem wir die weise Entscheidung getroffen haben, die Software zuerst in der Entwurfsphase zu spezifizieren, bleibt nur noch die Auswahl einer geeigneten Hardware-Plattform für die Implementierungsphase.