<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="538px" preserveAspectRatio="none" style="width:665px;height:538px;background:#F0F0F0;" version="1.1" viewBox="0 0 665 538" width="665px" zoomAndPan="magnify"><defs><filter height="300%" id="f7g0ekply0bv5" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#006400" filter="url(#f7g0ekply0bv5)" height="371.6563" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="75" y="108.5625"/><rect fill="#32CD32" filter="url(#f7g0ekply0bv5)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="80" y="213.2891"/><rect fill="#006400" filter="url(#f7g0ekply0bv5)" height="419.7891" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="282" y="69.4297"/><rect fill="#006400" filter="url(#f7g0ekply0bv5)" height="297.2266" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="488" y="153.8594"/><rect fill="#32CD32" filter="url(#f7g0ekply0bv5)" height="57.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="493" y="300.6875"/><rect fill="#32CD32" filter="url(#f7g0ekply0bv5)" height="14" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="493" y="400.9531"/><rect fill="#006400" filter="url(#f7g0ekply0bv5)" height="100.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="599.5" y="271.5547"/><rect fill="#32CD32" filter="url(#f7g0ekply0bv5)" height="14" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="604.5" y="329.8203"/><rect fill="#F0F0F0" filter="url(#f7g0ekply0bv5)" height="247.9297" style="stroke: #000000; stroke-width: 2.0;" width="641" x="13" y="175.0234"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="80" x2="80" y1="110.0781" y2="498.2188"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="287" x2="287" y1="38.2969" y2="498.2188"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="493" x2="493" y1="155.375" y2="498.2188"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="604" x2="604" y1="38.2969" y2="498.2188"/><rect fill="#FEFECE" filter="url(#f7g0ekply0bv5)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="23" y="497.2188"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="96" x="30" y="517.2139">ConcreteTree</text><rect fill="#FEFECE" filter="url(#f7g0ekply0bv5)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="124" x="223" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="110" x="230" y="22.9951">ConcreteWalker</text><rect fill="#FEFECE" filter="url(#f7g0ekply0bv5)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="124" x="223" y="497.2188"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="110" x="230" y="517.2139">ConcreteWalker</text><rect fill="#FEFECE" filter="url(#f7g0ekply0bv5)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="431" y="497.2188"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="438" y="517.2139">ConcreteVisitor</text><rect fill="#FEFECE" filter="url(#f7g0ekply0bv5)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="565" y="3"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="61" x="572" y="22.9951">gui::Item</text><rect fill="#FEFECE" filter="url(#f7g0ekply0bv5)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="75" x="565" y="497.2188"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="61" x="572" y="517.2139">gui::Item</text><rect fill="#006400" filter="url(#f7g0ekply0bv5)" height="371.6563" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="75" y="108.5625"/><rect fill="#32CD32" filter="url(#f7g0ekply0bv5)" height="29.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="80" y="213.2891"/><rect fill="#006400" filter="url(#f7g0ekply0bv5)" height="419.7891" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="282" y="69.4297"/><rect fill="#006400" filter="url(#f7g0ekply0bv5)" height="297.2266" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="488" y="153.8594"/><rect fill="#32CD32" filter="url(#f7g0ekply0bv5)" height="57.1328" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="493" y="300.6875"/><rect fill="#32CD32" filter="url(#f7g0ekply0bv5)" height="14" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="493" y="400.9531"/><rect fill="#006400" filter="url(#f7g0ekply0bv5)" height="100.2656" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="599.5" y="271.5547"/><rect fill="#32CD32" filter="url(#f7g0ekply0bv5)" height="14" style="stroke: #A80036; stroke-width: 1.0;" width="10" x="604.5" y="329.8203"/><ellipse cx="10.5" cy="68.6797" fill="none" rx="4" ry="4" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#A80036" points="270,65.4297,280,69.4297,270,73.4297,274,69.4297" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="15" x2="276" y1="69.4297" y2="69.4297"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="89" x="18" y="64.3638">traverse(root)</text><polygon fill="#A80036" points="148,94.5625,138,98.5625,148,102.5625,144,98.5625" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="142" x2="281" y1="98.5625" y2="98.5625"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="121" x="154" y="93.4966"><<create>>(root)</text><rect fill="#FEFECE" filter="url(#f7g0ekply0bv5)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="110" x="23" y="77.4297"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="96" x="30" y="97.4248">ConcreteTree</text><polygon fill="#A80036" points="419,139.8594,429,143.8594,419,147.8594,423,143.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="292" x2="425" y1="143.8594" y2="143.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="85" x="299" y="138.7935"><<create>></text><rect fill="#FEFECE" filter="url(#f7g0ekply0bv5)" height="30.2969" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="431" y="122.7266"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="438" y="142.7217">ConcreteVisitor</text><path d="M13,175.0234 L90,175.0234 L90,182.0234 L80,192.0234 L13,192.0234 L13,175.0234 " fill="#EEEEEE" style="stroke: #000000; stroke-width: 1.0;"/><rect fill="none" height="247.9297" style="stroke: #000000; stroke-width: 2.0;" width="641" x="13" y="175.0234"/><text fill="#000000" font-family="sans-serif" font-size="13" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="32" x="28" y="188.0903">loop</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="106" x="105" y="187.2339">[tree::hasNext()]</text><polygon fill="#A80036" points="101,209.2891,91,213.2891,101,217.2891,97,213.2891" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="95" x2="281" y1="213.2891" y2="213.2891"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="51" x="107" y="208.2231">getNext</text><polygon fill="#A80036" points="270,238.4219,280,242.4219,270,246.4219,274,242.4219" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="85" x2="276" y1="242.4219" y2="242.4219"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="32" x="92" y="237.356">node</text><polygon fill="#A80036" points="587.5,267.5547,597.5,271.5547,587.5,275.5547,591.5,271.5547" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="292" x2="593.5" y1="271.5547" y2="271.5547"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="91" x="299" y="266.4888">accept(visitor)</text><polygon fill="#A80036" points="514,296.6875,504,300.6875,514,304.6875,510,300.6875" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="508" x2="598.5" y1="300.6875" y2="300.6875"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="65" x="520" y="295.6216">visit(*this)</text><polygon fill="#A80036" points="592.5,325.8203,602.5,329.8203,592.5,333.8203,596.5,329.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="503" x2="598.5" y1="329.8203" y2="329.8203"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="68" x="510" y="324.7544">interaction</text><polygon fill="#A80036" points="514,339.8203,504,343.8203,514,347.8203,510,343.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="508" x2="598.5" y1="343.8203" y2="343.8203"/><polygon fill="#A80036" points="587.5,353.8203,597.5,357.8203,587.5,361.8203,591.5,357.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="498" x2="593.5" y1="357.8203" y2="357.8203"/><polygon fill="#A80036" points="303,367.8203,293,371.8203,303,375.8203,299,371.8203" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="297" x2="603.5" y1="371.8203" y2="371.8203"/><polygon fill="#A80036" points="481,396.9531,491,400.9531,481,404.9531,485,400.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="292" x2="487" y1="400.9531" y2="400.9531"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="172" x="299" y="395.8872"><<concrete interaction>></text><polygon fill="#A80036" points="303,410.9531,293,414.9531,303,418.9531,299,414.9531" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 2.0,2.0;" x1="297" x2="487" y1="414.9531" y2="414.9531"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="475" x2="485" y1="446.0859" y2="456.0859"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="475" x2="485" y1="456.0859" y2="446.0859"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="292" x2="480" y1="451.0859" y2="451.0859"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="84" x="299" y="446.02"><<delete>></text><line style="stroke: #A80036; stroke-width: 2.0;" x1="86" x2="96" y1="475.2188" y2="485.2188"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="86" x2="96" y1="485.2188" y2="475.2188"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="92" x2="281" y1="480.2188" y2="480.2188"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="84" x="97" y="475.1528"><<delete>></text><!--MD5=[346318be35906a91bc9260b1fe44214c]
@startuml
skinparam BackgroundColor F0F0F0
participant "ConcreteTree" as ct
participant "ConcreteWalker" as cw
participant "ConcreteVisitor" as cv
participant "gui::Item" as item
[o->cw : traverse(root)
create ct
activate cw #DarkGreen
ct <- cw : <<create>>(root)
activate ct #DarkGreen
create cv
cw -> cv : <<create>>
activate cv #DarkGreen
loop tree::hasNext()
ct <- cw : getNext
activate ct #LimeGreen
ct - -> cw : node
deactivate ct
cw -> item : accept(visitor)
activate item #DarkGreen
cv <- item : visit(*this)
activate cv #LimeGreen
cv -> item : interaction
activate item #LimeGreen
cv <- - item
deactivate item
cv - -> item
deactivate cv
cw <- - item
deactivate item
cw -> cv : <<concrete interaction>>
activate cv #LimeGreen
cw <- - cv
deactivate cv
end
cw -x cv : <<delete>>
deactivate cv
ct x- cw : <<delete>>
deactivate ct
@enduml
PlantUML version 1.2020.02(Sun Mar 01 05:22:07 EST 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.12+7-post-Debian-2
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: US
--></g></svg>