From 287e242e831dee38f674489c52803924f6b1e8c1 Mon Sep 17 00:00:00 2001 From: John Webb <john@jtwebb.com> Date: Tue, 29 Jul 2014 09:44:37 -0500 Subject: [PATCH] Added Composite UML --- Structural/Adapter/README.md | 2 +- Structural/Adapter/{ => uml}/uml.png | Bin Structural/Adapter/{ => uml}/uml.svg | 0 Structural/Adapter/{ => uml}/uml.txt | 0 Structural/Bridge/README.md | 2 +- Structural/Bridge/{ => uml}/uml.png | Bin Structural/Bridge/{ => uml}/uml.svg | 0 Structural/Bridge/{ => uml}/uml.txt | 0 Structural/Composite/README.md | 5 ++++- Structural/Composite/uml/uml.png | Bin 0 -> 12315 bytes Structural/Composite/uml/uml.svg | 1 + Structural/Composite/uml/uml.txt | 23 +++++++++++++++++++++++ 12 files changed, 30 insertions(+), 3 deletions(-) rename Structural/Adapter/{ => uml}/uml.png (100%) rename Structural/Adapter/{ => uml}/uml.svg (100%) rename Structural/Adapter/{ => uml}/uml.txt (100%) rename Structural/Bridge/{ => uml}/uml.png (100%) rename Structural/Bridge/{ => uml}/uml.svg (100%) rename Structural/Bridge/{ => uml}/uml.txt (100%) create mode 100644 Structural/Composite/uml/uml.png create mode 100644 Structural/Composite/uml/uml.svg create mode 100644 Structural/Composite/uml/uml.txt diff --git a/Structural/Adapter/README.md b/Structural/Adapter/README.md index e168dda..d2390df 100644 --- a/Structural/Adapter/README.md +++ b/Structural/Adapter/README.md @@ -11,4 +11,4 @@ To translate one interface for a class into a compatible interface. An adapter a ## UML Diagram - \ No newline at end of file + \ No newline at end of file diff --git a/Structural/Adapter/uml.png b/Structural/Adapter/uml/uml.png similarity index 100% rename from Structural/Adapter/uml.png rename to Structural/Adapter/uml/uml.png diff --git a/Structural/Adapter/uml.svg b/Structural/Adapter/uml/uml.svg similarity index 100% rename from Structural/Adapter/uml.svg rename to Structural/Adapter/uml/uml.svg diff --git a/Structural/Adapter/uml.txt b/Structural/Adapter/uml/uml.txt similarity index 100% rename from Structural/Adapter/uml.txt rename to Structural/Adapter/uml/uml.txt diff --git a/Structural/Bridge/README.md b/Structural/Bridge/README.md index a318cb6..b4bf4fd 100644 --- a/Structural/Bridge/README.md +++ b/Structural/Bridge/README.md @@ -9,4 +9,4 @@ independently. (http://en.wikipedia.org/wiki/Bridge_pattern) ## UML Diagram - \ No newline at end of file + \ No newline at end of file diff --git a/Structural/Bridge/uml.png b/Structural/Bridge/uml/uml.png similarity index 100% rename from Structural/Bridge/uml.png rename to Structural/Bridge/uml/uml.png diff --git a/Structural/Bridge/uml.svg b/Structural/Bridge/uml/uml.svg similarity index 100% rename from Structural/Bridge/uml.svg rename to Structural/Bridge/uml/uml.svg diff --git a/Structural/Bridge/uml.txt b/Structural/Bridge/uml/uml.txt similarity index 100% rename from Structural/Bridge/uml.txt rename to Structural/Bridge/uml/uml.txt diff --git a/Structural/Composite/README.md b/Structural/Composite/README.md index ae22908..f0ca01c 100755 --- a/Structural/Composite/README.md +++ b/Structural/Composite/README.md @@ -2,7 +2,7 @@ # Purpose -To treat a group of objects the same way as a single instance of the object. +To treat a group of objects the same way as a single instance of the object. # Examples @@ -10,3 +10,6 @@ To treat a group of objects the same way as a single instance of the object. subsequently runs through all its child elements and calls `render()` on them * `Zend_Config`: a tree of configuration options, each one is a `Zend_Config` object itself +## UML Diagram + + \ No newline at end of file diff --git a/Structural/Composite/uml/uml.png b/Structural/Composite/uml/uml.png new file mode 100644 index 0000000000000000000000000000000000000000..e3534467361e12a0c4eb00b49d290ccd748b166f GIT binary patch literal 12315 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 UBC?0{{udd^_iszy7=8Kw0N&l%IsgCw literal 0 HcmV?d00001 diff --git a/Structural/Composite/uml/uml.svg b/Structural/Composite/uml/uml.svg new file mode 100644 index 0000000..6c1cb5c --- /dev/null +++ b/Structural/Composite/uml/uml.svg @@ -0,0 +1 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="226pt" style="width:569px;height:226px;" version="1.1" viewBox="0 0 569 226" width="569pt"><defs><filter height="300%" id="f1" 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="#FEFECE" filter="url(#f1)" height="86.8652" style="stroke: #A80036; stroke-width: 1.5;" width="218" x="6" y="130.5"/><ellipse cx="96.25" cy="146.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M99.2231,152.1431 Q98.6421,152.4419 98.0029,152.5913 Q97.3638,152.7407 96.6582,152.7407 Q94.1514,152.7407 92.8315,151.0889 Q91.5117,149.437 91.5117,146.3159 Q91.5117,143.1865 92.8315,141.5347 Q94.1514,139.8828 96.6582,139.8828 Q97.3638,139.8828 98.0112,140.0322 Q98.6587,140.1816 99.2231,140.4805 L99.2231,143.2031 Q98.5923,142.6221 97.9988,142.3523 Q97.4053,142.0825 96.7744,142.0825 Q95.4297,142.0825 94.7449,143.1492 Q94.0601,144.2158 94.0601,146.3159 Q94.0601,148.4077 94.7449,149.4744 Q95.4297,150.541 96.7744,150.541 Q97.4053,150.541 97.9988,150.2712 Q98.5923,150.0015 99.2231,149.4204 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="29" x="116.75" y="151.0352">Form</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="223" y1="162.5" y2="162.5"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="103" x="12" y="177.1348">protected elements</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="223" y1="183.4551" y2="183.4551"/><ellipse cx="17" cy="195.4326" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="26" y="198.0898">render($indent = 0)</text><ellipse cx="17" cy="208.3877" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="192" x="26" y="211.0449">addElement(FormElement $element)</text><rect fill="#FEFECE" filter="url(#f1)" height="60.9551" style="stroke: #A80036; stroke-width: 1.5;" width="133" x="259.75" y="8.5"/><ellipse cx="286.45" cy="24.5" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M286.5633,19.8481 L285.4095,24.9199 L287.7254,24.9199 Z M285.0691,17.6069 L288.0657,17.6069 L291.4109,30 L288.9622,30 L288.1985,26.937 L284.9197,26.937 L284.1727,30 L281.7239,30 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="75" x="303.05" y="29.0352">FormElement</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="260.75" x2="391.75" y1="40.5" y2="40.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="260.75" x2="391.75" y1="48.5" y2="48.5"/><ellipse cx="270.75" cy="60.4775" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="279.75" y="63.1348">render($indent = 0)</text><rect fill="#FEFECE" filter="url(#f1)" height="60.9551" style="stroke: #A80036; stroke-width: 1.5;" width="133" x="259.75" y="143.5"/><ellipse cx="286.45" cy="159.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M289.4231,165.1431 Q288.8421,165.4419 288.2029,165.5913 Q287.5638,165.7407 286.8582,165.7407 Q284.3514,165.7407 283.0315,164.0889 Q281.7117,162.437 281.7117,159.3159 Q281.7117,156.1865 283.0315,154.5347 Q284.3514,152.8828 286.8582,152.8828 Q287.5638,152.8828 288.2112,153.0322 Q288.8587,153.1816 289.4231,153.4805 L289.4231,156.2031 Q288.7923,155.6221 288.1988,155.3523 Q287.6053,155.0825 286.9744,155.0825 Q285.6297,155.0825 284.9449,156.1492 Q284.2601,157.2158 284.2601,159.3159 Q284.2601,161.4077 284.9449,162.4744 Q285.6297,163.541 286.9744,163.541 Q287.6053,163.541 288.1988,163.2712 Q288.7923,163.0015 289.4231,162.4204 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="75" x="303.05" y="164.0352">InputElement</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="260.75" x2="391.75" y1="175.5" y2="175.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="260.75" x2="391.75" y1="183.5" y2="183.5"/><ellipse cx="270.75" cy="195.4775" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="279.75" y="198.1348">render($indent = 0)</text><rect fill="#FEFECE" filter="url(#f1)" height="60.9551" style="stroke: #A80036; stroke-width: 1.5;" width="133" x="427.75" y="143.5"/><ellipse cx="455.8" cy="159.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M458.7731,165.1431 Q458.1921,165.4419 457.5529,165.5913 Q456.9138,165.7407 456.2082,165.7407 Q453.7014,165.7407 452.3815,164.0889 Q451.0617,162.437 451.0617,159.3159 Q451.0617,156.1865 452.3815,154.5347 Q453.7014,152.8828 456.2082,152.8828 Q456.9138,152.8828 457.5612,153.0322 Q458.2087,153.1816 458.7731,153.4805 L458.7731,156.2031 Q458.1423,155.6221 457.5488,155.3523 Q456.9553,155.0825 456.3244,155.0825 Q454.9797,155.0825 454.2949,156.1492 Q453.6101,157.2158 453.6101,159.3159 Q453.6101,161.4077 454.2949,162.4744 Q454.9797,163.541 456.3244,163.541 Q456.9553,163.541 457.5488,163.2712 Q458.1423,163.0015 458.7731,162.4204 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="72" x="472.7" y="164.0352">TextElement</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="428.75" x2="559.75" y1="175.5" y2="175.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="428.75" x2="559.75" y1="183.5" y2="183.5"/><ellipse cx="438.75" cy="195.4775" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="107" x="447.75" y="198.1348">render($indent = 0)</text><path d="M379.09,82.03 C404.261,101.957 433.734,125.2898 456.529,143.3358 " fill="none" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="374.621,87.419,363.285,69.517,383.311,76.443,374.621,87.419" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M326,89.791 C326,107.727 326,127.3957 326,143.1056 " fill="none" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="319,89.517,326,69.517,333,89.517,319,89.517" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M262.039,80.317 C236.891,96.168 207.997,114.381 182.514,130.4436 " fill="none" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="258.52,74.26,279.172,69.517,265.986,86.104,258.52,74.26" style="stroke: #A80036; stroke-width: 1.0;"/></g></svg> \ No newline at end of file diff --git a/Structural/Composite/uml/uml.txt b/Structural/Composite/uml/uml.txt new file mode 100644 index 0000000..598a697 --- /dev/null +++ b/Structural/Composite/uml/uml.txt @@ -0,0 +1,23 @@ +@startuml +class Form { + protected elements + +render($indent = 0) + +addElement(FormElement $element) +} + +abstract class FormElement { + +render($indent = 0) +} + +class InputElement { + +render($indent = 0) +} + +class TextElement { + +render($indent = 0) +} + +FormElement <|.. TextElement +FormElement <|.. InputElement +FormElement <|.. Form +@enduml \ No newline at end of file