/* Page prose (es) */
"SubclassingOperation" = "# Crear una subclase de Operation: trabajo con entradas y salidas\n\n`BlockOperation` es cómoda, pero todo su trabajo vive dentro de una clausura. El verdadero poder de las operaciones aparece cuando creas tu **propia** subclase, porque entonces la operación puede contener **entradas** y exponer **salidas** como propiedades, y puedes reutilizarla como cualquier otro tipo.\n\nCreas una subclase de `Operation` y sobrescribes un método: **`main()`**. Lo que sea que `main()` haga *es* el trabajo. Para este capítulo lo mantenemos **síncrono**: `main()` se ejecuta de arriba abajo y la operación termina en el momento en que `main()` retorna.\n\nAquí tienes un `PosterJob` para la imprenta. Toma un título y un número de copias como entradas, y produce una cadena de póster renderizada como su salida.";
"SubclassingOperation-2" = "**Míralo en acción:** después de que `start()` retorna, `main()` ya se ha ejecutado, así que `renderedPoster` contiene el resultado: una línea de asteriscos, luego `Jazz Night x50`, y luego otra línea de asteriscos.\n\nFíjate en la forma: **las entradas entran por `init`, el trabajo ocurre en `main()`, y el resultado sale por una propiedad.** Eso es una unidad de trabajo reutilizable e inspeccionable, algo que una clausura a secas no puede darte.\n\n* callout(Pruébalo): Añade `print(Thread.isMainThread)` como primera línea de `main()`. Con esta llamada directa a `.start()`, ¿reporta `true` o `false`?\n\n[Anterior](@previous)  |  página 6 de 9  |  [Siguiente: Ejecutar tu subclase en una cola](@next)";
