/* Page prose (de) */
"SubclassingOperation" = "# Eine Unterklasse von Operation bilden: Arbeit mit Eingaben und Ausgaben\n\n`BlockOperation` ist praktisch, aber ihre gesamte Arbeit lebt innerhalb eines\nClosures. Die wahre Stärke von Operations zeigt sich, wenn du deine **eigene**\nUnterklasse machst, denn dann kann die Operation **Eingaben** halten und\n**Ausgaben** als Eigenschaften bereitstellen, und du kannst sie wie jeden anderen\nTyp wiederverwenden.\n\nDu bildest eine Unterklasse von `Operation` und überschreibst eine Methode:\n**`main()`**. Was auch immer `main()` tut, *ist* die Arbeit. Für dieses Kapitel\nhalten wir sie **synchron**: `main()` läuft von oben nach unten, und die\nOperation ist in dem Moment fertig, in dem `main()` zurückkehrt.\n\nHier ist ein `PosterJob` für die Druckerei. Er nimmt einen Titel und eine\nKopienzahl als Eingaben und erzeugt einen gerenderten Poster-String als seine\nAusgabe.";
"SubclassingOperation-2" = "**Sieh es laufen:** Nachdem `start()` zurückgekehrt ist, ist `main()` bereits\ngelaufen, also enthält `renderedPoster` das Ergebnis: eine Zeile aus Sternchen,\ndann `Jazz Night x50`, dann eine weitere Zeile aus Sternchen.\n\nBeachte die Form: **Eingaben kommen über `init` herein, die Arbeit passiert in\n`main()`, und das Ergebnis kommt über eine Eigenschaft heraus.** Das ist eine\nwiederverwendbare, inspizierbare Arbeitseinheit, etwas, das dir ein nacktes\nClosure nicht geben kann.\n\n* callout(Probier es aus): Füge `print(Thread.isMainThread)` als erste Zeile von\n`main()` hinzu. Meldet es mit diesem direkten `.start()`-Aufruf `true` oder\n`false`?\n\n[Zurück](@previous)  |  Seite 6 von 9  |  [Weiter: Deine Unterklasse auf einer Warteschlange ausführen](@next)";
