Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • p.anaguano/informatik2022
  • a.engelke/informatik2022
  • p.schleinzer/informatik2022
  • n.rosenkranz/informatik2022
  • w.weber/informatik2022
  • xuhao.zhang/informatik2022
  • h.el-menuawy/informatik2022
  • saifalla.ibrahim/informatik2022
  • d.krause/informatik2022
  • p.schilling/informatik2022
  • j.tolke/informatik2022
  • f.luckau/informatik2022
  • danish.ahmad/informatik2022
  • emir.sagdani/informatik2022
  • d.griedel/informatik2022
  • j.mahnke/informatik2022
  • l.poehler/informatik2022
  • christoph.wrede/informatik2022
  • y.kummert/informatik2022
  • alexander.reisch/informatik2022
  • t.dickel/informatik2022
  • ni.petersen/informatik2022
  • markus.werner/informatik2022
  • s.mouammar/informatik2022
  • j.jahns/informatik2022
  • m.figueroa-castillo/informatik2022
  • b.hannan/informatik2022
  • v.lapschiess/informatik2022
  • j.hegner/informatik2022
  • g.paraschiv/informatik2022
  • e.abkaimov/informatik2022
  • l.krogmann/informatik2022
  • d.mizyed/informatik2022
  • h.almasri/informatik2022
  • a.mickan/informatik2022
  • f.shikh-alshabab/informatik2022
  • j.feldbausch/informatik2022
  • l.abdel-kader/informatik2022
  • jan.seibt/informatik2022
  • e.goekmen/informatik2022
  • nathanael.schenk/informatik2022
  • r.reksius/informatik2022
  • edmont.schulze/informatik2022
  • a.singh/informatik2022
  • p.christensen/informatik2022
  • m.woidt/informatik2022
46 results
Show changes
Showing
with 1574 additions and 0 deletions
<?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="266px" preserveAspectRatio="none" style="width:917px;height:266px;" version="1.1" viewBox="0 0 917 266" width="917px" zoomAndPan="magnify"><defs><filter height="300%" id="fjbjjjk2gw2wt" 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><!--class Oberklasse--><rect fill="#FEFECE" filter="url(#fjbjjjk2gw2wt)" height="46" id="Oberklasse" style="stroke: #A80036; stroke-width: 1.5;" width="105" x="155" y="27"/><ellipse cx="169" cy="42" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M168.4063,47.1406 Q166.9688,47.1406 166.0313,46.5313 Q165.1094,45.9219 164.6563,44.8125 Q164.2031,43.7031 164.2031,42.2188 Q164.2031,40.5469 164.7344,39.3594 Q165.2813,38.1563 166.3281,37.5156 Q167.3906,36.8594 168.9375,36.8594 Q169.6563,36.8594 170.2031,37.0156 Q170.7656,37.1563 171.3438,37.4375 L170.6719,39.1094 Q170.1563,38.8438 169.7031,38.75 Q169.2656,38.6406 168.8594,38.6406 Q167.8906,38.6406 167.3125,39.0781 Q166.75,39.5156 166.5,40.2969 Q166.2656,41.0781 166.2656,42.125 Q166.2656,43.7813 166.8438,44.5781 Q167.4375,45.3594 168.75,45.3594 Q169.2344,45.3594 169.75,45.2344 Q170.2656,45.1094 170.9531,44.7969 L170.9531,46.625 Q170.3438,46.8906 169.6875,47.0156 Q169.0469,47.1406 168.4063,47.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="75" x="182" y="47.432">Oberklasse</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="156" x2="259" y1="57" y2="57"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="156" x2="259" y1="65" y2="65"/><!--class Subklasse_1--><rect fill="#FEFECE" filter="url(#fjbjjjk2gw2wt)" height="46" id="Subklasse_1" style="stroke: #A80036; stroke-width: 1.5;" width="111" x="6" y="180.5"/><ellipse cx="20" cy="195.5" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M19.4063,200.6406 Q17.9688,200.6406 17.0313,200.0313 Q16.1094,199.4219 15.6563,198.3125 Q15.2031,197.2031 15.2031,195.7188 Q15.2031,194.0469 15.7344,192.8594 Q16.2813,191.6563 17.3281,191.0156 Q18.3906,190.3594 19.9375,190.3594 Q20.6563,190.3594 21.2031,190.5156 Q21.7656,190.6563 22.3438,190.9375 L21.6719,192.6094 Q21.1563,192.3438 20.7031,192.25 Q20.2656,192.1406 19.8594,192.1406 Q18.8906,192.1406 18.3125,192.5781 Q17.75,193.0156 17.5,193.7969 Q17.2656,194.5781 17.2656,195.625 Q17.2656,197.2813 17.8438,198.0781 Q18.4375,198.8594 19.75,198.8594 Q20.2344,198.8594 20.75,198.7344 Q21.2656,198.6094 21.9531,198.2969 L21.9531,200.125 Q21.3438,200.3906 20.6875,200.5156 Q20.0469,200.6406 19.4063,200.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="81" x="33" y="200.932">Subklasse_1</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="116" y1="210.5" y2="210.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="116" y1="218.5" y2="218.5"/><!--class Subklasse_2--><rect fill="#FEFECE" filter="url(#fjbjjjk2gw2wt)" height="46" id="Subklasse_2" style="stroke: #A80036; stroke-width: 1.5;" width="111" x="152" y="180.5"/><ellipse cx="166" cy="195.5" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M165.4063,200.6406 Q163.9688,200.6406 163.0313,200.0313 Q162.1094,199.4219 161.6563,198.3125 Q161.2031,197.2031 161.2031,195.7188 Q161.2031,194.0469 161.7344,192.8594 Q162.2813,191.6563 163.3281,191.0156 Q164.3906,190.3594 165.9375,190.3594 Q166.6563,190.3594 167.2031,190.5156 Q167.7656,190.6563 168.3438,190.9375 L167.6719,192.6094 Q167.1563,192.3438 166.7031,192.25 Q166.2656,192.1406 165.8594,192.1406 Q164.8906,192.1406 164.3125,192.5781 Q163.75,193.0156 163.5,193.7969 Q163.2656,194.5781 163.2656,195.625 Q163.2656,197.2813 163.8438,198.0781 Q164.4375,198.8594 165.75,198.8594 Q166.2344,198.8594 166.75,198.7344 Q167.2656,198.6094 167.9531,198.2969 L167.9531,200.125 Q167.3438,200.3906 166.6875,200.5156 Q166.0469,200.6406 165.4063,200.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="81" x="179" y="200.932">Subklasse_2</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="153" x2="262" y1="210.5" y2="210.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="153" x2="262" y1="218.5" y2="218.5"/><!--class Subklasse_3--><rect fill="#FEFECE" filter="url(#fjbjjjk2gw2wt)" height="46" id="Subklasse_3" style="stroke: #A80036; stroke-width: 1.5;" width="111" x="298" y="180.5"/><ellipse cx="312" cy="195.5" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M311.4063,200.6406 Q309.9688,200.6406 309.0313,200.0313 Q308.1094,199.4219 307.6563,198.3125 Q307.2031,197.2031 307.2031,195.7188 Q307.2031,194.0469 307.7344,192.8594 Q308.2813,191.6563 309.3281,191.0156 Q310.3906,190.3594 311.9375,190.3594 Q312.6563,190.3594 313.2031,190.5156 Q313.7656,190.6563 314.3438,190.9375 L313.6719,192.6094 Q313.1563,192.3438 312.7031,192.25 Q312.2656,192.1406 311.8594,192.1406 Q310.8906,192.1406 310.3125,192.5781 Q309.75,193.0156 309.5,193.7969 Q309.2656,194.5781 309.2656,195.625 Q309.2656,197.2813 309.8438,198.0781 Q310.4375,198.8594 311.75,198.8594 Q312.2344,198.8594 312.75,198.7344 Q313.2656,198.6094 313.9531,198.2969 L313.9531,200.125 Q313.3438,200.3906 312.6875,200.5156 Q312.0469,200.6406 311.4063,200.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="81" x="325" y="200.932">Subklasse_3</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="299" x2="408" y1="210.5" y2="210.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="299" x2="408" y1="218.5" y2="218.5"/><!--class Figur--><rect fill="#FEFECE" filter="url(#fjbjjjk2gw2wt)" height="84.1358" id="Figur" style="stroke: #A80036; stroke-width: 1.5;" width="120" x="594.5" y="8"/><ellipse cx="633.25" cy="23" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M632.6563,28.1406 Q631.2188,28.1406 630.2813,27.5313 Q629.3594,26.9219 628.9063,25.8125 Q628.4531,24.7031 628.4531,23.2188 Q628.4531,21.5469 628.9844,20.3594 Q629.5313,19.1563 630.5781,18.5156 Q631.6406,17.8594 633.1875,17.8594 Q633.9063,17.8594 634.4531,18.0156 Q635.0156,18.1563 635.5938,18.4375 L634.9219,20.1094 Q634.4063,19.8438 633.9531,19.75 Q633.5156,19.6406 633.1094,19.6406 Q632.1406,19.6406 631.5625,20.0781 Q631,20.5156 630.75,21.2969 Q630.5156,22.0781 630.5156,23.125 Q630.5156,24.7813 631.0938,25.5781 Q631.6875,26.3594 633,26.3594 Q633.4844,26.3594 634,26.2344 Q634.5156,26.1094 635.2031,25.7969 L635.2031,27.625 Q634.5938,27.8906 633.9375,28.0156 Q633.2969,28.1406 632.6563,28.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="35" x="651.75" y="28.432">Figur</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="595.5" x2="713.5" y1="38" y2="38"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="108" x="600.5" y="56.9659">position : Vektor</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="96" x="600.5" y="76.0339">sichtbar : bool</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="595.5" x2="713.5" y1="84.1358" y2="84.1358"/><!--class Kreis--><rect fill="#FEFECE" filter="url(#fjbjjjk2gw2wt)" height="65.0679" id="Kreis" style="stroke: #A80036; stroke-width: 1.5;" width="116" x="444.5" y="171"/><ellipse cx="481.9" cy="186" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M481.3063,191.1406 Q479.8688,191.1406 478.9313,190.5313 Q478.0094,189.9219 477.5563,188.8125 Q477.1031,187.7031 477.1031,186.2188 Q477.1031,184.5469 477.6344,183.3594 Q478.1813,182.1563 479.2281,181.5156 Q480.2906,180.8594 481.8375,180.8594 Q482.5563,180.8594 483.1031,181.0156 Q483.6656,181.1563 484.2438,181.4375 L483.5719,183.1094 Q483.0563,182.8438 482.6031,182.75 Q482.1656,182.6406 481.7594,182.6406 Q480.7906,182.6406 480.2125,183.0781 Q479.65,183.5156 479.4,184.2969 Q479.1656,185.0781 479.1656,186.125 Q479.1656,187.7813 479.7438,188.5781 Q480.3375,189.3594 481.65,189.3594 Q482.1344,189.3594 482.65,189.2344 Q483.1656,189.1094 483.8531,188.7969 L483.8531,190.625 Q483.2438,190.8906 482.5875,191.0156 Q481.9469,191.1406 481.3063,191.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="34" x="500.1" y="191.432">Kreis</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="445.5" x2="559.5" y1="201" y2="201"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="450.5" y="219.9659">r { r &gt; 0 } : float</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="445.5" x2="559.5" y1="228.0679" y2="228.0679"/><!--class Dreieck--><rect fill="#FEFECE" filter="url(#fjbjjjk2gw2wt)" height="84.1358" id="Dreieck" style="stroke: #A80036; stroke-width: 1.5;" width="118" x="595.5" y="161.5"/><ellipse cx="626.6" cy="176.5" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M626.0063,181.6406 Q624.5688,181.6406 623.6313,181.0313 Q622.7094,180.4219 622.2563,179.3125 Q621.8031,178.2031 621.8031,176.7188 Q621.8031,175.0469 622.3344,173.8594 Q622.8813,172.6563 623.9281,172.0156 Q624.9906,171.3594 626.5375,171.3594 Q627.2563,171.3594 627.8031,171.5156 Q628.3656,171.6563 628.9438,171.9375 L628.2719,173.6094 Q627.7563,173.3438 627.3031,173.25 Q626.8656,173.1406 626.4594,173.1406 Q625.4906,173.1406 624.9125,173.5781 Q624.35,174.0156 624.1,174.7969 Q623.8656,175.5781 623.8656,176.625 Q623.8656,178.2813 624.4438,179.0781 Q625.0375,179.8594 626.35,179.8594 Q626.8344,179.8594 627.35,179.7344 Q627.8656,179.6094 628.5531,179.2969 L628.5531,181.125 Q627.9438,181.3906 627.2875,181.5156 Q626.6469,181.6406 626.0063,181.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="50" x="643.4" y="181.932">Dreieck</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="596.5" x2="712.5" y1="191.5" y2="191.5"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="104" x="601.5" y="210.4659">a { a &gt; 0 } : float</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="106" x="601.5" y="229.5339">b { b &gt; 0 } : float</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="596.5" x2="712.5" y1="237.6358" y2="237.6358"/><!--class Rechteck--><rect fill="#FEFECE" filter="url(#fjbjjjk2gw2wt)" height="103.2038" id="Rechteck" style="stroke: #A80036; stroke-width: 1.5;" width="157" x="749" y="152"/><ellipse cx="793.5" cy="167" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M792.9063,172.1406 Q791.4688,172.1406 790.5313,171.5313 Q789.6094,170.9219 789.1563,169.8125 Q788.7031,168.7031 788.7031,167.2188 Q788.7031,165.5469 789.2344,164.3594 Q789.7813,163.1563 790.8281,162.5156 Q791.8906,161.8594 793.4375,161.8594 Q794.1563,161.8594 794.7031,162.0156 Q795.2656,162.1563 795.8438,162.4375 L795.1719,164.1094 Q794.6563,163.8438 794.2031,163.75 Q793.7656,163.6406 793.3594,163.6406 Q792.3906,163.6406 791.8125,164.0781 Q791.25,164.5156 791,165.2969 Q790.7656,166.0781 790.7656,167.125 Q790.7656,168.7813 791.3438,169.5781 Q791.9375,170.3594 793.25,170.3594 Q793.7344,170.3594 794.25,170.2344 Q794.7656,170.1094 795.4531,169.7969 L795.4531,171.625 Q794.8438,171.8906 794.1875,172.0156 Q793.5469,172.1406 792.9063,172.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="60" x="812.5" y="172.432">Rechteck</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="750" x2="905" y1="182" y2="182"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="144" x="755" y="200.9659">a { 0 &lt; a &lt; b+c } : float</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="145" x="755" y="220.0339">b { 0 &lt; b &lt; a+c } : float</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="143" x="755" y="239.1018">c { 0 &lt; c &lt; a+b } : float</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="750" x2="905" y1="247.2038" y2="247.2038"/><!--link Oberklasse to Subklasse_1--><path d="M172.34,87.49 C144.4,116.48 106.23,156.09 82.76,180.44 " fill="none" id="Oberklasse-Subklasse_1" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="167.35,82.57,186.27,73.03,177.43,92.29,167.35,82.57" style="stroke: #A80036; stroke-width: 1.0;"/><!--link Oberklasse to Subklasse_2--><path d="M207.5,93.22 C207.5,121.53 207.5,157.66 207.5,180.44 " fill="none" id="Oberklasse-Subklasse_2" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="200.5,93.03,207.5,73.03,214.5,93.03,200.5,93.03" style="stroke: #A80036; stroke-width: 1.0;"/><!--link Oberklasse to Subklasse_3--><path d="M242.66,87.49 C270.6,116.48 308.77,156.09 332.24,180.44 " fill="none" id="Oberklasse-Subklasse_3" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="237.57,92.29,228.73,73.03,247.65,82.57,237.57,92.29" style="stroke: #A80036; stroke-width: 1.0;"/><!--link Figur to Kreis--><path d="M598.77,106.54 C577.07,128.17 552.99,152.18 534.34,170.76 " fill="none" id="Figur-Kreis" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="593.86,101.56,612.97,92.4,603.74,111.47,593.86,101.56" style="stroke: #A80036; stroke-width: 1.0;"/><!--link Figur to Rechteck--><path d="M716.84,105.59 C734.12,120.73 752.8,137.08 769.8,151.97 " fill="none" id="Figur-Rechteck" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="712.21,110.84,701.77,92.4,721.43,100.31,712.21,110.84" style="stroke: #A80036; stroke-width: 1.0;"/><!--link Figur to Dreieck--><path d="M654.5,112.5 C654.5,128.96 654.5,146.35 654.5,161.41 " fill="none" id="Figur-Dreieck" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="647.5,112.4,654.5,92.4,661.5,112.4,647.5,112.4" style="stroke: #A80036; stroke-width: 1.0;"/><!--
@startuml
skinparam defaultFontSize 14
skinparam classAttributeIconSize 0
scale max 1024 width
Oberklasse <|- - Subklasse_1
Oberklasse <|- - Subklasse_2
Oberklasse <|- - Subklasse_3
class Figur {
position : Vektor
sichtbar : bool
}
class Kreis {
r { r > 0 } : float
}
class Dreieck {
a { a > 0 } : float
b { b > 0 } : float
}
class Rechteck {
a { 0 < a < b+c } : float
b { 0 < b < a+c } : float
c { 0 < c < a+b } : float
}
Figur <|- - Kreis
Figur <|- - Rechteck
Figur <|- - Dreieck
@enduml
PlantUML version 1.2018.13(Mon Nov 26 18:11:51 CET 2018)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.18+10-post-Ubuntu-0ubuntu120.04.1
Operating System: Linux
OS Version: 5.15.0-69-generic
Default Encoding: UTF-8
Language: de
Country: DE
--></g></svg>
\ No newline at end of file
Semester_2/Einheit_01/Pics/Verkettete-Liste.png

