diff --git a/README.md b/README.md index 6c42152..90776a7 100644 --- a/README.md +++ b/README.md @@ -159,14 +159,31 @@ update_all: ## Aufgabe +``` PR2-Aufgabe Roboterfabrik (ursprüngliche Autoren: Sebastian Tschirpke und Steffen Hennhöfer; mit Erweiterungen von Oliver Hummel) -Nach Abschluss Ihres Bachelorstudiums sind Sie auf Jobsuche. In einem Zeitungsartikel lesen Sie, dass die Firma ASDF123-Roboter AG, junge und kreative Mitarbeiter für den Aufbau einer Roboterfabrik sucht. Von der Stellenausschreibung ganz hingerissen, machen Sie sich sofort auf den Weg und reichen Ihre Bewerbungsunterlagen ein. Tatsächlich meldet sich die Firma kurz darauf bei Ihnen und lädt Sie zu einem Bewerbungsgespräch ein. Für Sie läuft scheinbar alles perfekt und Sie können es kaum erwarten Ihren zukünftigen Arbeitgeber von Ihren Qualitäten zu überzeugen. Jedoch zeigt dieser keinerlei Interesse an Ihren Zeugnissen, sondern knüpft vielmehr Ihre Einstellung an die Lösung folgender Aufgabe für die Sie Klassen auf der Domänenebene implementieren und testen sollen: -Die Firma möchte eine neue Roboterfabrik aufbauen und benötigt dazu ein Softwaremodell, welches den Produktionsprozess und die Roboter simuliert. Es handelt sich nur um eine einzige Fabrik mit einer Fabrikmethode, die flexibel auf Bestellungen der Kunden reagieren kann. Die Roboterfabrik bietet ihren Kunden zunächst zwei verschiedene Modelle an, beide aus der Star-Wars-Produktreihe: die Modelle heißen C3PO und R2D2 und sollen gemeinsam genutzte Funktionalität von einer Superklasse erben. -Alle Roboter haben eine einfache Schnittstelle Robot, mit der sie gesteuert werden können. Diese Schnittstelle besteht insgesamt aus den folgenden Dateien: -• Robot.java -• RobotControl.java -• RobotInstructions.java +Nach Abschluss Ihres Bachelorstudiums sind Sie auf Jobsuche. In einem Zeitungsartikel lesen Sie, +dass die Firma ASDF123-Roboter AG, junge und kreative Mitarbeiter für den Aufbau einer +Roboterfabrik sucht. Von der Stellenausschreibung ganz hingerissen, machen Sie sich sofort +auf den Weg und reichen Ihre Bewerbungsunterlagen ein. Tatsächlich meldet sich die Firma kurz +darauf bei Ihnen und lädt Sie zu einem Bewerbungsgespräch ein. Für Sie läuft scheinbar alles +perfekt und Sie können es kaum erwarten Ihren zukünftigen Arbeitgeber von Ihren Qualitäten zu überzeugen. +Jedoch zeigt dieser keinerlei Interesse an Ihren Zeugnissen, sondern knüpft vielmehr Ihre Einstellung +an die Lösung folgender Aufgabe für die Sie Klassen auf der Domänenebene implementieren und testen sollen: +Die Firma möchte eine neue Roboterfabrik aufbauen und benötigt dazu ein Softwaremodell, welches den +Produktionsprozess und die Roboter simuliert. Es handelt sich nur um eine einzige Fabrik mit einer Fabrikmethode, +die flexibel auf Bestellungen der Kunden reagieren kann. Die Roboterfabrik bietet ihren Kunden zunächst +zwei verschiedene Modelle an, beide aus der Star-Wars-Produktreihe: die Modelle heißen C3PO und R2D2 und +sollen gemeinsam genutzte Funktionalität von einer Superklasse erben. Alle Roboter haben eine einfache +Schnittstelle Robot, mit der sie gesteuert werden können. Diese Schnittstelle besteht insgesamt aus +den folgenden Dateien: + +``` + +* Robot.java +* RobotControl.java +* RobotInstructions.java + Die Fabrik ist von ihren Fertigungsanlagen her so konzipiert, dass jeder Roboter einzeln gefertigt wird. Übergeben wird lediglich das gewünschte Roboter-Modell und der Name und schon erhält der Kunde den von ihm gewünschten Roboter (also in der Simulation eine Instanz). Der Unterschied zwischen den angebotenen Modellen liegt in der Ausführung der Befehle aus dem Interface RobotInstructions. Während R2D2 Arrays immer aufsteigend sortiert und bei der Umwandlung in ein Array den Inhalt durch Kommas trennt (z.B. 1, 2, 3, 4, 5, 6), sortiert C3PO Arrays stets absteigend und wandelt deren Inhalt in einen String mit Semikolon als Trennzeichen um (z.B. 6; 5; 4; 3; 2; 1). R2D2 soll für die Sortierung der Daten einen selbst implementierten SelectionSort-Algorithmus verwenden, C3PO InsertionSort. Die Zusammenstellung des Strings für die Rückgabe soll in einer privaten Methode der Roboter- Basisklasse mit Hilfe eines Streams und Lambda-Ausdrücken erfolgen. Programmieren Sie zwei Klassen R2D2 und C3PO, die beide das Interface Robot implementieren. Lesen Sie bitte sorgfältig die Dokumentation der Interfaces, damit Sie die beschriebene Semantik in Ihrer Implementierung einhalten. Die Seriennummern der R2D2- Modelle bewegen sich im Bereich von 0–9999, die der C3PO-Modelle von 10000–19999. Schreiben Sie ferner die in den Interfaces referenzierten Klassen für die Ausnahmen. Sorgen Sie dafür, dass die Ausnahmen den Namen des Roboters tragen, in dem sie entstanden sind und dass man diesen Namen über die Methode getRobotName() wieder auslesen kann.