///////////////////////////////////////////////////////////////
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
///////////////////////////////////////////////////////////////

[[tut-composites,Transient Composites Tutorial]]
= Transient Composites Tutorial =

TIP: Theses tutorials are based on actual code found in the `tutorials/` directory of the
https://zest.apache.org/download.html[Zest™ SDK sources]. You should start your favorite editor and find the code related to
this tutorial, run it and play with it.

Throughout this set of tutorials it will be shown how to create and work with Composites, which
is the basic element in Zest™. We will refactor one HelloWorld class to take advantage of the various
features in Zest™. These refactorings will make it easier to reuse parts of the class,
and introduce new features without having to change existing code. We will also look
at some of the existing classes, or Fragments, available in Zest™ that you can reuse
so that you don't have to write everything yourself.

- <<tut-composites-step1>>
- <<tut-composites-step2>>
- <<tut-composites-step3>>
- <<tut-composites-step4>>
- <<tut-composites-step5>>
- <<tut-composites-step6>>
- <<tut-composites-step7>>
- <<tut-composites-step8>>
- <<tut-composites-step9>>

Each tutorial step in this series starts with the result from the previous tutorial, so you can
always look at the next tutorial step for guidance on what to do.

At the bottom of each tutorial step, the is Solutions section, which list the files you should have come to if you
have followed the instructions.

If you want to reproduce what's explained in this tutorial, remember to depend on the Core Runtime artifact that depends
on Core API, Core SPI, Core Bootstrap and Core Functional & I/O APIs:

include::../../../../core/runtime/build/docs/buildinfo/artifact.txt[]

See the <<howto-depend-on-zest>> tutorial for details.

:leveloffset: 3

include::step1.txt[]

:leveloffset: 3

include::step2.txt[]

:leveloffset: 3

include::step3.txt[]

:leveloffset: 3

include::step4.txt[]

:leveloffset: 3

include::step5.txt[]

:leveloffset: 3

include::step6.txt[]

:leveloffset: 3

include::step7.txt[]

:leveloffset: 3

include::step8.txt[]

:leveloffset: 3

include::step9.txt[]