17.7 KiB

<?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="646px" preserveAspectRatio="none" style="width:487px;height:646px;" version="1.1" viewBox="0 0 487 646" width="487px" zoomAndPan="magnify"><defs><filter height="300%" id="f6r0ema1rbk57" 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><ellipse cx="285.5" cy="18" fill="#000000" filter="url(#f6r0ema1rbk57)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><rect fill="#FEFECE" filter="url(#f6r0ema1rbk57)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="188" x="191.5" y="69"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="168" x="201.5" y="93.9659">nehme nächstes Zeichen</text><polygon fill="#FEFECE" filter="url(#f6r0ema1rbk57)" points="285.5,149,297.5,161,285.5,173,273.5,161,285.5,149" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f6r0ema1rbk57)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="202" x="254.5" y="234"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="182" x="264.5" y="258.9659">operanden stack push zahl</text><rect fill="#FEFECE" filter="url(#f6r0ema1rbk57)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="222" x="254.5" y="396"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="202" x="264.5" y="420.9659">operandenstack push zeichen</text><ellipse cx="232.5" cy="625" fill="none" filter="url(#f6r0ema1rbk57)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="233" cy="625.5" fill="#000000" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f6r0ema1rbk57)" points="219.5,241.5,231.5,253.5,219.5,265.5,207.5,253.5,219.5,241.5" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f6r0ema1rbk57)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="195" x="6" y="293"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="175" x="16" y="317.9659">hänge Zeichen an Zahl an</text><polygon fill="#FEFECE" filter="url(#f6r0ema1rbk57)" points="219.5,352,231.5,364,219.5,376,207.5,364,219.5,352" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f6r0ema1rbk57)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="204" x="130.5" y="455"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="184" x="140.5" y="479.9659">operanden_stack push zahl</text><rect fill="#FEFECE" filter="url(#f6r0ema1rbk57)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="160" x="152.5" y="535"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="140" x="162.5" y="559.9659">operation auswerten</text><!--link start to nehme nächstes Zeichen--><path d="M285.5,28.24 C285.5,37.31 285.5,51.54 285.5,63.78 " fill="none" id="start-nehme nächstes Zeichen" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="285.5,68.88,289.5,59.88,285.5,63.88,281.5,59.88,285.5,68.88" style="stroke: #A80036; stroke-width: 1.0;"/><!--link nehme nächstes Zeichen to #5--><path d="M285.5,108.02 C285.5,119 285.5,132.8 285.5,143.42 " fill="none" id="nehme nächstes Zeichen-#5" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="285.5,148.65,289.5,139.65,285.5,143.65,281.5,139.65,285.5,148.65" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="144" x="121.25" y="138.4802">Zeichen == Operator?</text><!--link #5 to operanden stack push zahl--><path d="M290.31,168.22 C299.98,180.72 322.21,209.46 338.01,229.89 " fill="none" id="#5-operanden stack push zahl" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="341.08,233.86,338.7215,224.2977,338.0142,229.9102,332.4018,229.2029,341.08,233.86" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="28" x="325.5" y="208.9659">true</text><!--link operanden stack push zahl to operandenstack push zeichen--><path d="M356.67,273.17 C358.49,302.31 362.01,358.6 364.01,390.64 " fill="none" id="operanden stack push zahl-operandenstack push zeichen" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="364.34,395.95,367.7675,386.7168,364.0263,390.9598,359.7833,387.2187,364.34,395.95" style="stroke: #A80036; stroke-width: 1.0;"/><!--link operandenstack push zeichen to end--><path d="M364.98,435.07 C363.18,466.8 355.42,532.1 322.5,574 C302.83,599.03 266.97,613.43 246.97,619.88 " fill="none" id="operandenstack push zeichen-end" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="242.01,621.42,251.7891,622.5902,246.788,619.9466,249.4316,614.9454,242.01,621.42" style="stroke: #A80036; stroke-width: 1.0;"/><!--link #5 to #14--><path d="M280.75,168.51 C269.53,183.9 241.25,222.68 227.4,241.67 " fill="none" id="#5-#14" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="224.2,246.05,232.7388,241.142,227.1494,242.0125,226.2789,236.423,224.2,246.05" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="109" x="90.9225" y="233.7694">Zeichen in [0-9.]</text><!--link #14 to hänge Zeichen an Zahl an--><path d="M211.89,258.24 C198.6,264.77 170.27,278.69 145.9,290.66 " fill="none" id="#14-hänge Zeichen an Zahl an" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="141.4,292.88,151.2418,292.5083,145.8892,290.6783,147.7191,285.3256,141.4,292.88" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="28" x="147.86" y="270.4159">true</text><!--link hänge Zeichen an Zahl an to end--><path d="M102.32,332.11 C101.14,352.36 99.5,385.72 99.5,414.5 C99.5,414.5 99.5,414.5 99.5,555.5 C99.5,608.01 182.46,620.31 217.34,623.15 " fill="none" id="hänge Zeichen an Zahl an-end" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="222.5,623.53,213.822,618.8724,217.5138,623.1585,213.2277,626.8503,222.5,623.53" style="stroke: #A80036; stroke-width: 1.0;"/><!--link #14 to #20--><path d="M219.5,265.7 C219.5,284.95 219.5,324.38 219.5,346.68 " fill="none" id="#14-#20" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="219.5,351.7,223.5,342.7,219.5,346.7,215.5,342.7,219.5,351.7" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="79" x="137.7724" y="340.0155">Zeichen = ')'</text><!--link #20 to operanden_stack push zahl--><path d="M217.18,374.18 C214.15,387.68 209.74,413.59 214.5,435 C215.63,440.08 217.5,445.28 219.62,450.15 " fill="none" id="#20-operanden_stack push zahl" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="221.81,454.89,221.69,445.0419,219.7238,450.346,214.4196,448.3798,221.81,454.89" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="28" x="215.5" y="420.9659">true</text><!--link operanden_stack push zahl to operation auswerten--><path d="M232.5,494.38 C232.5,505.02 232.5,518.4 232.5,529.74 " fill="none" id="operanden_stack push zahl-operation auswerten" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="232.5,534.79,236.5,525.79,232.5,529.79,228.5,525.79,232.5,534.79" style="stroke: #A80036; stroke-width: 1.0;"/><!--link operation auswerten to end--><path d="M232.5,574.22 C232.5,585.42 232.5,599.43 232.5,609.73 " fill="none" id="operation auswerten-end" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="232.5,614.74,236.5,605.74,232.5,609.74,228.5,605.74,232.5,614.74" style="stroke: #A80036; stroke-width: 1.0;"/><!--
@startuml
skinparam defaultFontSize 14
skinparam classAttributeIconSize 0
scale max 1024 width
(*) - -> "nehme nächstes Zeichen"
if "Zeichen == Operator?" then
- ->[true] "operanden stack push zahl"
- -> "operandenstack push zeichen"
- -> (*)
else
if "Zeichen in [0-9.]" then
->[true] "hänge Zeichen an Zahl an"
- -> (*)
else
if "Zeichen = ')'" then
- ->[true] "operanden_stack push zahl"
- -> "operation auswerten"
- -> (*)
endif
endif
endif
@enduml
PlantUML version 1.2018.13(Mon Nov 26 18:11:51 CET 2018)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.18+10-post-Ubuntu-0ubuntu120.04.1
Operating System: Linux
OS Version: 5.15.0-69-generic
Default Encoding: UTF-8
Language: de
Country: DE
--></g></svg>
\ No newline at end of file
%% Cell type:markdown id:f0b13807-b3b2-4f55-9581-9f8d4ffaa3b5 tags:
# <font color='blue'>**Einleitung**</font>
Die Komplexität von neuen Systemen lässt sich schwerlich im Kopf beherrschen. Für die schrittweise Zerlegung der Aufgabenstellung und Entwicklung von Modellen auch im Bereich der Softwareentwicklung sind graphische Notationen sehr hilfreich. Im Bereich der objekt-orientierten Softwaretechnik hat sich die *Unified Modeling Language* - kurz UML - als hilfreich erwiesen.
<div>
<img src="Pics/UML_logo.png" width="200"/>
</div>
Die UML ist als universelle grafische Modellierungssprache eine Notation
und keine Methode. Sie unterstützt alle Phasen der Modellierung, d.h. sie erlaubt die
Spezifikation, die Konstruktion bzw. der Entwurf, die Visualisierung der Modelle und
deren Dokumentation. Somit kann man mittels der UML die statischen und dynamischen
Strukturen entwickeln.
%% Cell type:markdown id:3b34e520-f385-4530-b2c7-4b6df641d72b tags:
### <font color='blue'>**Lernziele des Notebooks**</font>
* Übersicht über die UML
* Wichtige Diagrammarten
* Klassen und Objektdiagramm
* Aktivitätsdiagramm
%% Cell type:markdown id:9837909c-0cc2-43bd-9692-bb149a7a87ba tags:
# <font color='blue'>**Übersicht - UML**</font>
Die UML als im Wesentlichen graphische Notation stellt verschiedene Diagrammarten für die verschiedenen Modellierungsanforderungen zur Verfügung:
* **funktionale Zusammenhänge:**
* Use-Case-Diagramm
* **statische Strukturen:**
* Klassendiagramme, Objektdiagramme, Komponentendiagramme und Verteilungsdiagramme
* **dynamische strukturen:**
* Sequenzdiagramme, Kollaborationsdiagramme, Zustandsdiagramme und Aktivitätsdiagramme
%% Cell type:markdown id:f6012101-a726-4880-8bbc-ccfee49d9ceb tags:
# <font color='blue'>**Wichtige Diagrammarten**</font>
%% Cell type:markdown id:d2137a50-ff4c-4135-9e56-ca3e30cc02bd tags:
## **<font color='blue'>Klassendiagramm</font>**
Ein Klassendiagramm ist ein Strukturdiagramm zur statischen Modellierung bzw. Repräsenation von Klassen, Schnittstellen sowie deren Beziehungen.
%% Cell type:markdown id:e7ac2738-e0bb-4c7f-a03f-10fa7ec5b71e tags:
### **<font color='blue'>Klasse</font>**
**Definition:**
* Eine Klasse ist ein Schema von Objekten, in der die Eigenschaften, d.h. Attribute und Operationen definiert werden. Alle Objekte einer Klasse entsprechen dieser
Festlegung.
* Objekte sind Instanzen mit konkretem Namen und konkreten Attributen.
**Notation:**
* Klassen/Objekte werden als Rechtecke mit den Namen (üblicherweise im Singular und mit Großschrift) der Klasse dargestellt.
* Gegebenenfalls werden die Attribute und/oder die Methoden, getrennt durch horizontale Linien, hinzugefügt.
* Attribute können näher beschrieben werden, z.B. durch Typ, einen Initialwert und Zusicherungen (Zusatzbedingungen).
* Methoden können durch Parameter, Initialwerte, Zusicherungen usw. beschrieben werden.
* Sichtbarkeiten von Attributen und Methoden werden durch ein Präfix (+#-/) codiert:
| Attribute | Methoden |
| --- | --- |
| klassenAttribut | klassenOperation() |
| +publicAttribut | +publicOperation() |
| #protectedAttribut | #protectedOperation() |
| -privateAttribut | -privateOperation() |
| /abgeleitetesAttribut | |
%% Cell type:markdown id:02a8c714-34c9-4f13-a280-984c5d54decb tags:
![Klasse_1.svg](Pics/Klasse_1.svg)
%% Cell type:markdown id:97a85106-b815-4d8b-bc87-ecd93aae5312 tags:
### **<font color='blue'>Assoziation</font>**
**Definition:**
* Eine Assoziation beschreibt als Relation zwischen Klassen die gemeinsame Semantik und Struktur einer Menge von Objektverbindungen.
* Die Multiplizität (synonym Kardinalität) gibt an, mit wieviel Objekten der gegenüberliegenden Klasse ein Objekt assoziiert sein kann.
* Auf jeder Seite der Assoziation können Rollennamen vergeben werden. Diese beschreiben, welche Rolle die jeweiligen Objekte in der Beziehung einnehmen.
* Spezielle Varianten sind die Aggregation und die Komposition (s.u.).
**Notation:**
* Eine Assoziation wird durch eine Linie zwischen den beteiligten Klassen dargestellt.
* Ein (kursiv gesetzter) Name beschreibt, worin und warum diese Beziehung besteht.
* Optional sind Zusicherungen oder Merkmale, die in geschweifte Klammern gesetzt werden.
* Ein kleines ausgefülltes Dreieck kann eingesetzt werden, um die Leserichtung zu kennzeichnen.
* Beispiele für Multiplizitätsangaben sind: ’1’ genau eins, ’0, 1’ null oder eins, ’0..4’ zwischen null und vier oder ’0..*’ größer oder gleich null.
%% Cell type:markdown id:b76bad35-81ba-470a-9163-d88ed4f39d6f tags:
![](Pics/Assoz_1.svg)
%% Cell type:markdown id:123b16d9-ea69-43c7-b298-c09d6f69a65a tags:
### **<font color='blue'>Aggregation</font>**
**Definition:**
* Eine Aggregation ist eine Assoziation, deren beteiligte Klassen eine **Ganzes-Teile-Hierarchie** darstellen. Eine Aggregation ist die Zusammensetzung eines Objektes aus
einer Menge von Einzelteilen. Das Ganze nimmt stellvertretend für seine Teile Aufgaben wahr.
Die Aggregatklasse kann Operationen enthalten, die keine unmittelbare Wirkung
im Aggregat selbst erzeugen, sondern die entsprechenden Nachrichten an seine Teile
weiterleiten.
**Notation:**
* Eine Linie zwischen zwei Klassen mit einer Raute auf der Seite des Aggregats (des Ganzen) wird zur Darstellung der Aggregation verwendet.
* Die Kardinalitätsangabe auf der Seite des Aggregats ist häufig 1, so dass ein Fehlen der Angabe standardmäßig als 1 interpretiert wird.
%% Cell type:markdown id:8c0c8c20-7f1f-4a6f-bc6e-2bd99a385f22 tags:
![](Pics/Aggr_1.svg)
%% Cell type:markdown id:940142ad-0f52-43a9-b2fc-a9fc5f73aab0 tags:
### **<font color='blue'>Komposition</font>**
**Definition:**
* Eine Komposition ist eine strenge Form der Aggregation, bei der die Teile vom Ganzen **existenzabhängig** sind.
Im Unterschied zur Aggregation ist die Kardinalität auf der Aggregatseite 1, d.h. jedes Teil ist von nur genau einem Kompositionsobjekt abhängig und die Lebenszeit der Einzelteile der des Ganzen untergeordnet.
**Notation:**
* Wie bei der Aggregation wird eine Linie zwischen zwei Klassen jedoch mit einer ausgefüllten Raute auf der Seite des Aggregates verwendet.
* Kompositionsbeziehungen können mit einer Multiplizitätsangabe, mit einem Beziehungsnamen und mit Rollennamen notiert werden.
* Mehrere Kompositionsbeziehungen zu einem Ganzen können baumartig zusammengefasst werden.
%% Cell type:markdown id:2316751c-4261-4ba2-b8dd-88671dcb41b1 tags:
![](Pics/Komp_1.svg)
%% Cell type:markdown id:799a4b32-983c-4a25-ace6-0b8038058ead tags:
%% Cell type:markdown id:41aafc4c-697d-4646-b9f7-529815dec18b tags:
### **<font color='blue'>Vererbung</font>**
**Definition:**
* Vererbung ist ein Konzept für die Relation zwischen Oberklasse und Unterklasse, wodurch Attribute und Operationen der Oberklasse auch den Unterklassen zugänglich werden.
* Generalisierung und Spezialisierung sind die entsprechenden Abstraktionsprinzipien zur hierarchischen Gliederung der Semantik eines Modells.
**Notation:**
* Die Assoziationslinie wird mit einem **nicht ausgefüllten Pfeil**, der von der Unterklasse zur Oberklasse zeigt, ergänzt.
* Die Pfeile von den Unterklassen können zu einer gemeinsamen Linie zusammengefasst werden.
* Eventuell kann eine Angabe des Unterscheidungsmerkmals zwischen Ober- und Unterklasse (Diskriminator) angegeben werden.
%% Cell type:markdown id:f5229609-eb79-4923-b13d-59dada03db6d tags:
![](Pics/Vererb_1.svg)
%% Cell type:markdown id:897e545e-8339-4ad2-a0d7-ebd77d28b83d tags:
## **<font color='blue'>Aktivitätsdiagramm</font>**
**Definition:**
* In einem Aktivitätsdiagramm werden die Objekte eines Programms mittels der Aktivitäten, die sie während des **Programmablaufs** vollführen, beschrieben.
* Eine Aktivität ist ein einzelner Schritt innerhalb eines Programmablaufes, d.h. ein spezieller Zustand eines Modellelementes, eine interne Aktion sowie eine oder mehrere von ihm ausgehende Transitionen (Übergang von einer Aktivität zur nächsten).
* Ein Aktivitätsdiagramm ähnelt einem **Flussdiagramm**.
* Jedoch sind alle Aktivitäten eindeutig **Objekten** zugeordnet, d.h. sie sind entweder einer Klasse, Operation/Methode oder Use-Case eindeutig untergeordnet.
* Sie dienen auch der Synchronisation von parallelen Prozessen
**Notation:**
* Eine Aktivität wird durch ein **Rechteck mit konvex abgerundeten Seiten** dargestellt. Sie enthält eine Beschreibung der internen Aktion.
* Von der Aktivität aus gehen die **Transitionen**, die den Abschluss der internen Aktion und den Übergang zur nächsten Aktivität darstellen.
* Rauten kennzeichnen Verzweigungen mit entsprechenden Bedingungen an den Transitionspfeilen.
* Start- und Endpunkte werden als runde Punkte dargestellt.
* Das Aufspalten und Synchronisieren paralleler Prozesse wird jeweils durch einen Balken kennzeichnet.
%% Cell type:markdown id:cd56ec1a-68d5-4b63-8f9a-f1921261b8cf tags:
![](Pics/Activ.svg)
%% Cell type:markdown id:abaf4875-2c26-4f44-86bb-b8f1cd5973c1 tags:
## **<font color='blue'>Kollaborationsdiagramm</font>**
**Definition:**
* Es dient der Darstellung der Objekt-Interaktionen für einen bestimmten **begrenzten Kontext** unter besonderer Beachtung der Beziehungen unter den einzelnen Objekten und ihrer Topographie.
* Der zeitliche Verlauf der Interaktionen wird durch eine Nummerierung der Nachrichten symbolisiert.
**Notation:**
* Für die Objekte werden Rechtecke eingesetzt.
* Die Objektverbindungen werden durch Assoziationslinien gekennzeichnet, an die die Nachrichten mit Ihrem Namen, Antworten und möglichen Argumenten angetragen werden.
* Ein Pfeil zeigt die Richtung der Nachricht vom Sender zum Empfänger.
* Die Startnachricht bekommt keine Nummerierung.
* Eine Unternummerierung erfolgt, falls neue Nachrichten innerhalb der Nachrichten-Interpretation verschickt werden. Mehrfachnachrichten werden mit Sternchen * markiert.
%% Cell type:markdown id:0fd3d184-781b-470a-b3f8-48714f06a830 tags:
![](Pics/Colla_1.svg)
%% Cell type:markdown id:4cbd8a4e-8966-4247-af7e-586c7541250b tags:
![](Pics/Colla_2.svg)
%% Cell type:markdown id:e948e446-f21b-4bf7-86dd-8f2a5cc51088 tags:
## **<font color='blue'>Sequenzdiagramm</font>**
**Definition:**
* Das Sequenzdiagramm beschreibt die **zeitliche Abfolge** von Interaktionen zwischen einer Menge von Objekten innerhalb eines **zeitlich begrenzten Kontextes**.
**Notation:**
* Wieder werden **Rechtecke für Objekte** verwendet, von denen **senkrechte, gestrichelte Lebenslinien** ausgehen.
* **Aktive Objekte** werden durch einen **Balken** auf der Lebenslinie gekennzeichent.
* Nachrichten werden durch **waagerechte Pfeile** zwischen den Objektlebenslinien dargestellt. Sie erhalten einen Namen, der durch eine Antwort und gegebenenfalls durch eine Bedingung in Rechteckklammern ergänzt werden kann.
* Iterationen werden durch einen Stern * kenntlich gemacht.
* Objekte können während des Ablaufes erzeugt werden, indem ein Pfeil mit der Aufschrift neu() auf ein neues Objektsymbol trifft, und gelöscht werden, indem seine Lebenslinie in einem Kreuz endet.
%% Cell type:markdown id:24541194-17ce-4283-9ac1-73ac0c1eb7b5 tags:
![](Pics/Seq.svg)
%% Cell type:markdown id:2dc75441-4a7d-49d4-99ee-2eeaadd972a3 tags:
## **<font color='blue'>Anwendungsfalldiagramm</font>**
**Definition:**
* Es dient der ersten **Strukturierung der Anforderungen** und **Verantwortlichkeiten**.
* Dargestellt werden die Interaktion mit dem Software-System aus **Sicht der Benutzer**, die hier die Rolle von sogenannten **Akteuren** annehmen.
* Ziel ist eine erste Strukturierung durch die saubere Trennung der möglichen Anwendungsfälle.
* Die relativ einfachen Diagramme können durch textuelle Erläuterungen, wie z.B. Vor- und Nachbedingungen für die Prozesse, ergänzt werden und sind dann Bestandteil des Lastenhefts.
**Notation:**
* Anwendungsfälle werden durch Ellipsen und einer Menge von beteiligten Objekten (Akteuren) dargestellt (Abbildung 56).
* Zu jedem Anwendungsfall gibt es eine Beschreibung in Textform.
* Die entsprechenden Anwendungsfälle und Akteure sind durch Linien miteinander verbunden.
* Die Systemgrenze wird durch einen Rahmen um die Anwendungsfälle symbolisiert.
* Ergänzt werden kann das Diagramm durch Rechtecke mit einer umgeknickten Ecke mit erläuternden Notizen (Annotationen).
%% Cell type:markdown id:8b39e5bb-3917-4e4e-8fa6-83cc08ec7849 tags:
![](Pics/UseCase.svg)
%% Cell type:markdown id:6761a365 tags:
# <font color='blue'>**Übung 1 - Anwendung von Datenstrukturen**</font>
## <font color='blue'>**Problemstellung: Auswertung von Klammerausdrücken (Stack)**</font>
### <font color='blue'>**Problembeschreibung**</font>
Die Reihenfolge von Rechenoperationen wird mithilfe von Klammern bestimmt. Es soll ein Skript entwickelt werden, das in der Lage ist, eine Zeichenkette wie zum Beispiel ````"(((35+7)*(5-3))/2)"```` auszuwerten und das Ergebnis zu ermitteln. Um eine kompakte Programmierung zu ermöglichen, gelten dabei für die Zeichenkette die folgende Anforderungen:
* Jede Operation muss umklammert werden. Folglich sind Eingaben wie ````1+2+3```` oder ````1-3*5```` nicht möglich. Es muss ````((1+2)+3)```` oder ````(1-(3*5))```` eingegeben werden.
* Verfügbare Operatoren sollen ````+````,````-````,````*````, und ````/```` sein.
* Gleitkommazahlen mit ````.```` sollen unterstützt werden.
* Negative Zahlen werden nicht unterstützt.
### <font color='blue'>**Modellbildung**</font>
Die Operatoren werden entsprechend ihrer mathematischen Definition in der von den Klammern vorgegebenen Reihenfolge ausgewertet.
### <font color='blue'>**Algorithmierung**</font>
Stacks sind eine geeignete Datenstruktur, um solche Klammerausdrücke auszuwerten. Das grundsätzliche Vorgehen ist, dass die Zeichenkette von vorne nach hinten durchlaufen wird, und dabei zwei Stacks (Operanden und Operatoren) gefüllt werden (`push`). Bei jeder schließenden Klammer, wird die neueste Operation ausgewertet und dabei ein Operator und zwei Operanden von den Stacks entfernt (`pop`). Das Ergebnis wird dem Operandenstack hinzufügt (`push`).<br>
<br>
Dieses Verfahren lässt sich gut an einem Beispiel zeigen:<br>
<br>
>Zeichenkette: ````(1-(3*5))````.<br>
><br>
>Bis zur ersten schließenden Klammer werden die Zahlen und die Operatoren in die Stacks hinzugefügt. Die Stacks haben dann folgenden Inhalt:<br>
>Operanden: `[ 1, 3, 5 ]`<br>
>Operatoren: `[ -, * ]`<br>
><br>
>Bei der ersten schließenden Klammer werden nun der Operator ````*```` und die Operanden ````5, 3```` aus den Stacks geholt. Die Operation ````3*5```` wird berechnet und das Ergebnis (````15````) dem Operandenstack hinzugefügt.<br>
><br>
>Die beiden Stacks sind dann folgendermaßen gefüllt:<br>
>Operanden: `[ 1, 15 ]`<br>
>Operatoren: `[ - ]`<br>
<br>
>Es folgt eine weitere schließende Klammer und die nächste Operation ````1-15```` wird aus den Stacks geholt und berechnet. Das Ergebnis ````-14```` wird in den Operandenstack geschrieben. Der Operatorstack ist leer und die Zeichenkette ist vollständig durchlaufen. Das Ergebnis ist der Eintrag im Operandenstack: ````-14````
Dieses Vorgehen werden wir in der Methode ````auswerten(ausdruck)```` implementieren.
Wir erstellen eine Klasse ````AusdruckAuswerter````, um die benötigten Daten und Methoden zu gruppieren. Da die Klasse zwei Stacks als Attribute hat, benötigen wir zusätzlich eine Klasse ````Stack````. Diese ist allgemein und wir leiten sie in zwei Varianten ab. Diese verändern die Push-Methode, sodass ````OperatorStack```` nur das Speichern von Operatoren erlaubt und ```` OperandenStack```` die Eingaben direkt von Zeichen zu Zahlen konvertiert.
Die vollständige Klassenstruktur ist hier im UML Diagramm gezeigt:
%% Cell type:markdown id:0b489c77 tags:
![](Pics/KlammerAuswertung.svg)
%% Cell type:markdown id:42dd5113 tags:
Die Klasse `AusdruckAuswerter` speichert neben den Stacks noch Listen für die verschiedenen Zeichentypen. Zudem wird das Attribut `zahl` verwendet, um Zahlen mit mehr als einer Ziffer auswerten zu können. Neben der zentralen `auswerten()`-Methode sind das Berechnen der aktuellen Operation und das Zwischenspeichern von Zahlen mit mehreren Ziffern ausgelagert.
Um Zahlen mit mehr als einem Zeichen einlesen zu können, wird beim Durchgehen der Zeichenkette ein als Zahl erkanntes Zeichen nicht direkt dem Stack hinzugefügt, sondern zunächst der Zeichenkette ````zahl```` hinzugefügt. Sobald ein eingelesenes Zeichen keine Zahl (oder Dezimalpunkt) ist und etwas in ````zahl```` eingetragen ist, dann wird ````zahl```` dem Stack hinzugefügt und anschließend zurückgesetzt. Dieses Prüfen, Eintragen und Zurücksetzen wird von der Methode ````push_zahl()```` übernommen. Sie wird aufgerufen, wenn das aktuelle Zeichen keine Ziffer ist.
%% Cell type:markdown id:e7768d99 tags:
In der Methode ````auswerten()```` wird über alle Zeichen in der Zeichenkette iteriert. Je nach Zeichen werden folgende Schritte ausgeführt:
* ````(````: keine Aktion
* Operator: `push_zahl()` und Operator dem Stack hinzufügen
* Zahl oder Dezimalpunkt: Zeichen `zahl` hinzufügen
* `)`: `push_zahl()` und Operation auswerten
* Anderes: Ausgabe "unerwartetes Zeichen"
Nach dem letzten Zeichen gibt die Methode die neueste Zahl des Operandenstacks zurück. Wenn die ausgewerte Zeichenkette den oben genannten Bedingungen entspricht, ist dies der einzige Eintrag.
![](Pics/Zeichen.svg)
%% Cell type:markdown id:3c3e484e tags:
In der Methode ````berechne_operation()```` wird zunächst der Operator vom Operatorstack geholt. Anschließend werden die Zahlen (Operanden) vom Operandenstack geholt. Je nach Operator wird das Ergebnis der Operation dem Operandenstack hinzugefügt. Bei der Berechnung muss darauf geachtet werden, dass der zuerst ausgelesene Operand derjenige hinter dem Operator ist (relevant für "-" und "/").
%% Cell type:markdown id:c9cfb189 tags:
### <font color='blue'>**Umsetzung**</font>
Stack-Klassen:
%% Cell type:code id:462ef289 tags:
``` python
class Stack:
def __init__(self):
self.stack = list()
def push(self, element):
self.stack."?"("?")
def pop(self):
element = "?"
self.stack = "?"
return "?"
def peek(self):
return "?"
def __len__(self):
return "?"
class OperatorStack("?"):
def push(self, element):
if "?":
"?"
else:
print( f"Operator '{element}' nicht verfügbar." )
class "?":
"?"
```
%% Cell type:markdown id:381d6edc tags:
Klasse `AusdruckAuswerter`:
%% Cell type:code id:3878a0fd tags:
``` python
class AusdruckAuswerter:
def __init__(self):
self.op_stack = OperatorStack()
self.zahl_stack = OperandenStack()
self.operatoren = "+-*/"
self.ziffern = "0123456789."
self.zahl = ""
def auswerten(self, ausdruck):
"?"
def push_zahl(self):
if len(self.zahl)>0:
self.zahl_stack.push(float(self.zahl))
self.zahl = ""
def berechne_operation(self):
"?"
```
%% Cell type:markdown id:065630f0 tags:
Test der Ausdruck-Auswertung (der Ausdruck darf gerne variiert werden):
%% Cell type:code id:6f505456 tags:
``` python
testauswerter = AusdruckAuswerter()
print( testauswerter.auswerten("(1-(3*5))") )
print( testauswerter.auswerten("(20/(2*5))") )
```
%% Output
-14.0
2.0
%% Cell type:markdown id:2b49b5cf tags:
### <font color='blue'>**Anregungen zum selbst Programmieren**</font>
* Erstelle eine Datenstruktur zur Verwaltung einer Warteschlange für eine CNC-Maschine. Verwende dazu 3 Klassen:
* die allgemeine `Datenstruktur`, die `Maschine`, und den `Auftrag`.
* Eine `Maschine` soll eine Datenstruktur für die Warteschlange beinhalten und Methoden, um Aufträge der Schlange hinzuzufügen und den nächsten Auftrag zu bearbeiten.
Zudem soll es eine Methode geben, die dafür sorgt, dass alle verbleibenden Aufträge abgearbeitet werden.
Bei der Bearbeitung soll die Maschine die Informationen über den bearbeiteten Auftrag ausgeben.
* Ein `Auftrag` hat folgende Daten:
* `Name`
* `Stückzahl`
* `Materialart`
* `Materialmenge pro Stück`
* `Dauer pro Stück`<br>
* Die `__init()__`- Methode soll prüfen, dass bei den Zahlenwerten nur positive Werte eingegeben werden.
<br><br>
* **Anspruchsvoll:** Erweitere das in dieser Übung behandelte Programm so, dass nicht zwingend alle Operationen umklammert werden müssen, und dass Punkt- vor Strichrechnung umgesetzt wird. Um das bestehende Programm weiterverwenden zu können, ist ein möglicher Ansatz, eine Methode zu erstellen, die die Zeichenkette anhand der Regeln "Punkt- vor Strichrechnung" und "von links nach rechts" mit Klammern ergänzt.
%% Cell type:markdown id:6761a365 tags:
# <font color='blue'>**Übung 1 - Anwendung von Datenstrukturen**</font>
## <font color='blue'>**Problemstellung: Auswertung von Klammerausdrücken (Stack)**</font>
### <font color='blue'>**Problembeschreibung**</font>
Die Reihenfolge von Rechenoperationen wird mithilfe von Klammern bestimmt. Es soll ein Skript entwickelt werden, das in der Lage ist, eine Zeichenkette wie zum Beispiel ````"(((35+7)*(5-3))/2)"```` auszuwerten und das Ergebnis zu ermitteln. Um eine kompakte Programmierung zu ermöglichen, gelten dabei für die Zeichenkette die folgende Anforderungen:
* Jede Operation muss umklammert werden. Folglich sind Eingaben wie ````1+2+3```` oder ````1-3*5```` nicht möglich. Es muss ````((1+2)+3)```` oder ````(1-(3*5))```` eingegeben werden.
* Verfügbare Operatoren sollen ````+````,````-````,````*````, und ````/```` sein.
* Gleitkommazahlen mit ````.```` sollen unterstützt werden.
* Negative Zahlen werden nicht unterstützt.
### <font color='blue'>**Modellbildung**</font>
Die Operatoren werden entsprechend ihrer mathematischen Definition in der von den Klammern vorgegebenen Reihenfolge ausgewertet.
### <font color='blue'>**Algorithmierung**</font>
Stacks sind eine geeignete Datenstruktur, um solche Klammerausdrücke auszuwerten. Das grundsätzliche Vorgehen ist, dass die Zeichenkette von vorne nach hinten durchlaufen wird, und dabei zwei Stacks (Operanden und Operatoren) gefüllt werden (`push`). Bei jeder schließenden Klammer, wird die neueste Operation ausgewertet und dabei ein Operator und zwei Operanden von den Stacks entfernt (`pop`). Das Ergebnis wird dem Operandenstack hinzufügt (`push`).<br>
<br>
Dieses Verfahren lässt sich gut an einem Beispiel zeigen:<br>
<br>
>Zeichenkette: ````(1-(3*5))````.<br>
><br>
>Bis zur ersten schließenden Klammer werden die Zahlen und die Operatoren in die Stacks hinzugefügt. Die Stacks haben dann folgenden Inhalt:<br>
>Operanden: `[ 1, 3, 5 ]`<br>
>Operatoren: `[ -, * ]`<br>
><br>
>Bei der ersten schließenden Klammer werden nun der Operator ````*```` und die Operanden ````5, 3```` aus den Stacks geholt. Die Operation ````3*5```` wird berechnet und das Ergebnis (````15````) dem Operandenstack hinzugefügt.<br>
><br>
>Die beiden Stacks sind dann folgendermaßen gefüllt:<br>
>Operanden: `[ 1, 15 ]`<br>
>Operatoren: `[ - ]`<br>
<br>
>Es folgt eine weitere schließende Klammer und die nächste Operation ````1-15```` wird aus den Stacks geholt und berechnet. Das Ergebnis ````-14```` wird in den Operandenstack geschrieben. Der Operatorstack ist leer und die Zeichenkette ist vollständig durchlaufen. Das Ergebnis ist der Eintrag im Operandenstack: ````-14````
Dieses Vorgehen werden wir in der Methode ````auswerten(ausdruck)```` implementieren.
Wir erstellen eine Klasse ````AusdruckAuswerter````, um die benötigten Daten und Methoden zu gruppieren. Da die Klasse zwei Stacks als Attribute hat, benötigen wir zusätzlich eine Klasse ````Stack````. Diese ist allgemein und wir leiten sie in zwei Varianten ab. Diese verändern die Push-Methode, sodass ````OperatorStack```` nur das Speichern von Operatoren erlaubt und ```` OperandenStack```` die Eingaben direkt von Zeichen zu Zahlen konvertiert.
Die vollständige Klassenstruktur ist hier im UML Diagramm gezeigt:
%% Cell type:markdown id:0b489c77 tags:
![](Pics/KlammerAuswertung.svg)
%% Cell type:markdown id:42dd5113 tags:
Die Klasse `AusdruckAuswerter` speichert neben den Stacks noch Listen für die verschiedenen Zeichentypen. Zudem wird das Attribut `zahl` verwendet, um Zahlen mit mehr als einer Ziffer auswerten zu können. Neben der zentralen `auswerten()`-Methode sind das Berechnen der aktuellen Operation und das Zwischenspeichern von Zahlen mit mehreren Ziffern ausgelagert.
Um Zahlen mit mehr als einem Zeichen einlesen zu können, wird beim Durchgehen der Zeichenkette ein als Zahl erkanntes Zeichen nicht direkt dem Stack hinzugefügt, sondern zunächst der Zeichenkette ````zahl```` hinzugefügt. Sobald ein eingelesenes Zeichen keine Zahl (oder Dezimalpunkt) ist und etwas in ````zahl```` eingetragen ist, dann wird ````zahl```` dem Stack hinzugefügt und anschließend zurückgesetzt. Dieses Prüfen, Eintragen und Zurücksetzen wird von der Methode ````push_zahl()```` übernommen. Sie wird aufgerufen, wenn das aktuelle Zeichen keine Ziffer ist.
%% Cell type:markdown id:e7768d99 tags:
In der Methode ````auswerten()```` wird über alle Zeichen in der Zeichenkette iteriert. Je nach Zeichen werden folgende Schritte ausgeführt:
* ````(````: keine Aktion
* Operator: `push_zahl()` und Operator dem Stack hinzufügen
* Zahl oder Dezimalpunkt: Zeichen `zahl` hinzufügen
* `)`: `push_zahl()` und Operation auswerten
* Anderes: Ausgabe "unerwartetes Zeichen"
Nach dem letzten Zeichen gibt die Methode die neueste Zahl des Operandenstacks zurück. Wenn die ausgewerte Zeichenkette den oben genannten Bedingungen entspricht, ist dies der einzige Eintrag.
![](Pics/Zeichen.svg)
%% Cell type:markdown id:3c3e484e tags:
In der Methode ````berechne_operation()```` wird zunächst der Operator vom Operatorstack geholt. Anschließend werden die Zahlen (Operanden) vom Operandenstack geholt. Je nach Operator wird das Ergebnis der Operation dem Operandenstack hinzugefügt. Bei der Berechnung muss darauf geachtet werden, dass der zuerst ausgelesene Operand derjenige hinter dem Operator ist (relevant für "-" und "/").
%% Cell type:markdown id:c9cfb189 tags:
### <font color='blue'>**Umsetzung**</font>
Stack-Klassen:
%% Cell type:code id:462ef289 tags:
``` python
class Stack:
def __init__(self):
self.stack = list()
def push(self, element):
self.stack.append(element)
def pop(self):
element = self.stack[-1]
self.stack = self.stack[:-1]
return element
#return self.stack.pop()
def peek(self):
return self.stack[-1]
def __len__(self):
return len(self.stack)
class OperatorStack(Stack):
def push(self, element):
if len(element) == 1 and element in "+-*/":
self.stack.append(element)
else:
print( f"Operator '{element}' nicht verfügbar." )
class OperandenStack(Stack):
def push(self, element):
self.stack.append( float(element) )
```
%% Cell type:markdown id:381d6edc tags:
Klasse `AusdruckAuswerter`:
%% Cell type:code id:3878a0fd tags:
``` python
class AusdruckAuswerter:
def __init__(self):
self.op_stack = OperatorStack()
self.zahl_stack = OperandenStack()
self.operatoren = "+-*/"
self.ziffern = "0123456789."
self.zahl = ""
def auswerten(self, ausdruck):
for zeichen in ausdruck:
if zeichen =="(":
continue
elif zeichen in self.operatoren:
self.push_zahl()
self.op_stack.push(zeichen)
elif zeichen in self.ziffern:
self.zahl += zeichen
elif zeichen == ")":
self.push_zahl()
self.berechne_operation_eval()
else:
print("Ungültiges Zeichen "+ zeichen)
return self.zahl_stack.pop()
def push_zahl(self):
if len(self.zahl)>0:
self.zahl_stack.push(float(self.zahl))
self.zahl = ""
def berechne_operation(self):
operator_str = self.op_stack.pop()
if operator_str == '+':
self.zahl_stack.push(self.zahl_stack.pop()+self.zahl_stack.pop())
elif operator_str == '-':
self.zahl_stack.push(-self.zahl_stack.pop()+self.zahl_stack.pop())
elif operator_str == '*':
self.zahl_stack.push(self.zahl_stack.pop()*self.zahl_stack.pop())
else:
self.zahl_stack.push((1/self.zahl_stack.pop())*self.zahl_stack.pop())
def berechne_operation_eval(self):
operation = self.op_stack.pop() + str(self.zahl_stack.pop())
operation = str(self.zahl_stack.pop()) + operation
self.zahl_stack.push( eval(operation) )
```
%% Cell type:markdown id:065630f0 tags:
Test der Ausdruck-Auswertung (der Ausdruck darf gerne variiert werden):
%% Cell type:code id:6f505456 tags:
``` python
testauswerter = AusdruckAuswerter()
print( testauswerter.auswerten("(1-(3*5))") )
print( testauswerter.auswerten("(20/(2*5))") )
```
%% Output
-14.0
2.0
%% Cell type:markdown id:2b49b5cf tags:
### <font color='blue'>**Anregungen zum selbst Programmieren**</font>
* Erstelle eine Datenstruktur zur Verwaltung einer Warteschlange für eine CNC-Maschine. Verwende dazu 3 Klassen:
* die allgemeine `Datenstruktur`, die `Maschine`, und den `Auftrag`.
* Eine `Maschine` soll eine Datenstruktur für die Warteschlange beinhalten und Methoden, um Aufträge der Schlange hinzuzufügen und den nächsten Auftrag zu bearbeiten.
Zudem soll es eine Methode geben, die dafür sorgt, dass alle verbleibenden Aufträge abgearbeitet werden.
Bei der Bearbeitung soll die Maschine die Informationen über den bearbeiteten Auftrag ausgeben.
* Ein `Auftrag` hat folgende Daten:
* `Name`
* `Stückzahl`
* `Materialart`
* `Materialmenge pro Stück`
* `Dauer pro Stück`<br>
* Die `__init()__`- Methode soll prüfen, dass bei den Zahlenwerten nur positive Werte eingegeben werden.
<br><br>
* **Anspruchsvoll:** Erweitere das in dieser Übung behandelte Programm so, dass nicht zwingend alle Operationen umklammert werden müssen, und dass Punkt- vor Strichrechnung umgesetzt wird. Um das bestehende Programm weiterverwenden zu können, ist ein möglicher Ansatz, eine Methode zu erstellen, die die Zeichenkette anhand der Regeln "Punkt- vor Strichrechnung" und "von links nach rechts" mit Klammern ergänzt.
This diff is collapsed.
Semester_2/Einheit_02/Pics/BST-Remove.png

79 KiB

Semester_2/Einheit_02/Pics/BST-Rotation.png

63.5 KiB

Semester_2/Einheit_02/Pics/BST-Search-Insert.png

61.6 KiB

Semester_2/Einheit_02/Pics/Binaerbaum.png

27.8 KiB

Semester_2/Einheit_02/Pics/DAGraph.png

30.8 KiB

Semester_2/Einheit_02/Pics/Graph.png

34.5 KiB

Semester_2/Einheit_02/Pics/Heap-Insert.png

69.7 KiB

Semester_2/Einheit_02/Pics/Heap-Linear.png

77.9 KiB

Semester_2/Einheit_02/Pics/Heap-Remove.png

103 KiB

<?xml version="1.0" encoding="windows-1252" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="763px" preserveAspectRatio="none" style="width:351px;height:763px;background:#FFFFFF;" version="1.1" viewBox="0 0 351 763" width="351px" zoomAndPan="magnify"><defs/><g><!--class Heap--><g id="elem_Heap"><rect codeLine="1" fill="#F1F1F1" height="178.375" id="Heap" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="183" x="7" y="404"/><ellipse cx="75.75" cy="420" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M78.0938,415.6719 C77.1563,415.2344 76.5625,415.0938 75.6875,415.0938 C73.0625,415.0938 71.0625,417.1719 71.0625,419.8906 L71.0625,421.0156 C71.0625,423.5938 73.1719,425.4844 76.0625,425.4844 C77.2813,425.4844 78.4375,425.1875 79.1875,424.6406 C79.7656,424.2344 80.0938,423.7813 80.0938,423.3906 C80.0938,422.9375 79.7031,422.5469 79.2344,422.5469 C79.0156,422.5469 78.8125,422.625 78.625,422.8125 C78.1719,423.2969 78.1719,423.2969 77.9844,423.3906 C77.5625,423.6563 76.875,423.7813 76.1094,423.7813 C74.0625,423.7813 72.7656,422.6875 72.7656,420.9844 L72.7656,419.8906 C72.7656,418.1094 74.0156,416.7969 75.75,416.7969 C76.3281,416.7969 76.9375,416.9531 77.4063,417.2031 C77.8906,417.4844 78.0625,417.7031 78.1563,418.1094 C78.2188,418.5156 78.25,418.6406 78.3906,418.7656 C78.5313,418.9063 78.7656,419.0156 78.9844,419.0156 C79.25,419.0156 79.5156,418.875 79.6875,418.6563 C79.7969,418.5 79.8281,418.3125 79.8281,417.8906 L79.8281,416.4688 C79.8281,416.0313 79.8125,415.9063 79.7188,415.75 C79.5625,415.4844 79.2813,415.3438 78.9844,415.3438 C78.6875,415.3438 78.4844,415.4375 78.2656,415.75 L78.0938,415.6719 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="37" x="96.25" y="424.8467">Heap</text><line style="stroke:#181818;stroke-width:0.5;" x1="8" x2="189" y1="436" y2="436"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="45" x="13" y="452.9951">A : list</text><line style="stroke:#181818;stroke-width:0.5;" x1="8" x2="189" y1="460.2969" y2="460.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="13" y="477.292">__init__()</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="93" x="13" y="493.5889">__len__() : int</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="113" x="13" y="509.8857">insert(element)</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="171" x="13" y="526.1826">extract_min() : element</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="85" x="13" y="542.4795">remove(int)</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="127" x="13" y="558.7764">exchange(int, int)</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="84" x="13" y="575.0732">heapify(int)</text></g><!--class Maschine--><g id="elem_Maschine"><rect codeLine="2" fill="#F1F1F1" height="113.1875" id="Maschine" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="203" x="115" y="643"/><ellipse cx="179.25" cy="659" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M181.5938,654.6719 C180.6563,654.2344 180.0625,654.0938 179.1875,654.0938 C176.5625,654.0938 174.5625,656.1719 174.5625,658.8906 L174.5625,660.0156 C174.5625,662.5938 176.6719,664.4844 179.5625,664.4844 C180.7813,664.4844 181.9375,664.1875 182.6875,663.6406 C183.2656,663.2344 183.5938,662.7813 183.5938,662.3906 C183.5938,661.9375 183.2031,661.5469 182.7344,661.5469 C182.5156,661.5469 182.3125,661.625 182.125,661.8125 C181.6719,662.2969 181.6719,662.2969 181.4844,662.3906 C181.0625,662.6563 180.375,662.7813 179.6094,662.7813 C177.5625,662.7813 176.2656,661.6875 176.2656,659.9844 L176.2656,658.8906 C176.2656,657.1094 177.5156,655.7969 179.25,655.7969 C179.8281,655.7969 180.4375,655.9531 180.9063,656.2031 C181.3906,656.4844 181.5625,656.7031 181.6563,657.1094 C181.7188,657.5156 181.75,657.6406 181.8906,657.7656 C182.0313,657.9063 182.2656,658.0156 182.4844,658.0156 C182.75,658.0156 183.0156,657.875 183.1875,657.6563 C183.2969,657.5 183.3281,657.3125 183.3281,656.8906 L183.3281,655.4688 C183.3281,655.0313 183.3125,654.9063 183.2188,654.75 C183.0625,654.4844 182.7813,654.3438 182.4844,654.3438 C182.1875,654.3438 181.9844,654.4375 181.7656,654.75 L181.5938,654.6719 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="66" x="199.75" y="663.8467">Maschine</text><line style="stroke:#181818;stroke-width:0.5;" x1="116" x2="317" y1="675" y2="675"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="120" x="121" y="691.9951">auftraege : Heap</text><line style="stroke:#181818;stroke-width:0.5;" x1="116" x2="317" y1="699.2969" y2="699.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="164" x="121" y="716.292">neuer_auftrag(Auftrag)</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="141" x="121" y="732.5889">bearbeite_auftrag()</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="191" x="121" y="748.8857">bearbeite_alle_auftraege()</text></g><!--class Auftrag--><g id="elem_Auftrag"><rect codeLine="3" fill="#F1F1F1" height="145.7813" id="Auftrag" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="278" x="39.5" y="7"/><ellipse cx="147.25" cy="23" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M149.5938,18.6719 C148.6563,18.2344 148.0625,18.0938 147.1875,18.0938 C144.5625,18.0938 142.5625,20.1719 142.5625,22.8906 L142.5625,24.0156 C142.5625,26.5938 144.6719,28.4844 147.5625,28.4844 C148.7813,28.4844 149.9375,28.1875 150.6875,27.6406 C151.2656,27.2344 151.5938,26.7813 151.5938,26.3906 C151.5938,25.9375 151.2031,25.5469 150.7344,25.5469 C150.5156,25.5469 150.3125,25.625 150.125,25.8125 C149.6719,26.2969 149.6719,26.2969 149.4844,26.3906 C149.0625,26.6563 148.375,26.7813 147.6094,26.7813 C145.5625,26.7813 144.2656,25.6875 144.2656,23.9844 L144.2656,22.8906 C144.2656,21.1094 145.5156,19.7969 147.25,19.7969 C147.8281,19.7969 148.4375,19.9531 148.9063,20.2031 C149.3906,20.4844 149.5625,20.7031 149.6563,21.1094 C149.7188,21.5156 149.75,21.6406 149.8906,21.7656 C150.0313,21.9063 150.2656,22.0156 150.4844,22.0156 C150.75,22.0156 151.0156,21.875 151.1875,21.6563 C151.2969,21.5 151.3281,21.3125 151.3281,20.8906 L151.3281,19.4688 C151.3281,19.0313 151.3125,18.9063 151.2188,18.75 C151.0625,18.4844 150.7813,18.3438 150.4844,18.3438 C150.1875,18.3438 149.9844,18.4375 149.7656,18.75 L149.5938,18.6719 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="54" x="167.75" y="27.8467">Auftrag</text><line style="stroke:#181818;stroke-width:0.5;" x1="40.5" x2="316.5" y1="39" y2="39"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="95" x="45.5" y="55.9951">name : string</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="115" x="45.5" y="72.292">material : string</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="266" x="45.5" y="88.5889">materialverbrauch_pro_stueck : float</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="110" x="45.5" y="104.8857">stueckzahl : int</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="174" x="45.5" y="121.1826">dauer_pro_stueck : float</text><line style="stroke:#181818;stroke-width:0.5;" x1="40.5" x2="316.5" y1="128.4844" y2="128.4844"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="45.5" y="145.4795">__init__()</text></g><!--class PrioAuftrag--><g id="elem_PrioAuftrag"><rect codeLine="4" fill="#F1F1F1" height="113.1875" id="PrioAuftrag" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="114" x="121.5" y="214"/><ellipse cx="136.5" cy="230" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1.0;"/><path d="M138.8438,225.6719 C137.9063,225.2344 137.3125,225.0938 136.4375,225.0938 C133.8125,225.0938 131.8125,227.1719 131.8125,229.8906 L131.8125,231.0156 C131.8125,233.5938 133.9219,235.4844 136.8125,235.4844 C138.0313,235.4844 139.1875,235.1875 139.9375,234.6406 C140.5156,234.2344 140.8438,233.7813 140.8438,233.3906 C140.8438,232.9375 140.4531,232.5469 139.9844,232.5469 C139.7656,232.5469 139.5625,232.625 139.375,232.8125 C138.9219,233.2969 138.9219,233.2969 138.7344,233.3906 C138.3125,233.6563 137.625,233.7813 136.8594,233.7813 C134.8125,233.7813 133.5156,232.6875 133.5156,230.9844 L133.5156,229.8906 C133.5156,228.1094 134.7656,226.7969 136.5,226.7969 C137.0781,226.7969 137.6875,226.9531 138.1563,227.2031 C138.6406,227.4844 138.8125,227.7031 138.9063,228.1094 C138.9688,228.5156 139,228.6406 139.1406,228.7656 C139.2813,228.9063 139.5156,229.0156 139.7344,229.0156 C140,229.0156 140.2656,228.875 140.4375,228.6563 C140.5469,228.5 140.5781,228.3125 140.5781,227.8906 L140.5781,226.4688 C140.5781,226.0313 140.5625,225.9063 140.4688,225.75 C140.3125,225.4844 140.0313,225.3438 139.7344,225.3438 C139.4375,225.3438 139.2344,225.4375 139.0156,225.75 L138.8438,225.6719 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="82" x="150.5" y="234.8467">PrioAuftrag</text><line style="stroke:#181818;stroke-width:0.5;" x1="122.5" x2="234.5" y1="246" y2="246"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="127.5" y="262.9951">prio : int</text><line style="stroke:#181818;stroke-width:0.5;" x1="122.5" x2="234.5" y1="270.2969" y2="270.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="62" x="127.5" y="287.292">__init__()</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="127.5" y="303.5889">__le__() : bool</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="94" x="127.5" y="319.8857">__lt__() : bool</text></g><!--link Heap to Maschine--><g id="link_Heap_Maschine"><path codeLine="6" d="M149.399,582.21 C158.843,598.577 168.569,615.434 177.585,631.059 " fill="none" id="Heap-to-Maschine" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="#181818" points="184.325,642.739,184.7909,635.543,178.3276,632.3452,177.8617,639.5412,184.325,642.739" style="stroke:#181818;stroke-width:1.0;"/></g><!--reverse link Auftrag to PrioAuftrag--><g id="link_Auftrag_PrioAuftrag"><path codeLine="7" d="M178.5,173.242 C178.5,187.134 178.5,201.084 178.5,213.885 " fill="none" id="Auftrag-backto-PrioAuftrag" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="171.5,173.071,178.5,153.071,185.5,173.071,171.5,173.071" style="stroke:#181818;stroke-width:1.0;"/></g><!--link PrioAuftrag to Maschine--><g id="link_PrioAuftrag_Maschine"><path codeLine="8" d="M231.868,327.101 C238.259,336.475 243.816,346.568 247.5,357 C279.508,447.629 258.813,559.773 239.16,630.248 " fill="none" id="PrioAuftrag-to-Maschine" style="stroke:#181818;stroke-width:1.0;"/><polygon fill="none" points="235.516,642.908,241.02,638.249,238.8363,631.3765,233.3323,636.0355,235.516,642.908" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="78" x="265.5" y="497.5669">in auftraege</text></g><!--link PrioAuftrag to Heap--><g id="link_PrioAuftrag_Heap"><path codeLine="9" d="M121.423,310.366 C106.9781,323.347 93.3468,339.127 85.5,357 C80.8579,367.573 78.4715,379.05 77.647,390.696 " fill="none" id="PrioAuftrag-to-Heap" style="stroke:#181818;stroke-width:1.0;stroke-dasharray:7.0,7.0;"/><polygon fill="none" points="77.3426,403.878,81.48,397.9719,77.6195,391.8812,73.4821,397.7873,77.3426,403.878" style="stroke:#181818;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="156" x="86.5" y="370.0669">als element verwendbar</text></g><!--SRC=[VPBDReKW48NtFWLBRUfzW9jkxgwR9dq3Cd97dHJ10Dx-f0zVH2HZ_nR6cVETum2YD7Wl7X7cIgNo2RmQoM1kBqiV70ovUtPaTwLQGsrxLm8PF7osBVUnMhIjBGF4MP0Ha0WEUF2TJZQjANf0Uu4Q9pH1tD2zehbsuAfzMdH8IOQ2b7N3H0FJEi47HsPW-WG17O7-ZyKndOD5ZN9sLlgme7g9kDSM0hDlu0D6dRR2qHKMTB-b3xiyYpbsENm4R4_VWSPLZcLdhVv90wVRJuhT9JwQVDXxzlsYQ3GvkwudosGykb3dFr3S-1OdgY0dCYcH-OuTJlQ6DHqIQWGp9F5US3B65_NlcxjYrwFSZLYd6ygOmVM4DyTGvnDekAD3S1rImEBw2skzU-Aikla2]--></g></svg>
\ No newline at end of file
Semester_2/Einheit_02/Pics/UGraph.png

21.7 KiB

<?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="422px" preserveAspectRatio="none" style="width:708px;height:422px;" version="1.1" viewBox="0 0 708 422" width="708px" zoomAndPan="magnify"><defs><filter height="300%" id="f1t56c466ylh4v" 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><ellipse cx="251.625" cy="20" fill="#000000" filter="url(#f1t56c466ylh4v)" rx="10" ry="10" style="stroke: none; stroke-width: 1.0;"/><polygon fill="#FEFECE" filter="url(#f1t56c466ylh4v)" points="161.625,50,341.625,50,353.625,62,341.625,74,161.625,74,149.625,62,161.625,50" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="180" x="161.625" y="67.432">such_wert == knoten_wert?</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="12" x="137.625" y="57.898">Ja</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="32" x="353.625" y="57.898">Nein</text><rect fill="#FEFECE" filter="url(#f1t56c466ylh4v)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="135" x="10" y="84"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="115" x="20" y="108.9659">return such_wert</text><polygon fill="#FEFECE" filter="url(#f1t56c466ylh4v)" points="339.75,84,511.75,84,523.75,96,511.75,108,339.75,108,327.75,96,339.75,84" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="172" x="339.75" y="101.432">such_wert &lt; knoten_wert?</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="12" x="315.75" y="91.898">Ja</text><rect fill="#FEFECE" filter="url(#f1t56c466ylh4v)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="212" x="185" y="169.534"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="192" x="195" y="194.4999">return suche in linken Baum</text><polygon fill="#FEFECE" filter="url(#f1t56c466ylh4v)" points="233,118,349,118,361,130,349,142,233,142,221,130,233,118" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="12" x="295" y="156.9659">Ja</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="116" x="233" y="135.432">hat linken Baum?</text><polygon fill="#FEFECE" filter="url(#f1t56c466ylh4v)" points="291,228.6019,303,240.6019,291,252.6019,279,240.6019,291,228.6019" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1t56c466ylh4v)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="223" x="449" y="169.534"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="203" x="459" y="194.4999">return suche in rechten Baum</text><polygon fill="#FEFECE" filter="url(#f1t56c466ylh4v)" points="497,118,624,118,636,130,624,142,497,142,485,130,497,118" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="12" x="564.5" y="156.9659">Ja</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="127" x="497" y="135.432">hat rechten Baum?</text><polygon fill="#FEFECE" filter="url(#f1t56c466ylh4v)" points="560.5,228.6019,572.5,240.6019,560.5,252.6019,548.5,240.6019,560.5,228.6019" style="stroke: #A80036; stroke-width: 1.5;"/><polygon fill="#FEFECE" filter="url(#f1t56c466ylh4v)" points="425.75,258.6019,437.75,270.6019,425.75,282.6019,413.75,270.6019,425.75,258.6019" style="stroke: #A80036; stroke-width: 1.5;"/><rect fill="#FEFECE" filter="url(#f1t56c466ylh4v)" height="39.0679" rx="12.5" ry="12.5" style="stroke: #A80036; stroke-width: 1.5;" width="103" x="374.25" y="302.6019"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="83" x="384.25" y="327.5678">return None</text><polygon fill="#FEFECE" filter="url(#f1t56c466ylh4v)" points="251.625,347.6698,263.625,359.6698,251.625,371.6698,239.625,359.6698,251.625,347.6698" style="stroke: #A80036; stroke-width: 1.5;"/><ellipse cx="251.625" cy="401.6698" fill="none" filter="url(#f1t56c466ylh4v)" rx="10" ry="10" style="stroke: #000000; stroke-width: 1.0;"/><ellipse cx="252.125" cy="402.1698" fill="#000000" filter="url(#f1t56c466ylh4v)" rx="6" ry="6" style="stroke: none; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="291" x2="291" y1="142" y2="169.534"/><polygon fill="#A80036" points="287,159.534,291,169.534,295,159.534,291,163.534" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="361" x2="407" y1="130" y2="130"/><polygon fill="#A80036" points="403,179.0679,407,189.0679,411,179.0679,407,183.0679" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="407" x2="407" y1="130" y2="240.6019"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="407" x2="303" y1="240.6019" y2="240.6019"/><polygon fill="#A80036" points="313,236.6019,303,240.6019,313,244.6019,309,240.6019" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="291" x2="291" y1="208.6019" y2="228.6019"/><polygon fill="#A80036" points="287,218.6019,291,228.6019,295,218.6019,291,222.6019" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="560.5" x2="560.5" y1="142" y2="169.534"/><polygon fill="#A80036" points="556.5,159.534,560.5,169.534,564.5,159.534,560.5,163.534" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="636" x2="682" y1="130" y2="130"/><polygon fill="#A80036" points="678,179.0679,682,189.0679,686,179.0679,682,183.0679" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="682" x2="682" y1="130" y2="240.6019"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="682" x2="572.5" y1="240.6019" y2="240.6019"/><polygon fill="#A80036" points="582.5,236.6019,572.5,240.6019,582.5,244.6019,578.5,240.6019" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="560.5" x2="560.5" y1="208.6019" y2="228.6019"/><polygon fill="#A80036" points="556.5,218.6019,560.5,228.6019,564.5,218.6019,560.5,222.6019" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="327.75" x2="291" y1="96" y2="96"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="291" x2="291" y1="96" y2="118"/><polygon fill="#A80036" points="287,108,291,118,295,108,291,112" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="523.75" x2="560.5" y1="96" y2="96"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="560.5" x2="560.5" y1="96" y2="118"/><polygon fill="#A80036" points="556.5,108,560.5,118,564.5,108,560.5,112" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="291" x2="291" y1="252.6019" y2="270.6019"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="291" x2="413.75" y1="270.6019" y2="270.6019"/><polygon fill="#A80036" points="403.75,266.6019,413.75,270.6019,403.75,274.6019,407.75,270.6019" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="560.5" x2="560.5" y1="252.6019" y2="270.6019"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="560.5" x2="437.75" y1="270.6019" y2="270.6019"/><polygon fill="#A80036" points="447.75,266.6019,437.75,270.6019,447.75,274.6019,443.75,270.6019" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="425.75" x2="425.75" y1="282.6019" y2="302.6019"/><polygon fill="#A80036" points="421.75,292.6019,425.75,302.6019,429.75,292.6019,425.75,296.6019" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="149.625" x2="77.5" y1="62" y2="62"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="77.5" x2="77.5" y1="62" y2="84"/><polygon fill="#A80036" points="73.5,74,77.5,84,81.5,74,77.5,78" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="353.625" x2="425.75" y1="62" y2="62"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="425.75" x2="425.75" y1="62" y2="84"/><polygon fill="#A80036" points="421.75,74,425.75,84,429.75,74,425.75,78" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="77.5" x2="77.5" y1="123.0679" y2="359.6698"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="77.5" x2="239.625" y1="359.6698" y2="359.6698"/><polygon fill="#A80036" points="229.625,355.6698,239.625,359.6698,229.625,363.6698,233.625,359.6698" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="425.75" x2="425.75" y1="341.6698" y2="359.6698"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="425.75" x2="263.625" y1="359.6698" y2="359.6698"/><polygon fill="#A80036" points="273.625,355.6698,263.625,359.6698,273.625,363.6698,269.625,359.6698" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="251.625" x2="251.625" y1="30" y2="50"/><polygon fill="#A80036" points="247.625,40,251.625,50,255.625,40,251.625,44" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="251.625" x2="251.625" y1="371.6698" y2="391.6698"/><polygon fill="#A80036" points="247.625,381.6698,251.625,391.6698,255.625,381.6698,251.625,385.6698" style="stroke: #A80036; stroke-width: 1.0;"/><!--
@startuml
skinparam defaultFontSize 14
skinparam classAttributeIconSize 0
scale max 1024 width
start
if (such_wert == knoten_wert?) then (Ja)
:return such_wert;
else (Nein)
if (such_wert < knoten_wert?) then (Ja)
if (hat linken Baum?) then (Ja)
:return suche in linken Baum;
endif
else
if (hat rechten Baum?) then (Ja)
:return suche in rechten Baum;
endif
endif
:return None;
endif
stop
@enduml
PlantUML version 1.2018.13(Mon Nov 26 18:11:51 CET 2018)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.18+10-post-Ubuntu-0ubuntu120.04.1
Operating System: Linux
OS Version: 5.15.0-71-generic
Default Encoding: UTF-8
Language: de
Country: DE
--></g></svg>
\ No newline at end of file
<?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="401px" preserveAspectRatio="none" style="width:325px;height:401px;" version="1.1" viewBox="0 0 325 401" width="325px" zoomAndPan="magnify"><defs><filter height="300%" id="f1bye6l9wl10h0" 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><!--class Graph--><rect fill="#FEFECE" filter="url(#f1bye6l9wl10h0)" height="198.5433" id="Graph" style="stroke: #A80036; stroke-width: 1.5;" width="166" x="88.5" y="8"/><ellipse cx="146.5" cy="23" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M145.9063,28.1406 Q144.4688,28.1406 143.5313,27.5313 Q142.6094,26.9219 142.1563,25.8125 Q141.7031,24.7031 141.7031,23.2188 Q141.7031,21.5469 142.2344,20.3594 Q142.7813,19.1563 143.8281,18.5156 Q144.8906,17.8594 146.4375,17.8594 Q147.1563,17.8594 147.7031,18.0156 Q148.2656,18.1563 148.8438,18.4375 L148.1719,20.1094 Q147.6563,19.8438 147.2031,19.75 Q146.7656,19.6406 146.3594,19.6406 Q145.3906,19.6406 144.8125,20.0781 Q144.25,20.5156 144,21.2969 Q143.7656,22.0781 143.7656,23.125 Q143.7656,24.7813 144.3438,25.5781 Q144.9375,26.3594 146.25,26.3594 Q146.7344,26.3594 147.25,26.2344 Q147.7656,26.1094 148.4531,25.7969 L148.4531,27.625 Q147.8438,27.8906 147.1875,28.0156 Q146.5469,28.1406 145.9063,28.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="42" x="165.5" y="28.432">Graph</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="89.5" x2="253.5" y1="38" y2="38"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="84" x="94.5" y="56.9659">vertices : list</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="73" x="94.5" y="76.0339">edges : list</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="89.5" x2="253.5" y1="84.1358" y2="84.1358"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="130" x="94.5" y="103.1018">add_vertex( vertex )</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="154" x="94.5" y="122.1697">remove_vertex( vertex )</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="131" x="94.5" y="141.2376">find_vertex( vertex )</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="116" x="94.5" y="160.3055">add_edge( edge )</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="140" x="94.5" y="179.3734">remove_edge( edge )</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="117" x="94.5" y="198.4414">find_edge( edge )</text><!--class Vertex--><rect fill="#FEFECE" filter="url(#f1bye6l9wl10h0)" height="46" id="Vertex" style="stroke: #A80036; stroke-width: 1.5;" width="72" x="242.5" y="306"/><ellipse cx="256.5" cy="321" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M255.9063,326.1406 Q254.4688,326.1406 253.5313,325.5313 Q252.6094,324.9219 252.1563,323.8125 Q251.7031,322.7031 251.7031,321.2188 Q251.7031,319.5469 252.2344,318.3594 Q252.7813,317.1563 253.8281,316.5156 Q254.8906,315.8594 256.4375,315.8594 Q257.1563,315.8594 257.7031,316.0156 Q258.2656,316.1563 258.8438,316.4375 L258.1719,318.1094 Q257.6563,317.8438 257.2031,317.75 Q256.7656,317.6406 256.3594,317.6406 Q255.3906,317.6406 254.8125,318.0781 Q254.25,318.5156 254,319.2969 Q253.7656,320.0781 253.7656,321.125 Q253.7656,322.7813 254.3438,323.5781 Q254.9375,324.3594 256.25,324.3594 Q256.7344,324.3594 257.25,324.2344 Q257.7656,324.1094 258.4531,323.7969 L258.4531,325.625 Q257.8438,325.8906 257.1875,326.0156 Q256.5469,326.1406 255.9063,326.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="42" x="269.5" y="326.432">Vertex</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="313.5" y1="336" y2="336"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="243.5" x2="313.5" y1="344" y2="344"/><!--class Edge--><rect fill="#FEFECE" filter="url(#f1bye6l9wl10h0)" height="122.2717" id="Edge" style="stroke: #A80036; stroke-width: 1.5;" width="121" x="6" y="268"/><ellipse cx="45.65" cy="283" fill="#ADD1B2" rx="10" ry="10" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M45.0563,288.1406 Q43.6188,288.1406 42.6813,287.5313 Q41.7594,286.9219 41.3063,285.8125 Q40.8531,284.7031 40.8531,283.2188 Q40.8531,281.5469 41.3844,280.3594 Q41.9313,279.1563 42.9781,278.5156 Q44.0406,277.8594 45.5875,277.8594 Q46.3063,277.8594 46.8531,278.0156 Q47.4156,278.1563 47.9938,278.4375 L47.3219,280.1094 Q46.8063,279.8438 46.3531,279.75 Q45.9156,279.6406 45.5094,279.6406 Q44.5406,279.6406 43.9625,280.0781 Q43.4,280.5156 43.15,281.2969 Q42.9156,282.0781 42.9156,283.125 Q42.9156,284.7813 43.4938,285.5781 Q44.0875,286.3594 45.4,286.3594 Q45.8844,286.3594 46.4,286.2344 Q46.9156,286.1094 47.6031,285.7969 L47.6031,287.625 Q46.9938,287.8906 46.3375,288.0156 Q45.6969,288.1406 45.0563,288.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="34" x="64.35" y="288.432">Edge</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="126" y1="298" y2="298"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="109" x="12" y="316.9659">vertex_1 : Vertex</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="109" x="12" y="336.0339">vertex_2 : Vertex</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="126" y1="344.1358" y2="344.1358"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="91" x="12" y="363.1018">get_vertex_1()</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="91" x="12" y="382.1697">get_vertex_2()</text><!--link Graph to Vertex--><path d="M225.24,218.73 C241.41,251.92 257.56,285.05 267.77,305.98 " fill="none" id="Graph-Vertex" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="219.52,207.01,218.5482,214.1553,224.7702,217.8005,225.7419,210.6552,219.52,207.01" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="32" x="229.2546" y="294.0275">0 .. *</text><!--link Graph to Edge--><path d="M118.54,219.21 C110.52,235.98 102.51,252.72 95.27,267.86 " fill="none" id="Graph-Edge" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="124.37,207.01,118.1751,210.701,119.1995,217.839,125.3944,214.148,124.37,207.01" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="32" x="64.6667" y="256.0885">0 .. *</text><!--link Edge to Vertex--><path d="M140.67,329 C175.11,329 214.49,329 242.31,329 " fill="none" id="Edge-Vertex" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#FFFFFF" points="127.25,329,133.25,333,139.25,329,133.25,325,127.25,329" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="79" x="145.25" y="320.9659">besteht aus</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="8" x="226.3976" y="323.1023">2</text><!--
@startuml
skinparam defaultFontSize 14
skinparam classAttributeIconSize 0
scale max 1024 width
class Graph
class Vertex
class Edge
Graph o- - "0 .. *" Vertex
Graph o- - "0 .. *" Edge
Edge o-right- "2" Vertex : besteht aus
Graph : vertices : list
Graph : edges : list
Graph : add_vertex( vertex )
Graph : remove_vertex( vertex )
Graph : find_vertex( vertex )
Graph : add_edge( edge )
Graph : remove_edge( edge )
Graph : find_edge( edge )
Edge : vertex_1 : Vertex
Edge : vertex_2 : Vertex
Edge : get_vertex_1()
Edge : get_vertex_2()
@enduml
PlantUML version 1.2018.13(Mon Nov 26 18:11:51 CET 2018)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 11.0.18+10-post-Ubuntu-0ubuntu120.04.1
Operating System: Linux
OS Version: 5.15.0-71-generic
Default Encoding: UTF-8
Language: de
Country: DE
--></g></svg>
\ No newline at end of file