<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.flbk-hamm.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Flbkwikiadmin</id>
	<title>FLBK-Wiki - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flbk-hamm.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Flbkwikiadmin"/>
	<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/Spezial:Beitr%C3%A4ge/Flbkwikiadmin"/>
	<updated>2026-08-06T23:05:34Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Hauptsatz_der_Differential-_und_Integralrechnung&amp;diff=2909</id>
		<title>Hauptsatz der Differential- und Integralrechnung</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Hauptsatz_der_Differential-_und_Integralrechnung&amp;diff=2909"/>
		<updated>2026-07-11T08:07:23Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Definition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit Hilfe des Hauptsatzes der Differential- und Integralrechnung werden Flächeninhalte zwischen dem [[Graph|Graphen]] einer [[Funktion]] der x-Achse berechnet.&lt;br /&gt;
&lt;br /&gt;
==Flächeninhaltsfunktion und Stammfunktion== &lt;br /&gt;
Der Flächeninhalt zwischen dem Graphen einer Funktion &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; und der x-Achse im Intervall &amp;lt;math&amp;gt;[0;x]&amp;lt;/math&amp;gt; wird durch den Funktionswert einer &#039;&#039;&#039;Flächeninhaltsfunktion&#039;&#039;&#039; &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; ermittelt.&lt;br /&gt;
&lt;br /&gt;
Es sei &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; die [[Stammfunktion]] zu einer [[ganzrationale_Funktion|ganzrationalen Funktion]] &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; mit der Konstanten &amp;lt;math&amp;gt;C=0&amp;lt;/math&amp;gt;, dann ist &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; die Flächeninhaltsfunktion zu &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/r-iUbclLabI?si=a5pPkIEuYHEhuoWi&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Bestimmtes Integral==&lt;br /&gt;
Das &#039;&#039;&#039;bestimmte Integral&#039;&#039;&#039; einer [[Stetige_Funktion|stetigen Funktion]] &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; auf dem Intervall &amp;lt;math&amp;gt;[a; b]&amp;lt;/math&amp;gt; ist durch&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x) \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
Für auf den Intervallen &amp;lt;math&amp;gt;[a;b] \subseteq [a;c]&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;[b;c] \subseteq [a;c]&amp;lt;/math&amp;gt; stetige Funktionen &amp;lt;math&amp;gt;f, ~g&amp;lt;/math&amp;gt; gelten die folgenden Rechenregeln:&lt;br /&gt;
===Faktorregel===&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b c \cdot  f(x) \, dx=c \cdot \int_a^b f(x) \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
===Summenregel===&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b (f(x)+g(x)) \, dx = \int_a^b f(x) \, dx + \int_a^bg(x) \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
===Intervalladditivität===&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^c f(x) \, dx=\int_a^b f(x) \, dx+\int_b^c f(x) \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Vertauschen der Integrationsgrenzen===&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x) \, dx=-\int_b^a f(x) \, dx&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Definition==&lt;br /&gt;
Falls &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; eine [[Stammfunktion]] von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; ist, so wird das bestimmte Integral von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; auf dem Intervall &amp;lt;math&amp;gt;[a;b]&amp;lt;/math&amp;gt; durch die Gleichung  &lt;br /&gt;
:&amp;lt;math&amp;gt;\int_a^b f(x) \, dx = F(b) - F(a)&amp;lt;/math&amp;gt;&lt;br /&gt;
berechnet.&lt;br /&gt;
&lt;br /&gt;
Hierbei bezeichnet &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; die untere und &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; die obere Grenze des Integrals. Das bestimmte Integral gibt den &#039;&#039;&#039;orientierten Flächeninhalt&#039;&#039;&#039; an, das heißt:  &lt;br /&gt;
* Liegt der Graph von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; oberhalb der x-Achse, ist das bestimmte Integral positiv.  &lt;br /&gt;
* Liegt der Graph von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; unterhalb der x-Achse, ist das bestimmte Integral negativ.&lt;br /&gt;
* Liegt der Graph von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; sowohl unterhalb als auch oberhalb der x-Achse, ist das bestimmte Integral die Differenz aus dem oberen Flächeninhalt und dem unteren Flächeninhalt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;/localassets/jsxgraph/jsxgraph.css&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;/localassets/jsxgraph/jsxgraphcore.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;box2&amp;quot; style=&amp;quot;width: 90vw; max-width: 400px; height: 60vw; max-height: 300px; margin-top:20px;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
        JXG.Options.text.useMathJax = true;       &lt;br /&gt;
        // JSXGraph-Board erstellen&lt;br /&gt;
        var board = JXG.JSXGraph.initBoard(&#039;box2&#039;, {&lt;br /&gt;
            boundingbox: [-5, 5, 10, -5], // Angepasste Boundingbox für die Skalierung&lt;br /&gt;
            axis: true,&lt;br /&gt;
            showCopyright: false,&lt;br /&gt;
            showNavigation: true,&lt;br /&gt;
            grid: true, // Gitternetz aktivieren&lt;br /&gt;
            defaultAxes: {&lt;br /&gt;
                x: {&lt;br /&gt;
                    withLabel: true,&lt;br /&gt;
                    name: &#039;\\[t\\]&#039;,&lt;br /&gt;
                    label: {&lt;br /&gt;
                        position: &#039;rt&#039;,&lt;br /&gt;
                        offset: [-5, 20],&lt;br /&gt;
                        fontSize: 14,&lt;br /&gt;
                        anchorX: &#039;right&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    ticks: {&lt;br /&gt;
                        ticksDistance: 1,&lt;br /&gt;
                        minorTicks: 0&lt;br /&gt;
                    }&lt;br /&gt;
                },&lt;br /&gt;
                y: {&lt;br /&gt;
                    withLabel: true,&lt;br /&gt;
                    name: &#039;\\[f(t)\\]&#039;,&lt;br /&gt;
                    label: {&lt;br /&gt;
                        position: &#039;rt&#039;,&lt;br /&gt;
                        offset: [5, 20],&lt;br /&gt;
                        fontSize: 14,&lt;br /&gt;
                        anchorY: &#039;right&#039;&lt;br /&gt;
                    },&lt;br /&gt;
                    ticks: {&lt;br /&gt;
                        ticksDistance: 1,&lt;br /&gt;
                        minorTicks: 0&lt;br /&gt;
                    }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Funktion erstellen&lt;br /&gt;
        var c1 = board.create(&#039;functiongraph&#039;, [function(t) {&lt;br /&gt;
            return (Math.pow(t, 5) / 24 - Math.pow(t, 3) / 2 + t);&lt;br /&gt;
        }]);&lt;br /&gt;
&lt;br /&gt;
        // Integral erstellen&lt;br /&gt;
        var i1 = board.create(&#039;integral&#039;, [&lt;br /&gt;
            [-2.0, 2.0], c1&lt;br /&gt;
        ], {&lt;br /&gt;
            withLabel: true,&lt;br /&gt;
            label: {&lt;br /&gt;
                fontSize: 14,&lt;br /&gt;
                offset: [0, 50],&lt;br /&gt;
                digits: 4,&lt;br /&gt;
                intl: {&lt;br /&gt;
                    enabled: false,&lt;br /&gt;
                    options: {}&lt;br /&gt;
                }&lt;br /&gt;
            },&lt;br /&gt;
            baseLeft: {    // Start point&lt;br /&gt;
                visible: true,&lt;br /&gt;
                fixed: false,&lt;br /&gt;
                withLabel: true,&lt;br /&gt;
                name: &#039;a&#039;&lt;br /&gt;
            },&lt;br /&gt;
            baseRight: {    // End point&lt;br /&gt;
                visible: true,&lt;br /&gt;
                fixed: false,&lt;br /&gt;
                withLabel: true,&lt;br /&gt;
                name: &#039;b&#039;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Integral-Label anpassen&lt;br /&gt;
        i1.label.setText(() =&amp;gt; {&lt;br /&gt;
            const a = i1.baseLeft.X().toFixed(2); // Untere Grenze&lt;br /&gt;
            const b = i1.baseRight.X().toFixed(2); // Obere Grenze&lt;br /&gt;
            const value = i1.Value().toFixed(4); // Wert des Integrals&lt;br /&gt;
            return `\\[\\int_{${a}}^{${b}} f(t) \\, dt = ${value}\\]`;&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // Beschriftung der Funktion mit f&lt;br /&gt;
        board.create(&#039;text&#039;, [3.5, 3, &#039;\\[f\\]&#039;], {&lt;br /&gt;
            fontSize: 14,&lt;br /&gt;
            fixed: true,&lt;br /&gt;
            anchorX: &#039;left&#039;,&lt;br /&gt;
            anchorY: &#039;bottom&#039;,&lt;br /&gt;
            color: &#039;blue&#039;&lt;br /&gt;
        });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/Lc_R0vBSKHw?si=V72WfOUjhQRQlrN9&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157,5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/MX_WQS5-vAg?si=N2TxoCi_PHsr1_1B&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Integralfunktion==&lt;br /&gt;
Es sei &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; eine auf dem Intervall &amp;lt;math&amp;gt;[a;b]&amp;lt;/math&amp;gt; [[stetige Funktion]], dann ist &lt;br /&gt;
:&amp;lt;math&amp;gt;I_a(x)=\int_a^x f(t) \, dt&amp;lt;/math&amp;gt;&lt;br /&gt;
die dazugehörige &#039;&#039;&#039;Integralfunktion&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Flächen zwischen Funktionsgraphen ermitteln==&lt;br /&gt;
Es seien &amp;lt;math&amp;gt;f, ~g&amp;lt;/math&amp;gt; auf dem Intervall &amp;lt;math&amp;gt;[a;b]&amp;lt;/math&amp;gt; stetige Funktionen. Die Fläche zwischen den Graphen von  &amp;lt;math&amp;gt;f, ~g&amp;lt;/math&amp;gt; wird wie folgt ermittelt:&lt;br /&gt;
# Schnittstellen &amp;lt;math&amp;gt;x_{S_1},\dots,x_{S_n}&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;n \in \mathbb{N}&amp;lt;/math&amp;gt; der Graphen von &amp;lt;math&amp;gt;f, ~g&amp;lt;/math&amp;gt; ermitteln.&lt;br /&gt;
# Stammfunktionen &amp;lt;math&amp;gt;F,~G&amp;lt;/math&amp;gt; ermitteln&lt;br /&gt;
# &amp;lt;math&amp;gt;A=|\int_{x_{S_1}}^{x_{S_2}}(f(x)-g(x)) \, dx|+|\int_{x_{S_2}}^{x_{S_3}}(f(x)-g(x)) \, dx|+\dots+|\int_{x_{S_{n-1}}}^{x_{S_n}}(f(x)-g(x)) \, dx|&amp;lt;/math&amp;gt; berechnen. (siehe [[Betragsfunktion]])&lt;br /&gt;
&lt;br /&gt;
==Beispiele==&lt;br /&gt;
&lt;br /&gt;
===Flächeninhalt ermitteln===&lt;br /&gt;
[[Datei:HauptsatzIntBspx2.gif|mini|Das bestimmte Integral der Funktion &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;&amp;lt;math&amp;gt;f(x)=x^2&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt; auf dem Intervall &amp;lt;math&amp;gt;[1;2] &amp;lt;/math&amp;gt; berechnet sich durch &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;math&amp;gt;\int_1^2 x^2 \, dx=\frac{7}{3}&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Wir berechnen das bestimmte Integral von &amp;lt;math&amp;gt;f(x) = x^2&amp;lt;/math&amp;gt; auf dem Intervall &amp;lt;math&amp;gt;[1;2]&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Stammfunktion von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; ist &amp;lt;math&amp;gt;F(x) = \frac{x^3}{3}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Das bestimmte Integral auf dem Intervall [1;2] wird durch  &lt;br /&gt;
:&amp;lt;math&amp;gt;\int_1^2 x^2 \, dx = F(2) - F(1)&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;= \frac{2^3}{3} - \frac{1^3}{3} = \frac{8}{3} - \frac{1}{3} = \frac{7}{3}&amp;lt;/math&amp;gt;&lt;br /&gt;
berechnet.  &lt;br /&gt;
Der Graph von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; verläuft auf dem Intervall &amp;lt;math&amp;gt;[1;2]&amp;lt;/math&amp;gt; oberhalb der x-Achse. Der Flächeninhalt beträgt somit &amp;lt;math&amp;gt;\frac{7}{3}&amp;lt;/math&amp;gt; Einheiten und ist im rechten Bild grün eingezeichnet.&lt;br /&gt;
&lt;br /&gt;
Wir berechnen den Flächeninhalt zwischen dem Graphen von \(f(t)=\frac{t^5}{24}-\frac{t^3}{2}+t\) und der x-Achse auf dem Intervall &amp;lt;math&amp;gt;[-2;2]&amp;lt;/math&amp;gt; (siehe [[Hauptsatz_der_Differential-_und_Integralrechnung#Definition|Graph von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;]]).&lt;br /&gt;
&lt;br /&gt;
1. Nullstellen von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; berechnen&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{t^5}{24}-\frac{t^3}{2}+t=0&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;t \approx -3,08 \lor t \approx -1,59 \lor t \approx 0 \lor t \approx 1,59 \lor t \approx 3,08&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;-1,59; 0; 1,59 \in [-2;2]&amp;lt;/math&amp;gt;&lt;br /&gt;
2. Flächeninhalt ermitteln&lt;br /&gt;
:&amp;lt;math&amp;gt;A=|\int_{-2}^{-1,59} f(t) \, dt|+|\int_{-1,59}^{0} f(t) \, dt|+|\int_{0}^{1,59} f(t) \, dt|+|\int_{1,59}^{2} f(t) \, dt| &amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;\approx |0,13|+|-0,58|+|0,58|+|-0,13| = 0,13+0,58+0,58+0,13= 1,42&amp;lt;/math&amp;gt;&lt;br /&gt;
Der gesuchte Flächeninhalt beträgt &amp;lt;math&amp;gt;A=1,42&amp;lt;/math&amp;gt;. Der orientierte Flächeninhalt auf dem Intervall &amp;lt;math&amp;gt;[-2;2]&amp;lt;/math&amp;gt; beträgt &amp;lt;math&amp;gt;\int_{-2}^{2} f(t) \, dt=0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Orientierten Flächeninhalt ermitteln===&lt;br /&gt;
[[Datei:HauptsatzIntBspx.gif|mini|Das bestimmte Integral der Funktion &amp;lt;span style=&amp;quot;color:blue&amp;quot;&amp;gt;&amp;lt;math&amp;gt;f(x)=x&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt; auf dem Intervall &amp;lt;math&amp;gt;[-1;1] &amp;lt;/math&amp;gt; berechnet sich durch &amp;lt;math&amp;gt;\int_{-1}^1 x \, dx=&amp;lt;/math&amp;gt;&amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;math&amp;gt;\frac{1}{2}&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt;&amp;lt;math&amp;gt;-&amp;lt;/math&amp;gt;&amp;lt;math&amp;gt;\frac{1}{2}&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;math&amp;gt;=0&amp;lt;/math&amp;gt;.]]&lt;br /&gt;
&lt;br /&gt;
Wir betrachten &amp;lt;math&amp;gt;f(x) = x&amp;lt;/math&amp;gt; auf dem Intervall &amp;lt;math&amp;gt;[-1;1]&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Stammfunktion von &amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt; ist &amp;lt;math&amp;gt;F(x) = \frac{x^2}{2}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Das bestimmte Integral ist:  &lt;br /&gt;
:&amp;lt;math&amp;gt;\int_{-1}^1 x \, dx = F(1) - F(-1)&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;= \frac{1^2}{2} - \frac{(-1)^2}{2} = \frac{1}{2} - \frac{1}{2} = 0&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Der orientierte Flächeninhalt beträgt &amp;lt;math&amp;gt;0&amp;lt;/math&amp;gt;, da sich die positiven und negativen Flächeninhalte genau ausgleichen.&lt;br /&gt;
&lt;br /&gt;
===Integralfunktion ermitteln===&lt;br /&gt;
Gegeben sei &amp;lt;math&amp;gt;f(x) = 3x&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;a = 0&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Die Integralfunktion ist:  &lt;br /&gt;
:&amp;lt;math&amp;gt;I_0(x) = \int_0^x 3t \, dt&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Stammfunktion von &amp;lt;math&amp;gt;3t&amp;lt;/math&amp;gt; ist &amp;lt;math&amp;gt;\frac{3t^2}{2}&amp;lt;/math&amp;gt;, also gilt  &lt;br /&gt;
:&amp;lt;math&amp;gt;I_0(x) = \frac{3x^2}{2} - \frac{3 \cdot 0^2}{2} = \frac{3x^2}{2}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
===Flächeninhalt zwischen den Graphen von zwei Funktionen ermitteln===&lt;br /&gt;
[[Datei:HauptsatzIntFlächenZwGraphen.gif|mini|Fläche zwischen den Graphen von zwei Funktionen ermitteln]]&lt;br /&gt;
&lt;br /&gt;
Wir betrachten die Funktionen &amp;lt;math&amp;gt;f(x)=x^2+1&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;g(x)=-x^2+3&amp;lt;/math&amp;gt; und ermitteln die Fläche zwischen den Graphen der Funktionen. &lt;br /&gt;
&lt;br /&gt;
1. Schnittstellen von &amp;lt;math&amp;gt;g,~f&amp;lt;/math&amp;gt; ermitteln &amp;lt;br&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;f(x)=g(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;x^2+1=-x^2+3&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;2 \cdot x^2=2&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; x^2=1&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt; x=\pm \sqrt{1}&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;x=\pm 1&amp;lt;/math&amp;gt;&lt;br /&gt;
2. Stammfunktionen ermitteln&lt;br /&gt;
:&amp;lt;math&amp;gt;F(x)=\frac{1}{3}x^3+x&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;G(x)=-\frac{1}{3}x^3+3x&amp;lt;/math&amp;gt;&lt;br /&gt;
3. Flächeninhalt ermitteln&lt;br /&gt;
:&amp;lt;math&amp;gt;\int_{-1}^{1}(f(x)-g(x)) \, dx=F(1)-G(1)-(F(-1)-G(-1))&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;=\frac{1}{3} \cdot 1^3+1-(-\frac{1}{3}\cdot 1^3+3 \cdot 1)&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;-(\frac{1}{3} \cdot (-1)^3+(-1)-(-\frac{1}{3}\cdot (-1)^3+3 \cdot (-1)))&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;=-\frac{8}{3}&amp;lt;/math&amp;gt; (orientierter Flächeninhalt)&lt;br /&gt;
&lt;br /&gt;
Der gesuchte Flächeninhalt ist der [[Betragsfunktion|Betrag]] der Zahl und beträgt &amp;lt;span style=&amp;quot;color:green&amp;quot;&amp;gt;&amp;lt;math&amp;gt;\frac{8}{3}&amp;lt;/math&amp;gt;&amp;lt;/span&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Integralrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Common.js&amp;diff=2908</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Common.js&amp;diff=2908"/>
		<updated>2026-07-09T12:22:14Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: Der Seiteninhalt wurde durch einen anderen Text ersetzt: „/* ============================================================    MediaWiki:Common.js – FLBK-Wiki    Bereinigte Fassung (Basis: Wikipedia-Common.js).    Editier-Komfort, Wikipedia-Infrastruktur &amp;amp; ungenutzte    Vorlagen-Skripte entfernt.    Hinweis: Gilt NICHT für die mobile Ansicht – dafür MediaWiki:Mobile.js.    ============================================================ */  /* Korrekte Sortierung von Umlauten und ß in…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================&lt;br /&gt;
   MediaWiki:Common.js – FLBK-Wiki&lt;br /&gt;
   Bereinigte Fassung (Basis: Wikipedia-Common.js).&lt;br /&gt;
   Editier-Komfort, Wikipedia-Infrastruktur &amp;amp; ungenutzte&lt;br /&gt;
   Vorlagen-Skripte entfernt.&lt;br /&gt;
   Hinweis: Gilt NICHT für die mobile Ansicht – dafür MediaWiki:Mobile.js.&lt;br /&gt;
   ============================================================ */&lt;br /&gt;
&lt;br /&gt;
/* Korrekte Sortierung von Umlauten und ß in sortierbaren Tabellen */&lt;br /&gt;
mw.config.set( &#039;tableSorterCollation&#039;, {&lt;br /&gt;
    &#039;Ä&#039;:&#039;A&#039;, &#039;Ö&#039;:&#039;O&#039;, &#039;Ü&#039;:&#039;U&#039;, &#039;ä&#039;:&#039;a&#039;, &#039;ö&#039;:&#039;o&#039;, &#039;ü&#039;:&#039;u&#039;, &#039;ß&#039;:&#039;ss&#039;&lt;br /&gt;
} );&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Common.css&amp;diff=2907</id>
		<title>MediaWiki:Common.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Common.css&amp;diff=2907"/>
		<updated>2026-07-09T12:21:58Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* ============================================================&lt;br /&gt;
   MediaWiki:Common.css – FLBK-Wiki&lt;br /&gt;
   Bereinigte Fassung (Basis: Wikipedia-Common.css).&lt;br /&gt;
   Wikipedia-Infrastruktur &amp;amp; ungenutzte Vorlagen-Styles entfernt.&lt;br /&gt;
   Hinweis: Gilt NICHT für die mobile Ansicht – dafür MediaWiki:Mobile.css.&lt;br /&gt;
   ============================================================ */&lt;br /&gt;
&lt;br /&gt;
/* Personennamen in Kapitälchen */&lt;br /&gt;
.Person {&lt;br /&gt;
    font-variant: small-caps;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* prettytable: sauberes Alias für wikitable (ohne Wikipedia-Warnfärbung) */&lt;br /&gt;
.prettytable {&lt;br /&gt;
    background-color: #f8f9fa;&lt;br /&gt;
    border: 1px solid #a2a9b1;&lt;br /&gt;
    border-collapse: collapse;&lt;br /&gt;
    color: black;&lt;br /&gt;
    margin: 1em 0;&lt;br /&gt;
}&lt;br /&gt;
table.prettytable &amp;gt; * &amp;gt; tr &amp;gt; th,&lt;br /&gt;
table.prettytable &amp;gt; * &amp;gt; tr &amp;gt; td {&lt;br /&gt;
    border: 1px solid #a2a9b1;&lt;br /&gt;
    padding: .2em .4em;&lt;br /&gt;
}&lt;br /&gt;
table.prettytable &amp;gt; * &amp;gt; tr &amp;gt; th {&lt;br /&gt;
    text-align: center;&lt;br /&gt;
}&lt;br /&gt;
table.prettytable &amp;gt; caption {&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Zebra-Tabellen (.wikitable.zebra) */&lt;br /&gt;
table.wikitable.zebra &amp;gt; tbody &amp;gt; :nth-child(even):not([class*=&amp;quot;hintergrundfarbe&amp;quot;]) {&lt;br /&gt;
    background: white;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Ausrichtungs-Hilfsklassen für Bausteine, Tabellen, Galerien */&lt;br /&gt;
/* @noflip */&lt;br /&gt;
div.float-left,&lt;br /&gt;
table.float-left,&lt;br /&gt;
ul.float-left,&lt;br /&gt;
.float-left {&lt;br /&gt;
    clear: left;&lt;br /&gt;
    float: left;&lt;br /&gt;
    margin: 1em 1em 1em 0;&lt;br /&gt;
}&lt;br /&gt;
/* @noflip */&lt;br /&gt;
div.float-right,&lt;br /&gt;
table.float-right,&lt;br /&gt;
ul.float-right,&lt;br /&gt;
.float-right {&lt;br /&gt;
    clear: right;&lt;br /&gt;
    float: right;&lt;br /&gt;
    margin: 1em 0 1em 1em;&lt;br /&gt;
}&lt;br /&gt;
div.centered,&lt;br /&gt;
table.centered,&lt;br /&gt;
ul.centered,&lt;br /&gt;
.centered {&lt;br /&gt;
    margin-left: auto;&lt;br /&gt;
    margin-right: auto;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Obenbündige Textausrichtung in Tabellenzellen */&lt;br /&gt;
.toptextcells &amp;gt; * &amp;gt; * &amp;gt; td {&lt;br /&gt;
    vertical-align: top;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Metadaten ausblenden */&lt;br /&gt;
.metadata {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* &amp;lt;noscript&amp;gt;-Emulation */&lt;br /&gt;
.client-js .noscript {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Abkürzungen dezenter unterstreicheln */&lt;br /&gt;
abbr[title]:not(:hover),&lt;br /&gt;
.explain[title]:not(:hover) {&lt;br /&gt;
    border-bottom-color: rgba(127, 127, 127, .5);&lt;br /&gt;
    text-decoration-color: rgba(127, 127, 127, .5);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* blockquote: grauen linken Rand entfernen */&lt;br /&gt;
.mw-body-content blockquote {&lt;br /&gt;
    border-left: none;&lt;br /&gt;
    padding: 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Infoboxen nicht in Kategorie-Inhalt ragen lassen */&lt;br /&gt;
div.mw-category-generated {&lt;br /&gt;
    clear: both;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Minerva.css&amp;diff=2906</id>
		<title>MediaWiki:Minerva.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Minerva.css&amp;diff=2906"/>
		<updated>2026-07-09T12:11:41Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;.minerva-footer-logo {&lt;br /&gt;
    display: none !important;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Minerva.css&amp;diff=2905</id>
		<title>MediaWiki:Minerva.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Minerva.css&amp;diff=2905"/>
		<updated>2026-07-09T12:09:14Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: Die Seite wurde neu angelegt: „/* All CSS here will be loaded for users of the MinervaNeue skin */ .minerva-footer-logo {     display: none; }“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* All CSS here will be loaded for users of the MinervaNeue skin */&lt;br /&gt;
.minerva-footer-logo {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Sidebar&amp;diff=2904</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Sidebar&amp;diff=2904"/>
		<updated>2026-07-09T06:41:20Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: Die Seite wurde neu angelegt: „* navigation ** mainpage|mainpage-description ** :Kategorie:Mathematik|Mathematik ** :Kategorie:Informatik|Informatik ** recentchanges-url|recentchanges ** randompage-url|randompage ** specialpages-url|specialpages * SEARCH * TOOLBOX * LANGUAGES“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** :Kategorie:Mathematik|Mathematik&lt;br /&gt;
** :Kategorie:Informatik|Informatik&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** specialpages-url|specialpages&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Tagline&amp;diff=2903</id>
		<title>MediaWiki:Tagline</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Tagline&amp;diff=2903"/>
		<updated>2026-07-09T06:19:29Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aus {{SITENAME}}&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Tagline&amp;diff=2902</id>
		<title>MediaWiki:Tagline</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Tagline&amp;diff=2902"/>
		<updated>2026-07-09T06:16:49Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Lernmaterial des Friedrich-List-Berufskollegs Hamm&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Tagline&amp;diff=2901</id>
		<title>MediaWiki:Tagline</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Tagline&amp;diff=2901"/>
		<updated>2026-07-09T06:15:26Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Aus {{SITENAME}}&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Tagline&amp;diff=2900</id>
		<title>MediaWiki:Tagline</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=MediaWiki:Tagline&amp;diff=2900"/>
		<updated>2026-07-09T06:15:15Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: Die Seite wurde neu angelegt: „Hamm“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hamm&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Vorlage:Hauptseite/styles.css&amp;diff=2899</id>
		<title>Vorlage:Hauptseite/styles.css</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Vorlage:Hauptseite/styles.css&amp;diff=2899"/>
		<updated>2026-07-08T14:46:00Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* Stil für die Container der Boxen */&lt;br /&gt;
.portal-container {&lt;br /&gt;
    display: flex;&lt;br /&gt;
    flex-wrap: wrap;&lt;br /&gt;
    gap: 10px;&lt;br /&gt;
}&lt;br /&gt;
/* Stil für die Box */&lt;br /&gt;
.portal-box {&lt;br /&gt;
    padding: 10px;&lt;br /&gt;
    margin-bottom: 10px;&lt;br /&gt;
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);&lt;br /&gt;
    flex: 1 1 calc(33.333% - 10px);&lt;br /&gt;
    box-sizing: border-box;&lt;br /&gt;
    color: var(--color-base, #202122);&lt;br /&gt;
    background-color: var(--background-color-neutral-subtle, #f9f9f9);&lt;br /&gt;
    border: 1px solid #8898bf;&lt;br /&gt;
}&lt;br /&gt;
/* Stil für die Überschrift der Box */&lt;br /&gt;
.portal-box h2 {&lt;br /&gt;
    font-family: inherit;&lt;br /&gt;
    font-size: 0.67em;&lt;br /&gt;
    font-weight: bold;&lt;br /&gt;
    line-height: 1.5;&lt;br /&gt;
    display: block !important;&lt;br /&gt;
    margin: -10px -10px 10px -10px;&lt;br /&gt;
    padding: 5px 10px;&lt;br /&gt;
    color: var(--color-base, #202122);&lt;br /&gt;
    background-color: var(--background-color-progressive-subtle, #D8E8FF);&lt;br /&gt;
    border-top: 1px solid #8898bf;&lt;br /&gt;
    border-bottom: 1px solid #8898bf;&lt;br /&gt;
}&lt;br /&gt;
/* Inhaltsverzeichnis für Seiten mit der Klasse &#039;no-toc&#039; ausblenden */&lt;br /&gt;
.no-toc .toc {&lt;br /&gt;
    display: none;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Software_Ergonomie&amp;diff=2898</id>
		<title>Software Ergonomie</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Software_Ergonomie&amp;diff=2898"/>
		<updated>2026-07-08T14:23:14Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Software-Ergonomie und Barrierefreiheit in der IT-Entwicklung ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Software-Ergonomie und Barrierefreiheit&#039;&#039;&#039; sind zwei zentrale Qualitätsmerkmale moderner Software. Sie stellen sicher, dass Anwendungen nicht nur funktional, sondern auch effizient, benutzerfreundlich und für jeden zugänglich sind – unabhängig von individuellen Fähigkeiten oder Einschränkungen. Damit lässt sie sich in die [[Nicht Funktionale Anforderungen|nicht funktionalen Anforderungen]] einordnen &lt;br /&gt;
&lt;br /&gt;
=== Software-Ergonomie ===&lt;br /&gt;
&#039;&#039;&#039;Software-Ergonomie&#039;&#039;&#039; beschäftigt sich mit der Gestaltung von Benutzerschnittstellen, die den Menschen in den Mittelpunkt stellen. Ziel ist es, die Effektivität, Effizienz und Zufriedenheit der Nutzer zu maximieren und gleichzeitig physische und kognitive Belastungen zu minimieren. Die wichtigsten Leitlinien hierfür sind in der Norm &#039;&#039;&#039;DIN EN ISO 9241&#039;&#039;&#039; definiert.&lt;br /&gt;
[[Datei:ISO.jpg|mini]]&lt;br /&gt;
Die grundlegenden Prinzipien der Software-Ergonomie umfassen:&lt;br /&gt;
&lt;br /&gt;
Aufgabenangemessenheit: Eine Software ist aufgabenangemessen, wenn sie den Nutzer optimal bei seiner Tätigkeit unterstützt und keine unnötigen oder irreführenden Schritte erfordert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel: Ein Formular zur Noteneingabe zeigt nur die Felder, die für die aktuelle Aufgabe relevant sind, und nicht den gesamten Datensatz des Schülers.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Selbstbeschreibungsfähigkeit: Jedes Element der Benutzeroberfläche sollte selbsterklärend sein. Der Nutzer sollte jederzeit wissen, wo er sich befindet, was er tun kann und welche Auswirkungen seine Aktionen haben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel: Nach dem Speichern von Daten erscheint eine Bestätigungsmeldung wie &amp;quot;Daten erfolgreich gespeichert&amp;quot;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Erwartungskonformität: Die Software sollte sich vorhersehbar und konsistent verhalten, basierend auf den Erwartungen und der Vorerfahrung des Nutzers.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel: Ein &amp;quot;Zurück&amp;quot;-Button navigiert immer zur vorherigen Seite, und ein &amp;quot;Löschen&amp;quot;-Button erfordert immer eine Bestätigung.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Barrierefreiheit (Accessibility) ===&lt;br /&gt;
&#039;&#039;&#039;Barrierefreiheit&#039;&#039;&#039; in der Softwareentwicklung bedeutet, Anwendungen so zu gestalten, dass sie von Menschen mit unterschiedlichen Einschränkungen (z. B. Seh-, Hör- oder motorische Behinderungen) ohne fremde Hilfe bedient werden können. Dies ist nicht nur eine ethische, sondern oft auch eine gesetzliche Anforderung.&lt;br /&gt;
&lt;br /&gt;
Der wichtigste Standard hierfür sind die &#039;&#039;&#039;Web Content Accessibility Guidelines (WCAG)&#039;&#039;&#039;, die auf vier grundlegenden Prinzipien beruhen:&lt;br /&gt;
&lt;br /&gt;
Wahrnehmbar (Perceivable): Informationen und UI-Komponenten müssen für alle Nutzer wahrnehmbar sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel: Bilder, Icons oder Diagramme haben einen Alternativtext (Alt-Text), der von Screenreadern vorgelesen werden kann.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Bedienbar (Operable): Die Benutzeroberfläche muss bedienbar sein. Das bedeutet, alle interaktiven Elemente müssen auch ohne Maus, also über die Tastatur oder andere Eingabegeräte, steuerbar sein.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel: Ein Nutzer kann mit der Tab-Taste durch alle Formularfelder und Buttons navigieren.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Verständlich (Understandable): Die Bedienung und die Informationen müssen verständlich sein. Dies umfasst eine klare Sprache und eine vorhersehbare Navigation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel: Eingabefelder sind klar beschriftet und Fehlermeldungen erklären, wie ein Problem behoben werden kann.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Robust (Robust): Der Code muss von einer Vielzahl von Geräten und Technologien, einschließlich assistiver Technologien, zuverlässig interpretiert werden können.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Beispiel: Der Einsatz von standardkonformen HTML-Tags und ARIA-Attributen stellt die Kompatibilität mit Screenreadern sicher.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Praktische Anwendung in der Softwareentwicklung ===&lt;br /&gt;
Software-Ergonomie und Barrierefreiheit sind keine nachträglichen Korrekturen, sondern müssen von Beginn des Entwicklungsprozesses an berücksichtigt werden.&lt;br /&gt;
&lt;br /&gt;
Analyse und Konzeption: Schon in der Phase der [[Anforderungsanalyse]] werden Nutzergruppen und deren Bedürfnisse ermittelt.&lt;br /&gt;
&lt;br /&gt;
Design (UI/UX): Im Designprozess werden Konzepte wie Wireframes und Mock-ups erstellt, die die Prinzipien der Ergonomie und Barrierefreiheit berücksichtigen.&lt;br /&gt;
&lt;br /&gt;
Implementierung: Der Code wird nach Standards implementiert, die eine gute Zugänglichkeit gewährleisten.&lt;br /&gt;
&lt;br /&gt;
Qualitätssicherung: In Testphasen werden sowohl manuelle Usability-Tests als auch automatisierte Accessibility-Checks (z. B. mit Tools wie Lighthouse oder Axe) durchgeführt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Software Entwicklung]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gewinnfunktion&amp;diff=2897</id>
		<title>Gewinnfunktion</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gewinnfunktion&amp;diff=2897"/>
		<updated>2026-07-08T11:53:16Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit Hilfe einer Gewinnfunktion wird der Gewinn für eine bestimmte Produktionsmenge ermittelt. Der Gewinn berechnet sich durch Erlös minus Kosten.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Eine [[Funktion]] &amp;lt;math&amp;gt;G:\mathbb{D}_{\text{ök}} \rightarrow \mathbb{W}_G&amp;lt;/math&amp;gt;, die jeder Produktionsmenge &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; den Gewinn &amp;lt;math&amp;gt;G(x)&amp;lt;/math&amp;gt; zuordnet, heißt &#039;&#039;&#039;Gewinnfunktion&#039;&#039;&#039;. Dabei ist &amp;lt;math&amp;gt;x \in \mathbb{D}_{\text{ök}}=[0;x_{\text{max}}]&amp;lt;/math&amp;gt;, wobei &amp;lt;math&amp;gt;\mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; der &#039;&#039;&#039;[[Ökonomischer Definitionsbereich|ökonomische Definitionsbereich]]&#039;&#039;&#039; und &amp;lt;math&amp;gt;x_{\text{max}} \in\ \mathbb{R}&amp;lt;/math&amp;gt; die &#039;&#039;&#039;[[Kapazitätsgrenze]]&#039;&#039;&#039; ist. &lt;br /&gt;
&lt;br /&gt;
Die Variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; ist häufig in ME (Mengeneinheiten) und &amp;lt;math&amp;gt;G(x)&amp;lt;/math&amp;gt; in GE (Geldeinheiten) gegeben. Die Gewinnfunktion ist definiert als die Differenz aus der [[Erlösfunktion]] und der [[Kostenfunktion]]: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = E(x) - K(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=aQ0J7uPZDJ0 Video-Einführung zur Gewinnfunktion auf YouTube]&lt;br /&gt;
&lt;br /&gt;
== Gewinnschwelle, Gewinngrenze und Gewinnzone ==&lt;br /&gt;
Es sei &amp;lt;math&amp;gt;G:\mathbb{D}_{\text{ök}} \rightarrow \mathbb{W}_G&amp;lt;/math&amp;gt; eine Gewinnfunktion. &lt;br /&gt;
* Die &#039;&#039;&#039;Gewinnschwelle&#039;&#039;&#039; &amp;lt;math&amp;gt;x_s \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; ist die kleinste Produktionsmenge, für die der Gewinn gleich 0 ist. &lt;br /&gt;
* Die &#039;&#039;&#039;Gewinngrenze&#039;&#039;&#039; &amp;lt;math&amp;gt;x_g \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; ist die größte Produktionsmenge, für die der Gewinn gleich 0 ist. &lt;br /&gt;
* In der &#039;&#039;&#039;Gewinnzone&#039;&#039;&#039;, dem Intervall &amp;lt;math&amp;gt;[x_s; x_g]&amp;lt;/math&amp;gt;, liegen die Produktionsmengen, für die das Unternehmen einen Gewinn erzielt (der Gewinn ist nicht negativ). &lt;br /&gt;
&lt;br /&gt;
Die Gewinnschwelle und die Gewinngrenze werden berechnet, indem man den Erlös den Kosten gleichsetzt (&amp;lt;math&amp;gt;E(x) = K(x)&amp;lt;/math&amp;gt;) oder die Gewinnfunktion gleich null setzt (&amp;lt;math&amp;gt;G(x) = 0&amp;lt;/math&amp;gt;). Sie sind also die [[Nullstelle|Nullstellen]] der Gewinnfunktion. &lt;br /&gt;
&lt;br /&gt;
== Break-Even-Point (BEP) für lineare Funktionen ==&lt;br /&gt;
Für eine lineare Gewinnfunktion &amp;lt;math&amp;gt;G:\mathbb{D}_{\text{ök}} \rightarrow \mathbb{W}_G&amp;lt;/math&amp;gt; mit der Gewinnschwelle &amp;lt;math&amp;gt;x_s \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; heißt der Punkt &amp;lt;math&amp;gt;BEP(x_s | E(x_s))&amp;lt;/math&amp;gt; der &#039;&#039;&#039;Break-Even-Point&#039;&#039;&#039;. Dies ist der Schnittpunkt von Erlös- und Kostenfunktion.&lt;br /&gt;
&lt;br /&gt;
== Gewinnmaximum ==&lt;br /&gt;
Es sei &amp;lt;math&amp;gt;G:\mathbb{D}_{\text{ök}} \rightarrow \mathbb{W}_G&amp;lt;/math&amp;gt; eine Gewinnfunktion. Das [[Extremwert#Definition|globale Maximum]] &amp;lt;math&amp;gt;G(x_0)&amp;lt;/math&amp;gt; von &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; heißt &#039;&#039;&#039;Gewinnmaximum&#039;&#039;&#039;. Die dazugehörige [[Extremwert#Definition|Maximalstelle]] &amp;lt;math&amp;gt;x_0 \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; heißt &#039;&#039;&#039;gewinnmaximale Ausbringungsmenge&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Eine lineare Gewinnfunktion herleiten und analysieren ===&lt;br /&gt;
Die Produktion von Fahrrädern verursacht fixe Kosten von 2700 €. Die [[Kurzfristige_Preisuntergrenze#Variable_Stückkostenfunktion|variablen Stückkosten]] betragen 30 € pro Fahrrad. Die produzierten Fahrräder werden für jeweils 300 € pro Stück verkauft. Die [[Kapazitätsgrenze]] beträgt 40 Stück. Wir analysieren im Folgenden die Gewinnsituation.&lt;br /&gt;
&lt;br /&gt;
==== Gewinnfunktion herleiten ====&lt;br /&gt;
Für die [[Kostenfunktion]] gilt &amp;lt;math&amp;gt;K(x) = 30x + 2700&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;K_v = 30&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;K_f = 2700&amp;lt;/math&amp;gt;. &lt;br /&gt;
Weil der Erlös pro Einheit 300 € beträgt, ist &amp;lt;math&amp;gt;E_v(x) = 300&amp;lt;/math&amp;gt; und die [[Erlösfunktion]] ist &amp;lt;math&amp;gt;E(x) = 300x&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Die Gewinnfunktion wird berechnet durch:&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = E(x) - K(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = 300x - (30x + 2700)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = 270x - 2700&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Gewinn berechnen ====&lt;br /&gt;
Der Gewinn für die Auslastung an der Kapazitätsgrenze (&amp;lt;math&amp;gt;x = 40&amp;lt;/math&amp;gt;) beträgt:&lt;br /&gt;
&amp;lt;math&amp;gt;G(40) = 270 \cdot 40 - 2700 = 10800 - 2700 = 8100&amp;lt;/math&amp;gt; €&lt;br /&gt;
&lt;br /&gt;
==== Gewinnschwelle berechnen ====&lt;br /&gt;
Wir setzen die Gewinnfunktion gleich null:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;270x - 2700 = 0 \quad | +2700&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;270x = 2700 \quad | :270&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x = 10&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gewinnschwelle beträgt &amp;lt;math&amp;gt;x_s = 10&amp;lt;/math&amp;gt; Fahrräder. &lt;br /&gt;
&lt;br /&gt;
Alternativ können wir die [[Erlösfunktion]] und die [[Kostenfunktion]] gleichsetzen, um die Gewinnschwelle zu berechnen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E(x) = K(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;300x = 30x + 2700 \quad | -30x&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;270x = 2700 \quad | :270&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x = 10&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Break-Even-Point berechnen ====&lt;br /&gt;
Um den entsprechenden Erlös/Kosten-Wert zu erhalten, setzen wir die Gewinnschwelle in die Erlösfunktion ein:&lt;br /&gt;
&amp;lt;math&amp;gt;E(10) = 300 \cdot 10 = 3000&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Break-Even-Point ist damit &amp;lt;math&amp;gt;BEP(10 | 3000)&amp;lt;/math&amp;gt;. Werden 10 ME produziert, sind die Kosten und der Erlös gleich hoch und betragen jeweils 3000 €.&lt;br /&gt;
&lt;br /&gt;
=== Eine ganzrationale Gewinnfunktion dritten Grades herleiten und analysieren ===&lt;br /&gt;
Die variable [[Kostenfunktion]] für ein Produkt ist durch &amp;lt;math&amp;gt;K_v(x) = 0,2x^3 - 4x^2 + 30x&amp;lt;/math&amp;gt; gegeben. Die [[Kostenfunktion#Definition|Fixkosten]] betragen 20 GE. Der [[Erlösfunktion#Definition|Verkaufspreis]] pro Stück beträgt 32,8 GE.&lt;br /&gt;
&lt;br /&gt;
==== Gewinnfunktion herleiten ====&lt;br /&gt;
Die [[Erlösfunktion]], die [[Kostenfunktion]] und die Gewinnfunktion berechnen sich wie folgt: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E(x) = 32,8x&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;K(x) = K_v(x) + K_f = 0,2x^3 - 4x^2 + 30x + 20&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = E(x) - K(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = 32,8x - (0,2x^3 - 4x^2 + 30x + 20)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = -0,2x^3 + 4x^2 + 32,8x - 30x - 20&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = -0,2x^3 + 4x^2 + 2,8x - 20&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Gewinnschwelle, Gewinngrenze und Gewinnzone berechnen ====&lt;br /&gt;
[[Datei:GewinnanalyseGraphGewinnfunktion.png|mini|Graph der Gewinnfunktion &amp;lt;math&amp;gt;G(x) = -0,2x^3 + 4x^2 + 2,8x - 20&amp;lt;/math&amp;gt;]]&lt;br /&gt;
Wir ermitteln Gewinnschwelle, Gewinngrenze und Gewinnzone, indem wir die [[Nullstelle|Nullstellen]] der berechneten Gewinnfunktion mit dem [[Taschenrechner_verwenden#Nullstellen_berechnen|Taschenrechner]] bestimmen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;0 = -0,2x^3 + 4x^2 + 2,8x - 20&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_1 \approx -2,45 \quad (\text{ökonomisch nicht sinnvoll, da } x \geq 0)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x_2 = 2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x_3 \approx 20,45&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Gewinnschwelle&#039;&#039;&#039; beträgt 2 ME.&lt;br /&gt;
* Die &#039;&#039;&#039;Gewinngrenze&#039;&#039;&#039; liegt bei ca. 20,45 ME.&lt;br /&gt;
* Die &#039;&#039;&#039;Gewinnzone&#039;&#039;&#039; ist das Intervall &amp;lt;math&amp;gt;[2; 20,45]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Der &#039;&#039;&#039;ökonomische Definitionsbereich&#039;&#039;&#039; beträgt &amp;lt;math&amp;gt;\mathbb{D}_{\text{ök}} = [0; 20,45]&amp;lt;/math&amp;gt;, da keine weitere Kapazitätsgrenze gegeben ist.&lt;br /&gt;
&lt;br /&gt;
==== Graph der Gewinnfunktion zeichnen ====&lt;br /&gt;
Um den [[Graph|Graphen]] der Gewinnfunktion zu zeichnen, erstellen wir eine Wertetabelle für x-Werte in &amp;lt;math&amp;gt;\mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;&lt;br /&gt;
| 0 || 2 || 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 22&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;math&amp;gt;G(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
| -20 || 0 || 42,4 || 97,6 || 156 || 208 || 244 || 254,4 || 229,6 || 160 || 36 || -152&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispielrechnung für &amp;lt;math&amp;gt;x = 4&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;G(4) = -0,2 \cdot 4^3 + 4 \cdot 4^2 + 2,8 \cdot 4 - 20 = -12,8 + 64 + 11,2 - 20 = 42,4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir zeichnen die berechneten Punkte in ein Koordinatensystem ein und verbinden diese, um den Graphen zu erhalten. Wir können grob ablesen, dass die gewinnmaximale Ausbringungsmenge bei ca. 13,67 ME und das Gewinnmaximum bei knapp 255 GE liegt. &lt;br /&gt;
&lt;br /&gt;
==== Gewinnmaximale Ausbringungsmenge und Gewinnmaximum ermitteln ====&lt;br /&gt;
Das Gewinnmaximum berechnen wir exakt über die Ableitungen der Gewinnfunktion:&lt;br /&gt;
&amp;lt;math&amp;gt;G&#039;(x) = -0,6x^2 + 8x + 2,8&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G&#039;&#039;(x) = -1,2x + 8&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Notwendige Bedingung&#039;&#039;&#039;: &amp;lt;math&amp;gt;G&#039;(x) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;-0,6x^2 + 8x + 2,8 = 0&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;Lösen mit dem [[Taschenrechner_verwenden#Nullstellen_berechnen|Taschenrechner]] liefert:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;x_1 \approx -0,34 \notin \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;x_2 \approx 13,67 \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Hinreichende Bedingung&#039;&#039;&#039;: Überprüfen der zweiten Ableitung&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;G&#039;&#039;(13,67) = -1,2 \cdot 13,67 + 8 \approx -8,4 &amp;lt; 0&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;Da die zweite Ableitung negativ ist, liegt bei &amp;lt;math&amp;gt;x \approx 13,67&amp;lt;/math&amp;gt; ein Hochpunkt (Maximum) vor.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Extremwert (Gewinnmaximum) berechnen&#039;&#039;&#039;: &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;G(13,67) = -0,2 \cdot (13,67)^3 + 4 \cdot (13,67)^2 + 2,8 \cdot 13,67 - 20 \approx 254,85&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Das Gewinnmaximum beträgt ca. 254,85 GE bei einer gewinnmaximalen Ausbringungsmenge von ca. 13,67 ME.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Differentialrechnung]]&lt;br /&gt;
[[Kategorie:Gewinnanalyse]]&lt;br /&gt;
[[Kategorie:FHR_WuV_Mathe]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gewinnfunktion&amp;diff=2896</id>
		<title>Gewinnfunktion</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gewinnfunktion&amp;diff=2896"/>
		<updated>2026-07-08T11:39:30Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit Hilfe einer Gewinnfunktion wird der Gewinn für eine bestimmte Produktionsmenge ermittelt. Der Gewinn berechnet sich durch Erlös minus Kosten.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Eine [[Funktion]] &amp;lt;math&amp;gt;G:\mathbb{D}_{\text{ök}} \rightarrow \mathbb{W}_G&amp;lt;/math&amp;gt;, die jeder Produktionsmenge &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; den Gewinn &amp;lt;math&amp;gt;G(x)&amp;lt;/math&amp;gt; zuordnet, heißt &#039;&#039;&#039;Gewinnfunktion&#039;&#039;&#039;. Dabei ist &amp;lt;math&amp;gt;x \in \mathbb{D}_{\text{ök}}=[0;x_{\text{max}}]&amp;lt;/math&amp;gt;, wobei &amp;lt;math&amp;gt;\mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; der &#039;&#039;&#039;[[Ökonomischer Definitionsbereich|ökonomische Definitionsbereich]]&#039;&#039;&#039; und &amp;lt;math&amp;gt;x_{\text{max}} \in\ \mathbb{R}&amp;lt;/math&amp;gt; die &#039;&#039;&#039;[[Kapazitätsgrenze]]&#039;&#039;&#039; ist. &lt;br /&gt;
&lt;br /&gt;
Die Variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; ist häufig in ME (Mengeneinheiten) und &amp;lt;math&amp;gt;G(x)&amp;lt;/math&amp;gt; in GE (Geldeinheiten) gegeben. Die Gewinnfunktion ist definiert als die Differenz aus der [[Erlösfunktion]] und der [[Kostenfunktion]]: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = E(x) - K(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=aQ0J7uPZDJ0 Video-Einführung zur Gewinnfunktion auf YouTube]&lt;br /&gt;
&lt;br /&gt;
== Gewinnschwelle, Gewinngrenze und Gewinnzone ==&lt;br /&gt;
Es sei &amp;lt;math&amp;gt;G:\mathbb{D}_{\text{ök}} \rightarrow \mathbb{W}_G&amp;lt;/math&amp;gt; eine Gewinnfunktion. &lt;br /&gt;
* Die &#039;&#039;&#039;Gewinnschwelle&#039;&#039;&#039; &amp;lt;math&amp;gt;x_s \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; ist die kleinste Produktionsmenge, für die der Gewinn gleich 0 ist. &lt;br /&gt;
* Die &#039;&#039;&#039;Gewinngrenze&#039;&#039;&#039; &amp;lt;math&amp;gt;x_g \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; ist die größte Produktionsmenge, für die der Gewinn gleich 0 ist. &lt;br /&gt;
* In der &#039;&#039;&#039;Gewinnzone&#039;&#039;&#039;, dem Intervall &amp;lt;math&amp;gt;[x_s; x_g]&amp;lt;/math&amp;gt;, liegen die Produktionsmengen, für die das Unternehmen einen Gewinn erzielt (der Gewinn ist nicht negativ). &lt;br /&gt;
&lt;br /&gt;
Die Gewinnschwelle und die Gewinngrenze werden berechnet, indem man den Erlös den Kosten gleichsetzt (&amp;lt;math&amp;gt;E(x) = K(x)&amp;lt;/math&amp;gt;) oder die Gewinnfunktion gleich null setzt (&amp;lt;math&amp;gt;G(x) = 0&amp;lt;/math&amp;gt;). Sie sind also die [[Nullstelle|Nullstellen]] der Gewinnfunktion. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Break-Even-Point (BEP) für lineare Funktionen ==&lt;br /&gt;
Für eine lineare Gewinnfunktion &amp;lt;math&amp;gt;G:\mathbb{D}_{\text{ök}} \rightarrow \mathbb{W}_G&amp;lt;/math&amp;gt; mit der Gewinnschwelle &amp;lt;math&amp;gt;x_s \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; heißt der Punkt &amp;lt;math&amp;gt;BEP(x_s | E(x_s))&amp;lt;/math&amp;gt; der &#039;&#039;&#039;Break-Even-Point&#039;&#039;&#039;. Dies ist der Schnittpunkt von Erlös- und Kostenfunktion.&lt;br /&gt;
&lt;br /&gt;
== Gewinnmaximum ==&lt;br /&gt;
Es sei &amp;lt;math&amp;gt;G:\mathbb{D}_{\text{ök}} \rightarrow \mathbb{W}_G&amp;lt;/math&amp;gt; eine Gewinnfunktion. Das [[Extremwert#Definition|globale Maximum]] &amp;lt;math&amp;gt;G(x_0)&amp;lt;/math&amp;gt; von &amp;lt;math&amp;gt;G&amp;lt;/math&amp;gt; heißt &#039;&#039;&#039;Gewinnmaximum&#039;&#039;&#039;. Die dazugehörige [[Extremwert#Definition|Maximalstelle]] &amp;lt;math&amp;gt;x_0 \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt; heißt &#039;&#039;&#039;gewinnmaximale Ausbringungsmenge&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Eine lineare Gewinnfunktion herleiten und analysieren ===&lt;br /&gt;
Die Produktion von Fahrrädern verursacht fixe Kosten von 2700 €. Die [[Kurzfristige_Preisuntergrenze#Variable_Stückkostenfunktion|variablen Stückkosten]] betragen 30 € pro Fahrrad. Die produzierten Fahrräder werden für jeweils 300 € pro Stück verkauft. Die [[Kapazitätsgrenze]] beträgt 40 Stück. Wir analysieren im Folgenden die Gewinnsituation.&lt;br /&gt;
&lt;br /&gt;
==== Gewinnfunktion herleiten ====&lt;br /&gt;
Für die [[Kostenfunktion]] gilt &amp;lt;math&amp;gt;K(x) = 30x + 2700&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;K_v = 30&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;K_f = 2700&amp;lt;/math&amp;gt;. &lt;br /&gt;
Weil der Erlös pro Einheit 300 € beträgt, ist &amp;lt;math&amp;gt;E_v(x) = 300&amp;lt;/math&amp;gt; und die [[Erlösfunktion]] ist &amp;lt;math&amp;gt;E(x) = 300x&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Die Gewinnfunktion wird berechnet durch:&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = E(x) - K(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = 300x - (30x + 2700)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = 270x - 2700&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Gewinn berechnen ====&lt;br /&gt;
Der Gewinn für die Auslastung an der Kapazitätsgrenze (&amp;lt;math&amp;gt;x = 40&amp;lt;/math&amp;gt;) beträgt:&lt;br /&gt;
&amp;lt;math&amp;gt;G(40) = 270 \cdot 40 - 2700 = 10800 - 2700 = 8100&amp;lt;/math&amp;gt; €&lt;br /&gt;
&lt;br /&gt;
==== Gewinnschwelle berechnen ====&lt;br /&gt;
Wir setzen die Gewinnfunktion gleich null:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;270x - 2700 = 0 \quad | +2700&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;270x = 2700 \quad | :270&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x = 10&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gewinnschwelle beträgt &amp;lt;math&amp;gt;x_s = 10&amp;lt;/math&amp;gt; Fahrräder. &lt;br /&gt;
&lt;br /&gt;
Alternativ können wir die [[Erlösfunktion]] und die [[Kostenfunktion]] gleichsetzen, um die Gewinnschwelle zu berechnen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E(x) = K(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;300x = 30x + 2700 \quad | -30x&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;270x = 2700 \quad | :270&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x = 10&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Break-Even-Point berechnen ====&lt;br /&gt;
Um den entsprechenden Erlös/Kosten-Wert zu erhalten, setzen wir die Gewinnschwelle in die Erlösfunktion ein:&lt;br /&gt;
&amp;lt;math&amp;gt;E(10) = 300 \cdot 10 = 3000&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Break-Even-Point ist damit &amp;lt;math&amp;gt;BEP(10 | 3000)&amp;lt;/math&amp;gt;. Werden 10 ME produziert, sind die Kosten und der Erlös gleich hoch und betragen jeweils 3000 €.&lt;br /&gt;
&lt;br /&gt;
=== Eine ganzrationale Gewinnfunktion dritten Grades herleiten und analysieren ===&lt;br /&gt;
Die variable [[Kostenfunktion]] für ein Produkt ist durch &amp;lt;math&amp;gt;K_v(x) = 0,2x^3 - 4x^2 + 30x&amp;lt;/math&amp;gt; gegeben. Die [[Kostenfunktion#Definition|Fixkosten]] betragen 20 GE. Der [[Erlösfunktion#Definition|Verkaufspreis]] pro Stück beträgt 32,8 GE.&lt;br /&gt;
&lt;br /&gt;
==== Gewinnfunktion herleiten ====&lt;br /&gt;
Die [[Erlösfunktion]], die [[Kostenfunktion]] und die Gewinnfunktion berechnen sich wie folgt: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;E(x) = 32,8x&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;K(x) = K_v(x) + K_f = 0,2x^3 - 4x^2 + 30x + 20&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = E(x) - K(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = 32,8x - (0,2x^3 - 4x^2 + 30x + 20)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = -0,2x^3 + 4x^2 + 32,8x - 30x - 20&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G(x) = -0,2x^3 + 4x^2 + 2,8x - 20&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Gewinnschwelle, Gewinngrenze und Gewinnzone berechnen ====&lt;br /&gt;
[[Datei:GewinnanalyseGraphGewinnfunktion.png|mini|Graph der Gewinnfunktion &amp;lt;math&amp;gt;G(x) = -0,2x^3 + 4x^2 + 2,8x - 20&amp;lt;/math&amp;gt;]]&lt;br /&gt;
Wir ermitteln Gewinnschwelle, Gewinngrenze und Gewinnzone, indem wir die [[Nullstelle|Nullstellen]] der berechneten Gewinnfunktion mit dem [[Taschenrechner_verwenden#Nullstellen_berechnen|Taschenrechner]] bestimmen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;0 = -0,2x^3 + 4x^2 + 2,8x - 20&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x_1 \approx -2,45 \quad (\text{ökonomisch nicht sinnvoll, da } x \geq 0)&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x_2 = 2&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;x_3 \approx 20,45&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Gewinnschwelle&#039;&#039;&#039; beträgt 2 ME.&lt;br /&gt;
* Die &#039;&#039;&#039;Gewinngrenze&#039;&#039;&#039; liegt bei ca. 20,45 ME.&lt;br /&gt;
* Die &#039;&#039;&#039;Gewinnzone&#039;&#039;&#039; ist das Intervall &amp;lt;math&amp;gt;[2; 20,45]&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Der &#039;&#039;&#039;ökonomische Definitionsbereich&#039;&#039;&#039; beträgt &amp;lt;math&amp;gt;\mathbb{D}_{\text{ök}} = [0; 20,45]&amp;lt;/math&amp;gt;, da keine weitere Kapazitätsgrenze gegeben ist.&lt;br /&gt;
&lt;br /&gt;
==== Graph der Gewinnfunktion zeichnen ====&lt;br /&gt;
Um den [[Graph|Graphen]] der Gewinnfunktion zu zeichnen, erstellen wir eine Wertetabelle für x-Werte in &amp;lt;math&amp;gt;\mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;&lt;br /&gt;
| 0 || 2 || 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 22&lt;br /&gt;
|-&lt;br /&gt;
! &amp;lt;math&amp;gt;G(x)&amp;lt;/math&amp;gt;&lt;br /&gt;
| -20 || 0 || 42,4 || 97,6 || 156 || 208 || 244 || 254,4 || 229,6 || 160 || 36 || -160&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Beispielrechnung für &amp;lt;math&amp;gt;x = 4&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;G(4) = -0,2 \cdot 4^3 + 4 \cdot 4^2 + 2,8 \cdot 4 - 20 = -12,8 + 64 + 11,2 - 20 = 42,4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir zeichnen die berechneten Punkte in ein Koordinatensystem ein und verbinden diese, um den Graphen zu erhalten. Wir können grob ablesen, dass die gewinnmaximale Ausbringungsmenge bei ca. 13,67 ME und das Gewinnmaximum bei ca. 253 GE liegt. &lt;br /&gt;
&lt;br /&gt;
==== Gewinnmaximale Ausbringungsmenge und Gewinnmaximum ermitteln ====&lt;br /&gt;
Das Gewinnmaximum berechnen wir exakt über die Ableitungen der Gewinnfunktion:&lt;br /&gt;
&amp;lt;math&amp;gt;G&#039;(x) = -0,6x^2 + 8x + 2,8&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;G&#039;&#039;(x) = -1,2x + 8&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Notwendige Bedingung&#039;&#039;&#039;: &amp;lt;math&amp;gt;G&#039;(x) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;-0,6x^2 + 8x + 2,8 = 0&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;Lösen mit dem [[Taschenrechner_verwenden#Nullstellen_berechnen|Taschenrechner]] liefert:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;x_1 \approx -0,34 \notin \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;x_2 \approx 13,67 \in \mathbb{D}_{\text{ök}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Hinreichende Bedingung&#039;&#039;&#039;: Überprüfen der zweiten Ableitung&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;G&#039;&#039;(13,67) = -1,2 \cdot 13,67 + 8 \approx -8,4 &amp;lt; 0&amp;lt;/math&amp;gt; &lt;br /&gt;
&amp;lt;br&amp;gt;Da die zweite Ableitung negativ ist, liegt bei &amp;lt;math&amp;gt;x \approx 13,67&amp;lt;/math&amp;gt; ein Hochpunkt (Maximum) vor.&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Extremwert (Gewinnmaximum) berechnen&#039;&#039;&#039;: &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;math&amp;gt;G(13,67) = -0,2 \cdot 13,67^3 + 4 \cdot 13,67^2 + 2,8 \cdot 13,67 - 20 \approx 253,30&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;Das Gewinnmaximum beträgt ca. 253,30 GE bei einer gewinnmaximalen Ausbringungsmenge von ca. 13,67 ME.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Differentialrechnung]]&lt;br /&gt;
[[Kategorie:Gewinnanalyse]]&lt;br /&gt;
[[Kategorie:FHR_WuV_Mathe]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2895</id>
		<title>Sequenzdiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2895"/>
		<updated>2026-06-05T05:36:17Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[UML]] kennt insgesamt 14 Diagrammtypen. Ein Sequenzdiagramm ist ein Verhaltensdiagramm der UML. Das Wort Sequenz beschreibt laut Duden eine Reihenfolge oder kurz Folge von Dingen. In Sequenzdiagrammen wird eine zeitliche Folge von Kommunikationsbeziehungen zwischen [[Objekt|Objekten]] grafisch dargestellt. Eine Kommunikationsbeziehung ist das Senden einer Nachricht von einem [[Objekt]] zu einem anderen. Denn [[Objekt|Objekte]] tauschen Nachrichten aus, um miteinander zu kommunizieren (Heide Balzert: Lehrbuch der Objektmodellierung. Analyse und Entwurf S. 71 ff).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was zeigt ein Sequenzdiagramm?&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Interaktionen:&#039;&#039;&#039; Es visualisiert, wie [[Objekt|Objekte]] miteinander kommunizieren und in welcher Reihenfolge Nachrichten ausgetauscht werden.&lt;br /&gt;
* &#039;&#039;&#039;Zeitliche Abfolge:&#039;&#039;&#039; Die vertikale Achse repräsentiert die Zeit, sodass man den Ablauf der Interaktionen gut nachvollziehen kann.&lt;br /&gt;
* &#039;&#039;&#039;Objekte:&#039;&#039;&#039; Jedes [[Objekt]] wird durch eine Lebenslinie repräsentiert.&lt;br /&gt;
* &#039;&#039;&#039;Nachrichten:&#039;&#039;&#039; Nachrichten, die zwischen [[Objekt|Objekten]] gesendet werden, sind als Pfeile dargestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist der Hauptzweck?&#039;&#039;&#039;&lt;br /&gt;
Der Hauptzweck eines Sequenzdiagramms besteht darin, den Ablauf von Prozessen darzustellen, nicht die konkreten Werte, die bei der Ausführung von [[Methode|Methoden]] zurückgegeben werden.&lt;br /&gt;
Abstraktion: [[Methode#Rückgabeparameter|Rückgabeparameter]] sind oft implementationsspezifische Details, die für das Verständnis des allgemeinen Ablaufs nicht immer relevant sind. Sie können dargestellt werden, falls relevant, müssen es aber nicht.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|-ZswbawGWzg}}&lt;br /&gt;
&lt;br /&gt;
== Grundsätzlicher Aufbau ==&lt;br /&gt;
Ein Sequenzdiagramm besitzt zwei Dimensionen: Die Vertikale repräsentiert die Zeit (von oben nach unten verlaufend), auf der Horizontalen werden die beteiligten Teilnehmer (meist [[Objekt|Objekte]] oder Akteure) angeordnet. Die zugehörigen [[Klasse|Klassen]] werden mit aufgeführt. Die Lebensdauer eines jeden [[Objekt|Objektes]] wird durch eine gestrichelte Linie – die sogenannte Lebenslinie – dargestellt. Diese Linie repräsentiert die Existenz eines Objekts während einer bestimmten Zeit.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Schematische Darstellung Sequenzdiagramm.png|mini|Schematische Darstellung der Elemente eines Sequenzdiagramms]]&lt;br /&gt;
[[Datei:Beschriftetes Beispiel Sequenzdiagramm.png|mini|Beschriftetes Beispiel mit Akteur, Lebenslinien und Nachrichten]]&lt;br /&gt;
&lt;br /&gt;
=== Objekte und Lebenslinien ===&lt;br /&gt;
Die [[Objekt|Objekte]] (bzw. Teilnehmer) werden am oberen Rand durch Rechtecke visualisiert. Im Rechteck steht typischerweise der [[Klasse]]nname. Falls erforderlich, wird auch der spezifische Objektname aufgeführt. Objektname und Klassenname werden durch einen Doppelpunkt getrennt und zur Kennzeichnung als Instanz oft unterstrichen (zum Beispiel &amp;lt;u&amp;gt;&amp;lt;code&amp;gt;Bestellung: Mail&amp;lt;/code&amp;gt;&amp;lt;/u&amp;gt; oder einfach &amp;lt;code&amp;gt;:Mail&amp;lt;/code&amp;gt; für ein anonymes Objekt). Akteure (wie z. B. ein Nutzer) werden als Strichmännchen dargestellt.&lt;br /&gt;
&lt;br /&gt;
Von diesen Teilnehmer-Symbolen gehen die senkrechten Lebenslinien aus. Sie werden durch gestrichelte Linien dargestellt. Die Nachrichten werden durch waagerechte Pfeile zwischen den Lebenslinien modelliert. Auf diesen Pfeilen werden die Nachrichtennamen in der Form &amp;lt;code&amp;gt;Nachricht(Argumente)&amp;lt;/code&amp;gt; notiert. Die Angabe von Argumenten ist optional.&lt;br /&gt;
&lt;br /&gt;
=== Nachrichten ===&lt;br /&gt;
Durch eine Nachricht wird meist eine [[Methode]] des Empfängers aufgerufen. Hier kann auch die Übergabe von [[Methode#Eingabeparameter|Eingabeparametern]] kenntlich gemacht werden. Es wird prinzipiell zwischen synchronen und asynchronen Nachrichten unterschieden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Nachrichten im Sequenzdiagramm.png|mini|Darstellung gefundener und verlorener Meldungen]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchrone Nachrichten:&#039;&#039;&#039; Bei einem synchronen Aufruf blockiert der Sender (der aufrufende Kommunikationspartner pausiert die Programmfortführung), bis er die zugehörige Antwort vom Empfänger erhalten hat. Synchrone Nachrichten werden durch einen Pfeil mit &#039;&#039;&#039;gefüllter, geschlossener Spitze&#039;&#039;&#039; dargestellt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Synchrone und Asychrone Nachrichten.png|mini|Vergleich: Synchrone vs. Asynchrone Operationsaufrufe]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Asynchrone Nachrichten:&#039;&#039;&#039; Hierbei sendet der Sender die Nachricht und führt sein Programm unmittelbar fort, ohne auf eine Antwort zu warten. Trifft später eine Antwort ein, wird sie vom Sender verarbeitet. Asynchrone Nachrichten werden durch einen Pfeil mit &#039;&#039;&#039;offener Spitze&#039;&#039;&#039; (Linienpfeil) dargestellt.&lt;br /&gt;
&lt;br /&gt;
=== Antworten ===&lt;br /&gt;
Die explizite Darstellung von Antworten ist optional. Antworten auf vorherige Nachrichten (insbesondere bei synchronen Aufrufen) werden durch eine &#039;&#039;&#039;gestrichelte Linie mit offener Pfeilspitze&#039;&#039;&#039; dargestellt.&lt;br /&gt;
&lt;br /&gt;
Das Erzeugen und Entfernen von Objekten kann in Sequenzdiagrammen ebenfalls modelliert werden:&lt;br /&gt;
* &#039;&#039;&#039;Objekterzeugung:&#039;&#039;&#039; Die [[Konstruktor|Konstruktion]] (Instanziierung) eines neuen Objektes wird durch eine Nachricht (oft mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;create&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;erzeugen&amp;lt;/code&amp;gt; beschriftet) angezeigt, deren Pfeilspitze exakt auf den Kopf des neu zu erzeugenden Objektsymbols trifft.&lt;br /&gt;
* &#039;&#039;&#039;Dekonstruktion:&#039;&#039;&#039; Die Destruktion bzw. Zerstörung eines Objektes wird durch ein großes Kreuz (Stopp-Symbol) am Ende der jeweiligen Lebenslinie angezeigt.&lt;br /&gt;
&lt;br /&gt;
Die Entscheidung, ob Antworten detailliert eingezeichnet werden, hängt vom Zweck des Diagramms ab. Oft werden sie weggelassen, wenn der Rückfluss durch den Methodenaufruf implizit klar ist, um das Diagramm übersichtlich zu halten.&lt;br /&gt;
&lt;br /&gt;
=== Statische Aufrufe ===&lt;br /&gt;
Statische (static) Methodenaufrufe können dargestellt werden, indem die Nachricht an die [[Klasse]] selbst und nicht an eine spezifische [[Instanz|Objektinstanz]] gesendet wird.&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung (Ausführungspezifikation) ===&lt;br /&gt;
Die Überlagerung der gestrichelten Lebenslinien durch breite, senkrechte Rechtecke (Balken) symbolisiert die Aktivierung. Dieser sogenannte Aktivierungsbalken zeigt an, über welchen Zeitraum das Objekt aktiv an der Interaktion beteiligt ist, also den Kontrollfluss des Programms innehat oder auf die Rückkehr eines synchronen Aufrufs wartet.&lt;br /&gt;
&lt;br /&gt;
=== Kontrollstrukturen (Kombinierte Fragmente) ===&lt;br /&gt;
[[Datei:Bespiel Kontrollstrukturen im Sequenzdiagramm.png|mini|Kombinierte Fragmente für Alternativen (alt) und Schleifen (loop)]]&lt;br /&gt;
Auch [[Kontrollstruktur|Kontrollstrukturen]] lassen sich in modernen Sequenzdiagrammen mithilfe sogenannter &amp;quot;Kombinierter Fragmente&amp;quot; darstellen. Diese werden als Rahmen mit einem Operator-Schlüsselwort in der oberen linken Ecke gezeichnet.&lt;br /&gt;
&lt;br /&gt;
==== Verzweigung (alt) ====&lt;br /&gt;
Der mit &amp;lt;code&amp;gt;alt&amp;lt;/code&amp;gt; (für alternative) markierte Block beschreibt eine Alternative ([[Verzweigung]]). Der Rahmen wird durch gestrichelte Linien in sogenannte Interaktionsoperanden (Teilbereiche) unterteilt. Jeder Bereich ist mit einer Bedingung (Guard) in eckigen Klammern versehen (z. B. &amp;lt;code&amp;gt;[pwd ok]&amp;lt;/code&amp;gt;). Es wird nur derjenige Bereich ausgeführt, dessen Bedingung zum Ausführungszeitpunkt wahr (true) ist. Der unterste Bereich wird oft mit &amp;lt;code&amp;gt;[else]&amp;lt;/code&amp;gt; markiert.&lt;br /&gt;
&lt;br /&gt;
==== Schleife (loop) ====&lt;br /&gt;
Der Teil des Sequenzdiagramms, der sich in einem Rahmen mit dem Operator &amp;lt;code&amp;gt;loop&amp;lt;/code&amp;gt; befindet, wird wiederholt ausgeführt. Die Ausführungsbedingung (Schleifenbedingung) steht in eckigen Klammern (z. B. &amp;lt;code&amp;gt;[pwd != ok]&amp;lt;/code&amp;gt;). Der Inhalt des Rahmens wird so lange wiederholt, wie diese Bedingung wahr ist.&lt;br /&gt;
&lt;br /&gt;
== Zeitliche Ordnung der Ereignisse ==&lt;br /&gt;
Ein Sequenzdiagramm beschreibt das Verhalten eines Systems, indem es die zeitliche Ordnung von Ereignisauftritten spezifiziert. Nicht der präzise, absolute Zeitpunkt, wann ein Ereignis auftritt, ist dabei ausschlaggebend, sondern welche Ereignisse zwingend vor und welche nach einem bestimmten Ereignisauftritt stattfinden müssen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zeitliche Eindordnung Nachrichten im Sequenzdiagramm.png|mini|Zeitliche Einordnung und Ordnungsbeziehungen von Ereignisauftritten]]&lt;br /&gt;
&lt;br /&gt;
Das obere Diagramm in der Abbildung rechts zeigt ein Sequenzdiagramm mit zwei synchronen Operationsaufrufen (m1 und m2). Blau eingekreist sind die vier maßgeblichen Ereignisauftritte:&lt;br /&gt;
* S1 und E1 stehen für das Sende- und das Empfangs-Ereignis der Nachricht m1.&lt;br /&gt;
* S2 und E2 stehen für die entsprechenden Ereignisse der Nachricht m2.&lt;br /&gt;
&lt;br /&gt;
Die Zeitachse verläuft in einem Sequenzdiagramm von oben nach unten, stellt jedoch keine absolute Zeitmetrik dar. Zu den Ereignisauftritten in diesem synchronen Beispiel lassen sich folgende feste Aussagen treffen:&lt;br /&gt;
* E1 tritt nach S1 auf, da das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommen muss. Analog tritt E2 stets nach S2 auf.&lt;br /&gt;
* S2 tritt nach S1 auf, weil S2 auf der Lebenslinie von Objekt A unterhalb von S1 eingezeichnet ist.&lt;br /&gt;
&lt;br /&gt;
Alles in allem modelliert dieses erste Sequenzdiagramm also eine Interaktion, die durch exakt eine zulässige zeitliche Abfolge von Ereignisauftritten spezifiziert ist: &amp;lt;code&amp;gt;&amp;lt;S1, E1, S2, E2&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das mittlere Sequenzdiagramm unterscheidet sich vom vorangehenden dadurch, dass statt zwei synchronen nun zwei &#039;&#039;&#039;asynchrone&#039;&#039;&#039; Nachrichten (offene Pfeilspitzen) dargestellt sind. Hier gilt weiterhin zwingend, dass E1 nach S1 und E2 nach S2 auftritt. Da es sich jedoch um asynchrone Kommunikation handelt (Objekt A wartet nach dem Senden von m1 nicht), könnte das Empfangsereignis E1 nicht nur vor S2 stattfinden, sondern auch erst nach S2 oder sogar erst nach E2.&lt;br /&gt;
&lt;br /&gt;
Das asynchrone Sequenzdiagramm spezifiziert somit eine Interaktion, in der drei verschiedene Abfolgen von Ereignisauftritten logisch zulässig sind:&lt;br /&gt;
1. &amp;lt;code&amp;gt;&amp;lt;S1, E1, S2, E2&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
2. &amp;lt;code&amp;gt;&amp;lt;S1, S2, E1, E2&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
3. &amp;lt;code&amp;gt;&amp;lt;S1, S2, E2, E1&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls erforderlich, kann man die zulässigen Abfolgen von Ereignisauftritten in asynchronen Systemen mit zusätzlichen &#039;&#039;&#039;Ordnungsbeziehungen&#039;&#039;&#039; einschränken (unterstes Diagramm). Eine Ordnungsbeziehung (dargestellt als gepunktete Linie mit Pfeil) repräsentiert keine übertragene Nachricht zwischen den Lebenslinien, sondern modelliert die zwingende Einschränkung, dass ein Ereignisauftritt zwingend nach einem bestimmten anderen stattfinden muss.&lt;br /&gt;
Im Beispiel modelliert die Ordnungsbeziehung, dass das Sendeereignis S2 immer erst nach dem Empfangsereignis E1 erfolgen darf.&lt;br /&gt;
&lt;br /&gt;
Durch diese zusätzliche Einschränkung stellt das unterste Sequenzdiagramm, trotz der asynchronen Nachrichten, erneut eine Interaktion mit genau einer einzig zulässigen Folge dar: &amp;lt;code&amp;gt;&amp;lt;S1, E1, S2, E2&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2894</id>
		<title>Sequenzdiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2894"/>
		<updated>2026-06-05T05:29:24Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Zeitliche Ordnung der Ereignisse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[UML]] kennt insgesamt 14 Diagrammtypen. Ein Sequenzdiagramm ist ein Diagrammtyp der UML. Das Wort Sequenz beschreibt laut Duden eine Reihenfolge oder kurz Folge von Dingen. In Sequenzdiagrammen wird eine zeitliche Folge von Kommunikationsbeziehungen zwischen [[Objekt|Objekten]] grafisch dargestellt. Eine Kommunikationsbeziehung ist das Senden einer Nachricht von einem [[Objekt]] zu einem anderen. Denn [[Objekt|Objekte]] tauschen Nachrichten aus, um miteinander zu kommunizieren (Heide Balzert: Lehrbuch der Objektmodellierung. Analyse und Entwurf S. 71 ff).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was zeigt ein Sequenzdiagramm?&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Interaktionen:&#039;&#039;&#039; Es visualisiert, wie [[Objekt|Objekte]] miteinander kommunizieren und in welcher Reihenfolge Nachrichten ausgetauscht werden.&lt;br /&gt;
* &#039;&#039;&#039;Zeitliche Abfolge:&#039;&#039;&#039; Die vertikale Achse repräsentiert die Zeit, sodass man den Ablauf der Interaktionen gut nachvollziehen kann.&lt;br /&gt;
* &#039;&#039;&#039;Objekte:&#039;&#039;&#039; Jedes [[Objekt]] wird als eine Lebenslinie dargestellt.&lt;br /&gt;
* &#039;&#039;&#039;Nachrichten:&#039;&#039;&#039; Nachrichten, die zwischen [[Objekt|Objekten]] gesendet werden, sind als Pfeile dargestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist der Hauptzweck?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Hauptzweck eines Sequenzdiagramms besteht darin, den Ablauf von Prozessen darzustellen, nicht die konkreten Werte, die bei der Ausführung von [[Methode|Methoden]] zurückgegeben werden.&lt;br /&gt;
Abstraktion: [[Methode#Rückgabeparameter|Rückgabeparameter]] sind oft implementationsspezifische Details, die für das Verständnis des allgemeinen Ablaufs nicht immer relevant sind. Sie können dargestellt werden, falls relevant, müssen es aber nicht.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|-ZswbawGWzg}}&lt;br /&gt;
&lt;br /&gt;
== Grundsätzlicher Aufbau ==&lt;br /&gt;
Ein Sequenzdiagramm besitzt zwei Dimensionen: Die Vertikale repräsentiert die Zeit, auf der Horizontalen werden die [[Objekt|Objekte]] eingetragen. Die zugehörigen [[Klasse|Klassen]] werden mit aufgeführt. Die Lebensdauer eines jeden [[Objekt|Objektes]] wird durch eine gestrichelte Linie – die Lebenslinie oder Objektlinie – dargestellt. Diese Linie repräsentiert die Existenz eines Objekts während einer bestimmten Zeit. &lt;br /&gt;
&lt;br /&gt;
[[Datei:Schematische Darstellung Sequenzdiagramm.png|mini]]&lt;br /&gt;
[[Datei:Beschriftetes Beispiel Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
=== Objekte ===&lt;br /&gt;
Die [[Objekt|Objekte]] werden durch Rechtecke visualisiert. Im [[Instanz|Objekt]] steht der zugehörige [[Klasse]]nname (zum Beispiel Mail). Falls erforderlich, wird auch der Objektname (zum Beispiel Bestellung) aufgeführt. Objektname und Klassenname werden durch einen Doppelpunkt getrennt (zum Beispiel Bestellung: Mail). &lt;br /&gt;
&lt;br /&gt;
Von den Objekten gehen die senkrechten Lebenslinien aus. Sie werden durch gestrichelte Linien dargestellt. Die Nachrichten werden durch waagerechte Pfeile zwischen den Objektlebenslinien beschrieben. Auf diesen Pfeilen werden die Nachrichtennamen in der Form: Nachricht(Argumente) notiert. Die Angabe von Argumenten ist optional.&lt;br /&gt;
&lt;br /&gt;
=== Nachrichten ===&lt;br /&gt;
Durch eine Nachricht wird meist eine [[Methode]] des Empfängers aufgerufen. Hier kann auch die Übergabe von [[Methode#Eingabeparameter|Eingabeparametern]] kenntlich gemacht werden. Es wird zwischen synchronen und asynchronen Nachrichten unterschieden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Nachrichten im Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchrone Nachrichten:&#039;&#039;&#039; Dabei pausiert der aufrufende Kommunikationspartner die Programmfortführung, bis er eine Antwort erhält. Synchrone Nachrichten werden durch einen Pfeil mit gefüllter Spitze dargestellt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Synchrone und Asychrone Nachrichten.png|mini]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Asynchrone Nachrichten:&#039;&#039;&#039; Dabei führt der Sender sein Programm fort. Trifft die Antwort ein, wird der Programmfluss unterbrochen und die Antwort verarbeitet. Sie werden durch einen Pfeil mit offener Spitze dargestellt. &lt;br /&gt;
&lt;br /&gt;
=== Antworten ===&lt;br /&gt;
Die Darstellung der Antworten ist optional. Antworten werden durch eine gestrichelte Linie mit offener Pfeilspitze dargestellt. Das Erzeugen und Entfernen von Objekten kann in Sequenzdiagrammen ebenfalls dargestellt werden. Die [[Konstruktor|Konstruktion]] eines neuen Objektes wird durch eine Nachricht, die auf den Kopf des Objektsymbols trifft, angezeigt. &lt;br /&gt;
&lt;br /&gt;
Die Entscheidung, ob Antworten in einem Sequenzdiagramm dargestellt werden, ist eine gestalterische Entscheidung, die vom jeweiligen Anwendungsfall abhängt. Es gibt keine strikten Regeln, sondern vielmehr Richtlinien, die es ermöglichen, klare und aussagekräftige Diagramme zu erstellen. &lt;br /&gt;
&lt;br /&gt;
=== Statische Aufrufe ===&lt;br /&gt;
Statische (static) Methodenaufrufe werden mit unterstrichenem Methodennamen dargestellt. Der Aufruf erfolgt dann auf einer [[Klasse]] und nicht auf einem [[Objekt]]. &lt;br /&gt;
&lt;br /&gt;
=== Dekonstruktion ===&lt;br /&gt;
Die Destruktion bzw. Zerstörung eines Objektes wird durch ein Kreuz am Ende der Lebenslinie angezeigt.&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
Die Überlagerung der gestrichelten Lebenslinien durch breite, senkrechte Balken symbolisiert die Aktivierung, d. h. es zeigt, welches Objekt gerade aktiv ist und somit für den Kontrollfluss des Programms verantwortlich ist.&lt;br /&gt;
&lt;br /&gt;
=== Kontrollstrukturen ===&lt;br /&gt;
[[Datei:Bespiel Kontrollstrukturen im Sequenzdiagramm.png|mini]]&lt;br /&gt;
Auch [[Kontrollstruktur|Kontrollstrukturen]] lassen sich durch ein Sequenzdiagramm darstellen (siehe Zeichnung). &lt;br /&gt;
&lt;br /&gt;
==== Verzweigung ====&lt;br /&gt;
Der mit alt (für alternative) markierte Block beschreibt eine Alternative ([[Verzweigung]]). Ist die Bedingung [b=wahr] erfüllt, wird der Bereich oberhalb der gestrichelten Linie in dem alt-Block ausgeführt. Im else-Fall wird der Bereich unterhalb der gestrichelten Linie ausgeführt.&lt;br /&gt;
&lt;br /&gt;
==== Schleife ====&lt;br /&gt;
Der Teil des Sequenzdiagramms, der sich im Kasten mit dem Titel [[Schleife|loop]] befindet, wird solange ausgeführt, solange die Ausführbedingung in den eckigen Klammern [] wahr ist.&lt;br /&gt;
&lt;br /&gt;
== Zeitliche Ordnung der Ereignisse ==&lt;br /&gt;
Ein Sequenzdiagramm beschreibt das Verhalten eines Systems, indem es die zeitliche Ordnung von Ereignisauftritten spezifiziert. Nicht der präzise Zeitpunkt, wann ein Ereignis auftritt, ist dabei ausschlaggebend, sondern welche Ereignisse vor und welche nach einem bestimmten Ereignisauftritt auftreten müssen (Quelle: https://de.wikipedia.org/wiki/Sequenzdiagramm).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zeitliche Eindordnung Nachrichten im Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
Die Abbildung rechts zeigt ein Sequenzdiagramm mit zwei synchronen Operationsaufrufen. Blau eingekreist sind die vier Ereignisauftritte. S1 und E1 stehen für das Sende- und das Empfangs-Nachricht-Ereignis für die Nachricht m1, S2 und E2 für die entsprechenden Ereignisse, die mit m2 in Verbindung stehen. Die Zeitachse läuft in einem Sequenzdiagramm von oben nach unten, sollte aber nicht als absolute Zeit verstanden werden.&lt;br /&gt;
&lt;br /&gt;
Zu den Ereignisauftritten in diesem Sequenzdiagramm lassen sich folgende Aussagen machen:&lt;br /&gt;
* E1 tritt nach S1 auf, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Analog tritt E2 nach S2 auf.&lt;br /&gt;
* S2 tritt nach S1 auf, weil S2 unter S1 gezeichnet ist.&lt;br /&gt;
&lt;br /&gt;
Alles in allem modelliert dieses Sequenzdiagramm also eine Interaktion, die durch genau eine Folge von Ereignisauftritten spezifiziert ist: &amp;lt;S1, E1, S2, E2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das Sequenzdiagramm in der Abbildung rechts unterscheidet sich nur geringfügig vom vorangehenden Sequenzdiagramm. Der einzige Unterschied besteht darin, dass statt zwei synchronen zwei asynchrone Nachrichten dargestellt sind. Hier gilt weiterhin, dass E1 nach S1 und E2 nach S2 auftritt, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Weil es sich um asynchrone Kommunikation handelt, könnte E1 hier jedoch nicht nur vor, sondern auch erst nach S2 oder E2 vorkommen.&lt;br /&gt;
&lt;br /&gt;
Das Sequenzdiagramm spezifiziert also eine Interaktion, in der drei Folgen von Ereignisauftritten zulässig sind: &amp;lt;S1, E1, S2, E2&amp;gt;, &amp;lt;S1, S2, E1, E2&amp;gt; und &amp;lt;S1, S2, E2, E1&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Falls nötig, kann man die zulässigen Abfolgen von Ereignisauftritten mit zusätzlichen Ordnungsbeziehungen einschränken. Eine Ordnungsbeziehung spezifiziert nicht eine Nachricht, die zwischen zwei Lebenslinien ausgetauscht wird, sondern die Tatsache, dass ein Ereignisauftritt nach einem anderen Ereignisauftritt vorkommen muss. Im Beispiel modelliert die Ordnungsbeziehung, dass S2 immer nach E1 erfolgt.&lt;br /&gt;
&lt;br /&gt;
Mit dieser zusätzlichen Einschränkung stellt dieses Sequenzdiagramm erneut eine Interaktion mit genau einer zulässigen Folge dar: &amp;lt;S1, E1, S2, E2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2893</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2893"/>
		<updated>2026-05-30T06:26:44Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/GoFBcIUYvoY?si=l8gBziqVW2u_iCMr&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Eine Münze wird &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich.&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,077 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es extrem ungewöhnlich (Wahrscheinlichkeit von ca. 4 %), höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich. &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,184 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe sind 2 Lampen ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 2) \approx 0,411 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis im Annahmebereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es mit einer Wahrscheinlichkeit von ca. 41,1 % überhaupt nicht ungewöhnlich, höchstens 2 ausgefalle Lampen zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2892</id>
		<title>Sequenzdiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Sequenzdiagramm&amp;diff=2892"/>
		<updated>2026-05-27T10:27:53Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[UML]] kennt insgesamt 14 Diagrammtypen. Ein Sequenzdiagramm ist ein Diagrammtyp der UML. Das Wort Sequenz beschreibt laut Duden eine Reihenfolge oder kurz Folge von Dingen. In Sequenzdiagrammen wird eine zeitliche Folge von Kommunikationsbeziehungen zwischen [[Objekt|Objekten]] grafisch dargestellt. Eine Kommunikationsbeziehung ist das Senden einer Nachricht von einem [[Objekt]] zu einem anderen. Denn [[Objekt|Objekte]] tauschen Nachrichten aus, um miteinander zu kommunizieren (Heide Balzert: Lehrbuch der Objektmodellierung. Analyse und Entwurf S. 71 ff).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was zeigt ein Sequenzdiagramm?&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Interaktionen:&#039;&#039;&#039; Es visualisiert, wie [[Objekt|Objekte]] miteinander kommunizieren und in welcher Reihenfolge Nachrichten ausgetauscht werden.&lt;br /&gt;
* &#039;&#039;&#039;Zeitliche Abfolge:&#039;&#039;&#039; Die vertikale Achse repräsentiert die Zeit, sodass man den Ablauf der Interaktionen gut nachvollziehen kann.&lt;br /&gt;
* &#039;&#039;&#039;Objekte:&#039;&#039;&#039; Jedes [[Objekt]] wird als eine Lebenslinie dargestellt.&lt;br /&gt;
* &#039;&#039;&#039;Nachrichten:&#039;&#039;&#039; Nachrichten, die zwischen [[Objekt|Objekten]] gesendet werden, sind als Pfeile dargestellt.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Was ist der Hauptzweck?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Hauptzweck eines Sequenzdiagramms besteht darin, den Ablauf von Prozessen darzustellen, nicht die konkreten Werte, die bei der Ausführung von [[Methode|Methoden]] zurückgegeben werden.&lt;br /&gt;
Abstraktion: [[Methode#Rückgabeparameter|Rückgabeparameter]] sind oft implementationsspezifische Details, die für das Verständnis des allgemeinen Ablaufs nicht immer relevant sind. Sie können dargestellt werden, falls relevant, müssen es aber nicht.&lt;br /&gt;
&lt;br /&gt;
{{#ev:youtube|-ZswbawGWzg}}&lt;br /&gt;
&lt;br /&gt;
== Grundsätzlicher Aufbau ==&lt;br /&gt;
Ein Sequenzdiagramm besitzt zwei Dimensionen: Die Vertikale repräsentiert die Zeit, auf der Horizontalen werden die [[Objekt|Objekte]] eingetragen. Die zugehörigen [[Klasse|Klassen]] werden mit aufgeführt. Die Lebensdauer eines jeden [[Objekt|Objektes]] wird durch eine gestrichelte Linie – die Lebenslinie oder Objektlinie – dargestellt. Diese Linie repräsentiert die Existenz eines Objekts während einer bestimmten Zeit. &lt;br /&gt;
&lt;br /&gt;
[[Datei:Schematische Darstellung Sequenzdiagramm.png|mini]]&lt;br /&gt;
[[Datei:Beschriftetes Beispiel Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
=== Objekte ===&lt;br /&gt;
Die [[Objekt|Objekte]] werden durch Rechtecke visualisiert. Im [[Instanz|Objekt]] steht der zugehörige [[Klasse]]nname (zum Beispiel Mail). Falls erforderlich, wird auch der Objektname (zum Beispiel Bestellung) aufgeführt. Objektname und Klassenname werden durch einen Doppelpunkt getrennt (zum Beispiel Bestellung: Mail). &lt;br /&gt;
&lt;br /&gt;
Von den Objekten gehen die senkrechten Lebenslinien aus. Sie werden durch gestrichelte Linien dargestellt. Die Nachrichten werden durch waagerechte Pfeile zwischen den Objektlebenslinien beschrieben. Auf diesen Pfeilen werden die Nachrichtennamen in der Form: Nachricht(Argumente) notiert. Die Angabe von Argumenten ist optional.&lt;br /&gt;
&lt;br /&gt;
=== Nachrichten ===&lt;br /&gt;
Durch eine Nachricht wird meist eine [[Methode]] des Empfängers aufgerufen. Hier kann auch die Übergabe von [[Methode#Eingabeparameter|Eingabeparametern]] kenntlich gemacht werden. Es wird zwischen synchronen und asynchronen Nachrichten unterschieden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Nachrichten im Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Synchrone Nachrichten:&#039;&#039;&#039; Dabei pausiert der aufrufende Kommunikationspartner die Programmfortführung, bis er eine Antwort erhält. Synchrone Nachrichten werden durch einen Pfeil mit gefüllter Spitze dargestellt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Synchrone und Asychrone Nachrichten.png|mini]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Asynchrone Nachrichten:&#039;&#039;&#039; Dabei führt der Sender sein Programm fort. Trifft die Antwort ein, wird der Programmfluss unterbrochen und die Antwort verarbeitet. Sie werden durch einen Pfeil mit offener Spitze dargestellt. &lt;br /&gt;
&lt;br /&gt;
=== Antworten ===&lt;br /&gt;
Die Darstellung der Antworten ist optional. Antworten werden durch eine gestrichelte Linie mit offener Pfeilspitze dargestellt. Das Erzeugen und Entfernen von Objekten kann in Sequenzdiagrammen ebenfalls dargestellt werden. Die [[Konstruktor|Konstruktion]] eines neuen Objektes wird durch eine Nachricht, die auf den Kopf des Objektsymbols trifft, angezeigt. &lt;br /&gt;
&lt;br /&gt;
Die Entscheidung, ob Antworten in einem Sequenzdiagramm dargestellt werden, ist eine gestalterische Entscheidung, die vom jeweiligen Anwendungsfall abhängt. Es gibt keine strikten Regeln, sondern vielmehr Richtlinien, die es ermöglichen, klare und aussagekräftige Diagramme zu erstellen. &lt;br /&gt;
&lt;br /&gt;
=== Statische Aufrufe ===&lt;br /&gt;
Statische (static) Methodenaufrufe werden mit unterstrichenem Methodennamen dargestellt. Der Aufruf erfolgt dann auf einer [[Klasse]] und nicht auf einem [[Objekt]]. &lt;br /&gt;
&lt;br /&gt;
=== Dekonstruktion ===&lt;br /&gt;
Die Destruktion bzw. Zerstörung eines Objektes wird durch ein Kreuz am Ende der Lebenslinie angezeigt.&lt;br /&gt;
&lt;br /&gt;
=== Aktivierung ===&lt;br /&gt;
Die Überlagerung der gestrichelten Lebenslinien durch breite, senkrechte Balken symbolisiert die Aktivierung, d. h. es zeigt, welches Objekt gerade aktiv ist und somit für den Kontrollfluss des Programms verantwortlich ist.&lt;br /&gt;
&lt;br /&gt;
=== Kontrollstrukturen ===&lt;br /&gt;
[[Datei:Bespiel Kontrollstrukturen im Sequenzdiagramm.png|mini]]&lt;br /&gt;
Auch [[Kontrollstruktur|Kontrollstrukturen]] lassen sich durch ein Sequenzdiagramm darstellen (siehe Zeichnung). &lt;br /&gt;
&lt;br /&gt;
==== Verzweigung ====&lt;br /&gt;
Der mit alt (für alternative) markierte Block beschreibt eine Alternative ([[Verzweigung]]). Ist die Bedingung [b=wahr] erfüllt, wird der Bereich oberhalb der gestrichelten Linie in dem alt-Block ausgeführt. Im else-Fall wird der Bereich unterhalb der gestrichelten Linie ausgeführt.&lt;br /&gt;
&lt;br /&gt;
==== Schleife ====&lt;br /&gt;
Der Teil des Sequenzdiagramms, der sich im Kasten mit dem Titel [[Schleife|loop]] befindet, wird solange ausgeführt, solange die Ausführbedingung in den eckigen Klammern [] wahr ist.&lt;br /&gt;
&lt;br /&gt;
== Zeitliche Ordnung der Ereignisse ==&lt;br /&gt;
Ein Sequenzdiagramm beschreibt das Verhalten eines Systems, indem es die zeitliche Ordnung von Ereignisauftritten spezifiziert. Nicht der präzise Zeitpunkt, wann ein Ereignis auftritt, ist dabei ausschlaggebend, sondern welche Ereignisse vor und welche nach einem bestimmten Ereignisauftritt auftreten müssen (Quelle: https://de.wikipedia.org/wiki/Sequenzdiagramm).&lt;br /&gt;
&lt;br /&gt;
[[Datei:Zeitliche Eindordnung Nachrichten im Sequenzdiagramm.png|mini]]&lt;br /&gt;
&lt;br /&gt;
Die Abbildung links zeigt ein Sequenzdiagramm mit zwei synchronen Operationsaufrufen. Blau eingekreist sind die vier Ereignisauftritte. S1 und E1 stehen für das Sende- und das Empfangs-Nachricht-Ereignis für die Nachricht m1, S2 und E2 für die entsprechenden Ereignisse, die mit m2 in Verbindung stehen. Die Zeitachse läuft in einem Sequenzdiagramm von oben nach unten, sollte aber nicht als absolute Zeit verstanden werden.&lt;br /&gt;
&lt;br /&gt;
Zu den Ereignisauftritten in diesem Sequenzdiagramm lassen sich folgende Aussagen machen:&lt;br /&gt;
* E1 tritt nach S1 auf, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Analog tritt E2 nach S2 auf.&lt;br /&gt;
* S2 tritt nach S1 auf, weil S2 unter S1 gezeichnet ist.&lt;br /&gt;
&lt;br /&gt;
Alles in allem modelliert dieses Sequenzdiagramm also eine Interaktion, die durch genau eine Folge von Ereignisauftritten spezifiziert ist: &amp;lt;S1, E1, S2, E2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Das Sequenzdiagramm in der Abbildung links unterscheidet sich nur geringfügig vom vorangehenden Sequenzdiagramm. Der einzige Unterschied besteht darin, dass statt zwei synchronen zwei asynchrone Nachrichten dargestellt sind. Hier gilt weiterhin, dass E1 nach S1 und E2 nach S2 auftritt, weil das Empfangs- immer nach dem Sende-Nachricht-Ereignis vorkommt. Weil es sich um asynchrone Kommunikation handelt, könnte E1 hier jedoch nicht nur vor, sondern auch erst nach S2 oder E2 vorkommen.&lt;br /&gt;
&lt;br /&gt;
Das Sequenzdiagramm spezifiziert also eine Interaktion, in der drei Folgen von Ereignisauftritten zulässig sind: &amp;lt;S1, E1, S2, E2&amp;gt;, &amp;lt;S1, S2, E1, E2&amp;gt; und &amp;lt;S1, S2, E2, E1&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Falls nötig, kann man die zulässigen Abfolgen von Ereignisauftritten mit zusätzlichen Ordnungsbeziehungen einschränken. Eine Ordnungsbeziehung spezifiziert nicht eine Nachricht, die zwischen zwei Lebenslinien ausgetauscht wird, sondern die Tatsache, dass ein Ereignisauftritt nach einem anderen Ereignisauftritt vorkommen muss. Im Beispiel modelliert die Ordnungsbeziehung, dass S2 immer nach E1 erfolgt.&lt;br /&gt;
&lt;br /&gt;
Mit dieser zusätzlichen Einschränkung stellt dieses Sequenzdiagramm erneut eine Interaktion mit genau einer zulässigen Folge dar: &amp;lt;S1, E1, S2, E2&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:Programmierung]]&lt;br /&gt;
[[Kategorie:FI_I_TP2]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik_LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2891</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2891"/>
		<updated>2026-05-27T08:59:24Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (engl. &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) ist ein elementares Verhaltensdiagramm der UML.&lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des [[Lastenheft]]s und bilden die primäre Grundlage für das [[Pflichtenheft]].&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; und keine konkrete Person.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Anwendungsfalldiagramm bildet &#039;&#039;&#039;keine&#039;&#039;&#039; zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt;. Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; erfolgen (z. B. &#039;&#039;Artikel suchen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Ungerichtete Assoziation als einfache Verbindungslinie]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen. &lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Use Case gerichtet&#039;&#039;&#039; ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.&lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Akteur zeigt&#039;&#039;&#039;, besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).&lt;br /&gt;
* Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (beliebig viele) definiert (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: &amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: &amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes (Inklusion) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Include-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;beinhalten&#039;&#039; oder &#039;&#039;einschließen&#039;&#039;) beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases). &lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet ist. Der Pfeil startet immer beim &#039;&#039;&#039;Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der inkludierte Anwendungsfall wird &#039;&#039;&#039;immer (zu 100 %)&#039;&#039;&#039; ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten]]&lt;br /&gt;
&lt;br /&gt;
=== Extend (Erweiterung) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;erweitern&#039;&#039;) beschreibt ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.&lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim &#039;&#039;&#039;Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der Basis-Use-Case deklariert sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;, die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points:&amp;lt;/code&amp;gt; gefolgt von den Namen der Punkte steht.&lt;br /&gt;
&lt;br /&gt;
Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort &amp;lt;code&amp;gt;Condition:&amp;lt;/code&amp;gt; gefolgt von der logischen Bedingung in geschweiften Klammern &amp;lt;code&amp;gt;{...}&amp;lt;/code&amp;gt; sowie den Verweis auf den zugehörigen Erweiterungspunkt.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische &#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;, analog zur Vererbung in der objektorientierten Programmierung.&lt;br /&gt;
&lt;br /&gt;
Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer &#039;&#039;&#039;geschlossenen, hohlen Dreieckspfeilspitze&#039;&#039;&#039; dargestellt. Der Pfeil zeigt immer &#039;&#039;&#039;vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Im Beispiel ist der Akteur &#039;&#039;Fahrer&#039;&#039; eine Spezialisierung von &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case &#039;&#039;Login durchführen&#039;&#039;), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Anwendungsfällen:&#039;&#039;&#039; Ein abstrakter Anwendungsfall wie &#039;&#039;„Medium brennen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„CD brennen“&#039;&#039; oder &#039;&#039;„DVD brennen“&#039;&#039; geerbt und ausdifferenziert werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2890</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2890"/>
		<updated>2026-05-27T08:30:58Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.&lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:450px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1200 450&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
const svg=document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const scale=100;&lt;br /&gt;
const yOffset=0;&lt;br /&gt;
const xOffsetGlobal=120;&lt;br /&gt;
&lt;br /&gt;
function svgEl(name,attrs){&lt;br /&gt;
  const el=document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;,name);&lt;br /&gt;
  for(const k in (attrs||{})) el.setAttribute(k,attrs[k]);&lt;br /&gt;
  return el;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getSVGcoords(evt){&lt;br /&gt;
  const pt=svg.createSVGPoint();&lt;br /&gt;
  pt.x=evt.clientX;&lt;br /&gt;
  pt.y=evt.clientY;&lt;br /&gt;
  return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNode(id,cx,cy,w,h,label){&lt;br /&gt;
&lt;br /&gt;
  cx+=xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
  const rect=svgEl(&amp;quot;rect&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
    x:(cx-w/2)*scale,&lt;br /&gt;
    y:(cy-h/2)*scale+yOffset,&lt;br /&gt;
    width:w*scale,&lt;br /&gt;
    height:h*scale,&lt;br /&gt;
    rx:6,&lt;br /&gt;
    ry:6&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
    x:cx*scale,&lt;br /&gt;
    y:cy*scale+yOffset,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
    &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(rect);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  const node={id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
  let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerdown&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    rect.setPointerCapture(e.pointerId);&lt;br /&gt;
    dragging=true;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    start={&lt;br /&gt;
      px:p.x,&lt;br /&gt;
      py:p.y,&lt;br /&gt;
      cx:node.cx,&lt;br /&gt;
      cy:node.cy&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointermove&amp;quot;,e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
    node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
    updateNode(node);&lt;br /&gt;
    updateAllEdges();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerup&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    dragging=false;&lt;br /&gt;
    rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  return node;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateNode(n){&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
  n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
  n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function intersectRectBorder(node,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const cx=node.cx;&lt;br /&gt;
  const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
  const w2=node.w/2;&lt;br /&gt;
  const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  let pts=[];&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t1=(-w2)/dx;&lt;br /&gt;
    let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
    let t2=(w2)/dx;&lt;br /&gt;
    let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t3=(-h2)/dy;&lt;br /&gt;
    let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
    let t4=(h2)/dy;&lt;br /&gt;
    let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
  return pts[0]||{x:cx,y:cy};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
  if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
  return {&lt;br /&gt;
    x:cx+R*dx/d,&lt;br /&gt;
    y:cy+R*dy/d&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
  let px=-uy;&lt;br /&gt;
  let py=ux;&lt;br /&gt;
&lt;br /&gt;
  return `M ${x} ${y}&lt;br /&gt;
          L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
          L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const edges=[];&lt;br /&gt;
&lt;br /&gt;
function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
  const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
  const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
  text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(lineA);&lt;br /&gt;
  g.appendChild(lineB);&lt;br /&gt;
  g.appendChild(circle);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
  g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  let e={&lt;br /&gt;
    fromNode,&lt;br /&gt;
    toNode,&lt;br /&gt;
    amount,&lt;br /&gt;
    yMid,&lt;br /&gt;
    xOffset,&lt;br /&gt;
    circle,&lt;br /&gt;
    text,&lt;br /&gt;
    lineA,&lt;br /&gt;
    lineB,&lt;br /&gt;
    arrow&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  edges.push(e);&lt;br /&gt;
&lt;br /&gt;
  updateEdge(e);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
  const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
  const cy=e.yMid;&lt;br /&gt;
  const R=0.14;&lt;br /&gt;
&lt;br /&gt;
  const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
  const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
  const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
  const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
  const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
  const F=px(pF);&lt;br /&gt;
  const Ci=px(pCircleIn);&lt;br /&gt;
  const Co=px(pCircleOut);&lt;br /&gt;
  const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
  e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
  e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
  e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
  e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
  let ux=T[0]-Co[0];&lt;br /&gt;
  let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
  let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
  if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
  ux/=L;&lt;br /&gt;
  uy/=L;&lt;br /&gt;
&lt;br /&gt;
  e.arrow.setAttribute(&amp;quot;d&amp;quot;,makeArrowHead(T[0],T[1],ux,uy,10));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateAllEdges(){&lt;br /&gt;
  edges.forEach(updateEdge);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const nodes={};&lt;br /&gt;
&lt;br /&gt;
nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GOZINTOGRAPH: Rohstoffe → Zwischenprodukte → Endprodukte --&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap2 {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:70vw;&lt;br /&gt;
    max-width:1200px;&lt;br /&gt;
    max-height:800px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gozinto-wrap2 svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text,&lt;br /&gt;
  .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1180 640&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
  const svg = document.getElementById(&amp;quot;gozinto_svg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  const scale = 100;&lt;br /&gt;
  const yOffset = 0;&lt;br /&gt;
  const xOffsetGlobal = 120;&lt;br /&gt;
&lt;br /&gt;
  function svgEl(name, attrs){&lt;br /&gt;
    const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name);&lt;br /&gt;
&lt;br /&gt;
    for(const k in (attrs||{}))&lt;br /&gt;
      el.setAttribute(k, attrs[k]);&lt;br /&gt;
&lt;br /&gt;
    return el;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getSVGcoords(evt){&lt;br /&gt;
    const pt = svg.createSVGPoint();&lt;br /&gt;
&lt;br /&gt;
    pt.x = evt.clientX;&lt;br /&gt;
    pt.y = evt.clientY;&lt;br /&gt;
&lt;br /&gt;
    return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // NODE&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  function createNode(id, cx, cy, w, h, label){&lt;br /&gt;
&lt;br /&gt;
    cx += xOffsetGlobal / scale;&lt;br /&gt;
&lt;br /&gt;
    const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
    const rect = svgEl(&amp;quot;rect&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
      x:(cx-w/2)*scale,&lt;br /&gt;
      y:(cy-h/2)*scale + yOffset,&lt;br /&gt;
      width:w*scale,&lt;br /&gt;
      height:h*scale,&lt;br /&gt;
      rx:6,&lt;br /&gt;
      ry:6&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text = svgEl(&amp;quot;text&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
      x:cx*scale,&lt;br /&gt;
      y:cy*scale+yOffset,&lt;br /&gt;
      &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
      &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent = label;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(rect);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    const node = {id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
    // Dragging&lt;br /&gt;
&lt;br /&gt;
    let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      rect.setPointerCapture(e.pointerId);&lt;br /&gt;
&lt;br /&gt;
      dragging=true;&lt;br /&gt;
&lt;br /&gt;
      const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      start={&lt;br /&gt;
        px:p.x,&lt;br /&gt;
        py:p.y,&lt;br /&gt;
        cx:node.cx,&lt;br /&gt;
        cy:node.cy&lt;br /&gt;
      };&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
      const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
      node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
      updateNode(node);&lt;br /&gt;
      updateAllEdges();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      dragging=false;&lt;br /&gt;
&lt;br /&gt;
      rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return node;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateNode(n){&lt;br /&gt;
&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
    n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // GEOMETRIE&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  function intersectRectBorder(node, tx, ty){&lt;br /&gt;
&lt;br /&gt;
    const cx=node.cx;&lt;br /&gt;
    const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
    const w2=node.w/2;&lt;br /&gt;
    const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    let pts=[];&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
      let t1=(-w2)/dx;&lt;br /&gt;
      let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
      let t2=(w2)/dx;&lt;br /&gt;
      let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
      let t3=(-h2)/dy;&lt;br /&gt;
      let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
      let t4=(h2)/dy;&lt;br /&gt;
      let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
    return pts[0] || {x:cx,y:cy};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
    if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
      x:cx+R*dx/d,&lt;br /&gt;
      y:cy+R*dy/d&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
    let px=-uy;&lt;br /&gt;
    let py=ux;&lt;br /&gt;
&lt;br /&gt;
    return `M ${x} ${y}&lt;br /&gt;
            L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
            L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // KANTEN&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  const edges=[];&lt;br /&gt;
&lt;br /&gt;
  function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
    const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
    const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
    const circle=svgEl(&amp;quot;circle&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;count-circle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;count-text&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const arrow=svgEl(&amp;quot;path&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;edge-arrow&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(lineA);&lt;br /&gt;
    g.appendChild(lineB);&lt;br /&gt;
    g.appendChild(circle);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    let e={&lt;br /&gt;
      fromNode,&lt;br /&gt;
      toNode,&lt;br /&gt;
      amount,&lt;br /&gt;
      yMid,&lt;br /&gt;
      xOffset,&lt;br /&gt;
      circle,&lt;br /&gt;
      text,&lt;br /&gt;
      lineA,&lt;br /&gt;
      lineB,&lt;br /&gt;
      arrow&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    edges.push(e);&lt;br /&gt;
&lt;br /&gt;
    updateEdge(e);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
    const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
    const cy=e.yMid;&lt;br /&gt;
&lt;br /&gt;
    const R=0.14;&lt;br /&gt;
&lt;br /&gt;
    const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
    const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
    const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
    const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
    const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
    const F=px(pF);&lt;br /&gt;
    const Ci=px(pCircleIn);&lt;br /&gt;
    const Co=px(pCircleOut);&lt;br /&gt;
    const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
    e.lineA.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      `M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    e.lineB.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      `M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
    e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
    e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
    let ux=T[0]-Co[0];&lt;br /&gt;
    let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
    let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
    if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
    ux/=L;&lt;br /&gt;
    uy/=L;&lt;br /&gt;
&lt;br /&gt;
    e.arrow.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      makeArrowHead(T[0],T[1],ux,uy,10)&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateAllEdges(){&lt;br /&gt;
    edges.forEach(updateEdge);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // NODES&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  const nodes={};&lt;br /&gt;
&lt;br /&gt;
  // Rohstoffe&lt;br /&gt;
&lt;br /&gt;
  nodes.R1=createNode(&amp;quot;R1&amp;quot;,0,0.8,1.0,0.5,&amp;quot;R1&amp;quot;);&lt;br /&gt;
  nodes.R2=createNode(&amp;quot;R2&amp;quot;,2.5,0.8,1.0,0.5,&amp;quot;R2&amp;quot;);&lt;br /&gt;
  nodes.R3=createNode(&amp;quot;R3&amp;quot;,5.0,0.8,1.0,0.5,&amp;quot;R3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Zwischenprodukte&lt;br /&gt;
&lt;br /&gt;
  nodes.Z1=createNode(&amp;quot;Z1&amp;quot;,1.2,3.2,1.0,0.5,&amp;quot;Z1&amp;quot;);&lt;br /&gt;
  nodes.Z2=createNode(&amp;quot;Z2&amp;quot;,3.6,3.2,1.0,0.5,&amp;quot;Z2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Endprodukte&lt;br /&gt;
&lt;br /&gt;
  nodes.E1=createNode(&amp;quot;E1&amp;quot;,0.5,5.6,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
  nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.8,5.6,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
  nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.1,5.6,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // VERBINDUNGEN&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  // Rohstoffe -&amp;gt; Zwischenprodukte&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R1,nodes.Z1,&amp;quot;3&amp;quot;,1.8,-0.3);&lt;br /&gt;
  makeConnection(nodes.R1,nodes.Z2,&amp;quot;1&amp;quot;,1.8,0.4);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R2,nodes.Z1,&amp;quot;4&amp;quot;,1.8,-0.2);&lt;br /&gt;
  makeConnection(nodes.R2,nodes.Z2,&amp;quot;2&amp;quot;,1.8,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R3,nodes.Z2,&amp;quot;3&amp;quot;,1.8,0.0);&lt;br /&gt;
&lt;br /&gt;
  // Zwischenprodukte -&amp;gt; Endprodukte&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.Z1,nodes.E1,&amp;quot;2&amp;quot;,4.4,-0.2);&lt;br /&gt;
  makeConnection(nodes.Z1,nodes.E2,&amp;quot;1&amp;quot;,4.4,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E1,&amp;quot;1&amp;quot;,4.4,-0.3);&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E2,&amp;quot;3&amp;quot;,4.4,0.0);&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E3,&amp;quot;2&amp;quot;,4.4,0.3);&lt;br /&gt;
&lt;br /&gt;
  updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
Die vollständigen Mengen seien wie folgt definiert:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! Z1 !! Z2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R1&#039;&#039;&#039; || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R2&#039;&#039;&#039; || 4 || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R3&#039;&#039;&#039; || 0 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! E1 !! E2 !! E3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z1&#039;&#039;&#039; || 2 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z2&#039;&#039;&#039; || 1 || 3 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aus diesen Tabellen ergibt sich die &#039;&#039;&#039;Gozintomatrix Rohstoffe → Endprodukte&#039;&#039;&#039; durch Matrixmultiplikation:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RZ=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
ZE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=RZ \cdot ZE&lt;br /&gt;
=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
\cdot&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Berechnung:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
7 &amp;amp; 6 &amp;amp; 2 \\&lt;br /&gt;
10 &amp;amp; 10 &amp;amp; 4 \\&lt;br /&gt;
3 &amp;amp; 9 &amp;amp; 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Matrix zeigt, wie viele Mengeneinheiten der Rohstoffe &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; jeweils zur Herstellung einer Einheit der Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; notwendig sind.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2889</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2889"/>
		<updated>2026-05-27T08:30:35Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.&lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:450px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1200 450&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
const svg=document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const scale=100;&lt;br /&gt;
const yOffset=0;&lt;br /&gt;
const xOffsetGlobal=120;&lt;br /&gt;
&lt;br /&gt;
function svgEl(name,attrs){&lt;br /&gt;
  const el=document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;,name);&lt;br /&gt;
  for(const k in (attrs||{})) el.setAttribute(k,attrs[k]);&lt;br /&gt;
  return el;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getSVGcoords(evt){&lt;br /&gt;
  const pt=svg.createSVGPoint();&lt;br /&gt;
  pt.x=evt.clientX;&lt;br /&gt;
  pt.y=evt.clientY;&lt;br /&gt;
  return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNode(id,cx,cy,w,h,label){&lt;br /&gt;
&lt;br /&gt;
  cx+=xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
  const rect=svgEl(&amp;quot;rect&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
    x:(cx-w/2)*scale,&lt;br /&gt;
    y:(cy-h/2)*scale+yOffset,&lt;br /&gt;
    width:w*scale,&lt;br /&gt;
    height:h*scale,&lt;br /&gt;
    rx:6,&lt;br /&gt;
    ry:6&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
    x:cx*scale,&lt;br /&gt;
    y:cy*scale+yOffset,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
    &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(rect);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  const node={id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
  let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerdown&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    rect.setPointerCapture(e.pointerId);&lt;br /&gt;
    dragging=true;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    start={&lt;br /&gt;
      px:p.x,&lt;br /&gt;
      py:p.y,&lt;br /&gt;
      cx:node.cx,&lt;br /&gt;
      cy:node.cy&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointermove&amp;quot;,e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
    node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
    updateNode(node);&lt;br /&gt;
    updateAllEdges();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerup&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    dragging=false;&lt;br /&gt;
    rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  return node;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateNode(n){&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
  n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
  n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function intersectRectBorder(node,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const cx=node.cx;&lt;br /&gt;
  const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
  const w2=node.w/2;&lt;br /&gt;
  const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  let pts=[];&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t1=(-w2)/dx;&lt;br /&gt;
    let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
    let t2=(w2)/dx;&lt;br /&gt;
    let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t3=(-h2)/dy;&lt;br /&gt;
    let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
    let t4=(h2)/dy;&lt;br /&gt;
    let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
  return pts[0]||{x:cx,y:cy};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
  if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
  return {&lt;br /&gt;
    x:cx+R*dx/d,&lt;br /&gt;
    y:cy+R*dy/d&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
  let px=-uy;&lt;br /&gt;
  let py=ux;&lt;br /&gt;
&lt;br /&gt;
  return `M ${x} ${y}&lt;br /&gt;
          L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
          L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const edges=[];&lt;br /&gt;
&lt;br /&gt;
function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
  const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
  const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
  text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(lineA);&lt;br /&gt;
  g.appendChild(lineB);&lt;br /&gt;
  g.appendChild(circle);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
  g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  let e={&lt;br /&gt;
    fromNode,&lt;br /&gt;
    toNode,&lt;br /&gt;
    amount,&lt;br /&gt;
    yMid,&lt;br /&gt;
    xOffset,&lt;br /&gt;
    circle,&lt;br /&gt;
    text,&lt;br /&gt;
    lineA,&lt;br /&gt;
    lineB,&lt;br /&gt;
    arrow&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  edges.push(e);&lt;br /&gt;
&lt;br /&gt;
  updateEdge(e);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
  const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
  const cy=e.yMid;&lt;br /&gt;
  const R=0.14;&lt;br /&gt;
&lt;br /&gt;
  const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
  const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
  const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
  const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
  const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
  const F=px(pF);&lt;br /&gt;
  const Ci=px(pCircleIn);&lt;br /&gt;
  const Co=px(pCircleOut);&lt;br /&gt;
  const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
  e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
  e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
  e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
  e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
  let ux=T[0]-Co[0];&lt;br /&gt;
  let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
  let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
  if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
  ux/=L;&lt;br /&gt;
  uy/=L;&lt;br /&gt;
&lt;br /&gt;
  e.arrow.setAttribute(&amp;quot;d&amp;quot;,makeArrowHead(T[0],T[1],ux,uy,10));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateAllEdges(){&lt;br /&gt;
  edges.forEach(updateEdge);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const nodes={};&lt;br /&gt;
&lt;br /&gt;
nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- GOZINTOGRAPH: Rohstoffe → Zwischenprodukte → Endprodukte --&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap2 {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:70vw;&lt;br /&gt;
    max-width:1200px;&lt;br /&gt;
    max-height:800px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gozinto-wrap2 svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text,&lt;br /&gt;
  .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1180 640&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
  const svg = document.getElementById(&amp;quot;gozinto_svg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  const scale = 100;&lt;br /&gt;
  const yOffset = 0;&lt;br /&gt;
  const xOffsetGlobal = 120;&lt;br /&gt;
&lt;br /&gt;
  function svgEl(name, attrs){&lt;br /&gt;
    const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name);&lt;br /&gt;
&lt;br /&gt;
    for(const k in (attrs||{}))&lt;br /&gt;
      el.setAttribute(k, attrs[k]);&lt;br /&gt;
&lt;br /&gt;
    return el;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getSVGcoords(evt){&lt;br /&gt;
    const pt = svg.createSVGPoint();&lt;br /&gt;
&lt;br /&gt;
    pt.x = evt.clientX;&lt;br /&gt;
    pt.y = evt.clientY;&lt;br /&gt;
&lt;br /&gt;
    return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // NODE&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  function createNode(id, cx, cy, w, h, label){&lt;br /&gt;
&lt;br /&gt;
    cx += xOffsetGlobal / scale;&lt;br /&gt;
&lt;br /&gt;
    const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
    const rect = svgEl(&amp;quot;rect&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
      x:(cx-w/2)*scale,&lt;br /&gt;
      y:(cy-h/2)*scale + yOffset,&lt;br /&gt;
      width:w*scale,&lt;br /&gt;
      height:h*scale,&lt;br /&gt;
      rx:6,&lt;br /&gt;
      ry:6&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text = svgEl(&amp;quot;text&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
      x:cx*scale,&lt;br /&gt;
      y:cy*scale+yOffset,&lt;br /&gt;
      &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
      &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent = label;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(rect);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    const node = {id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
    // Dragging&lt;br /&gt;
&lt;br /&gt;
    let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      rect.setPointerCapture(e.pointerId);&lt;br /&gt;
&lt;br /&gt;
      dragging=true;&lt;br /&gt;
&lt;br /&gt;
      const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      start={&lt;br /&gt;
        px:p.x,&lt;br /&gt;
        py:p.y,&lt;br /&gt;
        cx:node.cx,&lt;br /&gt;
        cy:node.cy&lt;br /&gt;
      };&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
      const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
      node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
      updateNode(node);&lt;br /&gt;
      updateAllEdges();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
      dragging=false;&lt;br /&gt;
&lt;br /&gt;
      rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return node;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateNode(n){&lt;br /&gt;
&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
    n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // GEOMETRIE&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  function intersectRectBorder(node, tx, ty){&lt;br /&gt;
&lt;br /&gt;
    const cx=node.cx;&lt;br /&gt;
    const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
    const w2=node.w/2;&lt;br /&gt;
    const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    let pts=[];&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
      let t1=(-w2)/dx;&lt;br /&gt;
      let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
      let t2=(w2)/dx;&lt;br /&gt;
      let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
      let t3=(-h2)/dy;&lt;br /&gt;
      let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
      let t4=(h2)/dy;&lt;br /&gt;
      let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
    return pts[0] || {x:cx,y:cy};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
    if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
      x:cx+R*dx/d,&lt;br /&gt;
      y:cy+R*dy/d&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
    let px=-uy;&lt;br /&gt;
    let py=ux;&lt;br /&gt;
&lt;br /&gt;
    return `M ${x} ${y}&lt;br /&gt;
            L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
            L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // KANTEN&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  const edges=[];&lt;br /&gt;
&lt;br /&gt;
  function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
    const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
    const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
    const circle=svgEl(&amp;quot;circle&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;count-circle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;count-text&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const arrow=svgEl(&amp;quot;path&amp;quot;,{&lt;br /&gt;
      class:&amp;quot;edge-arrow&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(lineA);&lt;br /&gt;
    g.appendChild(lineB);&lt;br /&gt;
    g.appendChild(circle);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    let e={&lt;br /&gt;
      fromNode,&lt;br /&gt;
      toNode,&lt;br /&gt;
      amount,&lt;br /&gt;
      yMid,&lt;br /&gt;
      xOffset,&lt;br /&gt;
      circle,&lt;br /&gt;
      text,&lt;br /&gt;
      lineA,&lt;br /&gt;
      lineB,&lt;br /&gt;
      arrow&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    edges.push(e);&lt;br /&gt;
&lt;br /&gt;
    updateEdge(e);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
    const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
    const cy=e.yMid;&lt;br /&gt;
&lt;br /&gt;
    const R=0.14;&lt;br /&gt;
&lt;br /&gt;
    const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
    const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
    const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
    const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
    const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
    const F=px(pF);&lt;br /&gt;
    const Ci=px(pCircleIn);&lt;br /&gt;
    const Co=px(pCircleOut);&lt;br /&gt;
    const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
    e.lineA.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      `M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    e.lineB.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      `M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`&lt;br /&gt;
    );&lt;br /&gt;
&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
    e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
    e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
    let ux=T[0]-Co[0];&lt;br /&gt;
    let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
    let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
    if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
    ux/=L;&lt;br /&gt;
    uy/=L;&lt;br /&gt;
&lt;br /&gt;
    e.arrow.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      makeArrowHead(T[0],T[1],ux,uy,10)&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateAllEdges(){&lt;br /&gt;
    edges.forEach(updateEdge);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // NODES&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  const nodes={};&lt;br /&gt;
&lt;br /&gt;
  // Rohstoffe&lt;br /&gt;
&lt;br /&gt;
  nodes.R1=createNode(&amp;quot;R1&amp;quot;,0,0.8,1.0,0.5,&amp;quot;R1&amp;quot;);&lt;br /&gt;
  nodes.R2=createNode(&amp;quot;R2&amp;quot;,2.5,0.8,1.0,0.5,&amp;quot;R2&amp;quot;);&lt;br /&gt;
  nodes.R3=createNode(&amp;quot;R3&amp;quot;,5.0,0.8,1.0,0.5,&amp;quot;R3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Zwischenprodukte&lt;br /&gt;
&lt;br /&gt;
  nodes.Z1=createNode(&amp;quot;Z1&amp;quot;,1.2,3.2,1.0,0.5,&amp;quot;Z1&amp;quot;);&lt;br /&gt;
  nodes.Z2=createNode(&amp;quot;Z2&amp;quot;,3.6,3.2,1.0,0.5,&amp;quot;Z2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // Endprodukte&lt;br /&gt;
&lt;br /&gt;
  nodes.E1=createNode(&amp;quot;E1&amp;quot;,0.5,5.6,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
  nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.8,5.6,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
  nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.1,5.6,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
  // VERBINDUNGEN&lt;br /&gt;
  // -------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
  // Rohstoffe -&amp;gt; Zwischenprodukte&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R1,nodes.Z1,&amp;quot;3&amp;quot;,1.8,-0.3);&lt;br /&gt;
  makeConnection(nodes.R1,nodes.Z2,&amp;quot;1&amp;quot;,1.8,0.4);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R2,nodes.Z1,&amp;quot;4&amp;quot;,1.8,-0.2);&lt;br /&gt;
  makeConnection(nodes.R2,nodes.Z2,&amp;quot;2&amp;quot;,1.8,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.R3,nodes.Z2,&amp;quot;3&amp;quot;,1.8,0.0);&lt;br /&gt;
&lt;br /&gt;
  // Zwischenprodukte -&amp;gt; Endprodukte&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.Z1,nodes.E1,&amp;quot;2&amp;quot;,4.4,-0.2);&lt;br /&gt;
  makeConnection(nodes.Z1,nodes.E2,&amp;quot;1&amp;quot;,4.4,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E1,&amp;quot;1&amp;quot;,4.4,-0.3);&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E2,&amp;quot;3&amp;quot;,4.4,0.0);&lt;br /&gt;
  makeConnection(nodes.Z2,nodes.E3,&amp;quot;2&amp;quot;,4.4,0.3);&lt;br /&gt;
&lt;br /&gt;
  updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die vollständigen Mengen seien wie folgt definiert:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! Z1 !! Z2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R1&#039;&#039;&#039; || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R2&#039;&#039;&#039; || 4 || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R3&#039;&#039;&#039; || 0 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! E1 !! E2 !! E3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z1&#039;&#039;&#039; || 2 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z2&#039;&#039;&#039; || 1 || 3 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aus diesen Tabellen ergibt sich die &#039;&#039;&#039;Gozintomatrix Rohstoffe → Endprodukte&#039;&#039;&#039; durch Matrixmultiplikation:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RZ=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
ZE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=RZ \cdot ZE&lt;br /&gt;
=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
\cdot&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Berechnung:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
7 &amp;amp; 6 &amp;amp; 2 \\&lt;br /&gt;
10 &amp;amp; 10 &amp;amp; 4 \\&lt;br /&gt;
3 &amp;amp; 9 &amp;amp; 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Matrix zeigt, wie viele Mengeneinheiten der Rohstoffe &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; jeweils zur Herstellung einer Einheit der Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; notwendig sind.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2888</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2888"/>
		<updated>2026-05-27T08:27:28Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.&lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:450px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow {&lt;br /&gt;
    fill:#000;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1200 450&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
const svg=document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const scale=100;&lt;br /&gt;
const yOffset=0;&lt;br /&gt;
const xOffsetGlobal=120;&lt;br /&gt;
&lt;br /&gt;
function svgEl(name,attrs){&lt;br /&gt;
  const el=document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;,name);&lt;br /&gt;
  for(const k in (attrs||{})) el.setAttribute(k,attrs[k]);&lt;br /&gt;
  return el;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getSVGcoords(evt){&lt;br /&gt;
  const pt=svg.createSVGPoint();&lt;br /&gt;
  pt.x=evt.clientX;&lt;br /&gt;
  pt.y=evt.clientY;&lt;br /&gt;
  return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNode(id,cx,cy,w,h,label){&lt;br /&gt;
&lt;br /&gt;
  cx+=xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
&lt;br /&gt;
  const rect=svgEl(&amp;quot;rect&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
    x:(cx-w/2)*scale,&lt;br /&gt;
    y:(cy-h/2)*scale+yOffset,&lt;br /&gt;
    width:w*scale,&lt;br /&gt;
    height:h*scale,&lt;br /&gt;
    rx:6,&lt;br /&gt;
    ry:6&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
    x:cx*scale,&lt;br /&gt;
    y:cy*scale+yOffset,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
    &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(rect);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  const node={id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
  let dragging=false,start={};&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerdown&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    rect.setPointerCapture(e.pointerId);&lt;br /&gt;
    dragging=true;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    start={&lt;br /&gt;
      px:p.x,&lt;br /&gt;
      py:p.y,&lt;br /&gt;
      cx:node.cx,&lt;br /&gt;
      cy:node.cy&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointermove&amp;quot;,e=&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
    const p=getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
    node.cx=start.cx+(p.x-start.px)/scale;&lt;br /&gt;
    node.cy=start.cy+(p.y-start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
    updateNode(node);&lt;br /&gt;
    updateAllEdges();&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rect.addEventListener(&amp;quot;pointerup&amp;quot;,e=&amp;gt;{&lt;br /&gt;
    dragging=false;&lt;br /&gt;
    rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  return node;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateNode(n){&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
  n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
&lt;br /&gt;
  n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
  n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function intersectRectBorder(node,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const cx=node.cx;&lt;br /&gt;
  const cy=node.cy;&lt;br /&gt;
&lt;br /&gt;
  const w2=node.w/2;&lt;br /&gt;
  const h2=node.h/2;&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  let pts=[];&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t1=(-w2)/dx;&lt;br /&gt;
    let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
    let t2=(w2)/dx;&lt;br /&gt;
    let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
    if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
      pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
&lt;br /&gt;
    let t3=(-h2)/dy;&lt;br /&gt;
    let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
    let t4=(h2)/dy;&lt;br /&gt;
    let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
    if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
      pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
  return pts[0]||{x:cx,y:cy};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
&lt;br /&gt;
  const dx=tx-cx;&lt;br /&gt;
  const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
  const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
  if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
  return {&lt;br /&gt;
    x:cx+R*dx/d,&lt;br /&gt;
    y:cy+R*dy/d&lt;br /&gt;
  };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
&lt;br /&gt;
  let px=-uy;&lt;br /&gt;
  let py=ux;&lt;br /&gt;
&lt;br /&gt;
  return `M ${x} ${y}&lt;br /&gt;
          L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
          L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const edges=[];&lt;br /&gt;
&lt;br /&gt;
function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
  const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
  const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
  const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
  text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(lineA);&lt;br /&gt;
  g.appendChild(lineB);&lt;br /&gt;
  g.appendChild(circle);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
  g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  let e={&lt;br /&gt;
    fromNode,&lt;br /&gt;
    toNode,&lt;br /&gt;
    amount,&lt;br /&gt;
    yMid,&lt;br /&gt;
    xOffset,&lt;br /&gt;
    circle,&lt;br /&gt;
    text,&lt;br /&gt;
    lineA,&lt;br /&gt;
    lineB,&lt;br /&gt;
    arrow&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  edges.push(e);&lt;br /&gt;
&lt;br /&gt;
  updateEdge(e);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
  const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
  const cy=e.yMid;&lt;br /&gt;
  const R=0.14;&lt;br /&gt;
&lt;br /&gt;
  const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
  const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
  const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
  const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
  const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
  const F=px(pF);&lt;br /&gt;
  const Ci=px(pCircleIn);&lt;br /&gt;
  const Co=px(pCircleOut);&lt;br /&gt;
  const T=px(pT);&lt;br /&gt;
&lt;br /&gt;
  e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
  e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
  e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
  e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
  e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
  let ux=T[0]-Co[0];&lt;br /&gt;
  let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
  let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
  if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
  ux/=L;&lt;br /&gt;
  uy/=L;&lt;br /&gt;
&lt;br /&gt;
  e.arrow.setAttribute(&amp;quot;d&amp;quot;,makeArrowHead(T[0],T[1],ux,uy,10));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateAllEdges(){&lt;br /&gt;
  edges.forEach(updateEdge);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const nodes={};&lt;br /&gt;
&lt;br /&gt;
nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap2 {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:70vw;&lt;br /&gt;
    max-width:1200px;&lt;br /&gt;
    max-height:800px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .gozinto-wrap2 svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg&amp;quot;&lt;br /&gt;
     viewBox=&amp;quot;0 0 1180 700&amp;quot;&lt;br /&gt;
     preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
&lt;br /&gt;
const svg=document.getElementById(&amp;quot;gozinto_svg&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const scale=100;&lt;br /&gt;
const yOffset=0;&lt;br /&gt;
const xOffsetGlobal=120;&lt;br /&gt;
&lt;br /&gt;
function svgEl(name,attrs){&lt;br /&gt;
  const el=document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;,name);&lt;br /&gt;
  for(const k in (attrs||{})) el.setAttribute(k,attrs[k]);&lt;br /&gt;
  return el;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function createNode(id,cx,cy,w,h,label){&lt;br /&gt;
&lt;br /&gt;
  cx+=xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
  const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
  const rect=svgEl(&amp;quot;rect&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
    x:(cx-w/2)*scale,&lt;br /&gt;
    y:(cy-h/2)*scale,&lt;br /&gt;
    width:w*scale,&lt;br /&gt;
    height:h*scale,&lt;br /&gt;
    rx:6,&lt;br /&gt;
    ry:6&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
    x:cx*scale,&lt;br /&gt;
    y:cy*scale,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
    &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  g.appendChild(rect);&lt;br /&gt;
  g.appendChild(text);&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
  return {cx,cy,w,h};&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function drawArrow(x1,y1,x2,y2,label){&lt;br /&gt;
&lt;br /&gt;
  const line=svgEl(&amp;quot;line&amp;quot;,{&lt;br /&gt;
    x1,y1,x2,y2,&lt;br /&gt;
    stroke:&amp;quot;black&amp;quot;,&lt;br /&gt;
    &amp;quot;stroke-width&amp;quot;:&amp;quot;2&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(line);&lt;br /&gt;
&lt;br /&gt;
  const text=svgEl(&amp;quot;text&amp;quot;,{&lt;br /&gt;
    x:(x1+x2)/2,&lt;br /&gt;
    y:(y1+y2)/2-10,&lt;br /&gt;
    class:&amp;quot;count-text&amp;quot;,&lt;br /&gt;
    &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  text.textContent=label;&lt;br /&gt;
&lt;br /&gt;
  svg.appendChild(text);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const R1=createNode(&amp;quot;R1&amp;quot;,0,1,1,0.5,&amp;quot;R1&amp;quot;);&lt;br /&gt;
const R2=createNode(&amp;quot;R2&amp;quot;,2.5,1,1,0.5,&amp;quot;R2&amp;quot;);&lt;br /&gt;
const R3=createNode(&amp;quot;R3&amp;quot;,5,1,1,0.5,&amp;quot;R3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const Z1=createNode(&amp;quot;Z1&amp;quot;,1.2,3.5,1,0.5,&amp;quot;Z1&amp;quot;);&lt;br /&gt;
const Z2=createNode(&amp;quot;Z2&amp;quot;,3.8,3.5,1,0.5,&amp;quot;Z2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
const E1=createNode(&amp;quot;E1&amp;quot;,0.5,6,1,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
const E2=createNode(&amp;quot;E2&amp;quot;,2.8,6,1,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
const E3=createNode(&amp;quot;E3&amp;quot;,5.1,6,1,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
drawArrow(170,120,240,320,&amp;quot;3&amp;quot;);&lt;br /&gt;
drawArrow(420,120,240,320,&amp;quot;4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
drawArrow(170,120,500,320,&amp;quot;1&amp;quot;);&lt;br /&gt;
drawArrow(420,120,500,320,&amp;quot;2&amp;quot;);&lt;br /&gt;
drawArrow(670,120,500,320,&amp;quot;3&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
drawArrow(240,370,170,570,&amp;quot;2&amp;quot;);&lt;br /&gt;
drawArrow(240,370,420,570,&amp;quot;1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
drawArrow(500,370,170,570,&amp;quot;1&amp;quot;);&lt;br /&gt;
drawArrow(500,370,420,570,&amp;quot;3&amp;quot;);&lt;br /&gt;
drawArrow(500,370,670,570,&amp;quot;2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die vollständigen Mengen seien wie folgt definiert:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! Z1 !! Z2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R1&#039;&#039;&#039; || 3 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R2&#039;&#039;&#039; || 4 || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;R3&#039;&#039;&#039; || 0 || 3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! E1 !! E2 !! E3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z1&#039;&#039;&#039; || 2 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Z2&#039;&#039;&#039; || 1 || 3 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Aus diesen Tabellen ergibt sich die &#039;&#039;&#039;Gozintomatrix Rohstoffe → Endprodukte&#039;&#039;&#039; durch Matrixmultiplikation:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RZ=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
ZE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=RZ \cdot ZE&lt;br /&gt;
=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
3 &amp;amp; 1 \\&lt;br /&gt;
4 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 3&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
\cdot&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
1 &amp;amp; 3 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Berechnung:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RE=&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
7 &amp;amp; 6 &amp;amp; 2 \\&lt;br /&gt;
10 &amp;amp; 10 &amp;amp; 4 \\&lt;br /&gt;
3 &amp;amp; 9 &amp;amp; 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Matrix zeigt, wie viele Mengeneinheiten der Rohstoffe &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; jeweils zur Herstellung einer Einheit der Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; notwendig sind.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2887</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2887"/>
		<updated>2026-05-27T08:24:26Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.  &lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VARIANTE B – FINAL OPTIMIERT --&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:400px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow { fill:#000; }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot; viewBox=&amp;quot;0 0 1200 450&amp;quot; preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
  const svg = document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  const scale = 100;&lt;br /&gt;
  const yOffset = 0;&lt;br /&gt;
  const xOffsetGlobal = 120;&lt;br /&gt;
&lt;br /&gt;
  function svgEl(name, attrs){&lt;br /&gt;
    const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name);&lt;br /&gt;
    for(const k in (attrs||{})) el.setAttribute(k, attrs[k]);&lt;br /&gt;
    return el;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getSVGcoords(evt){&lt;br /&gt;
    const pt = svg.createSVGPoint();&lt;br /&gt;
    pt.x = evt.clientX;&lt;br /&gt;
    pt.y = evt.clientY;&lt;br /&gt;
    return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createNode(id, cx, cy, w, h, label){&lt;br /&gt;
    cx += xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
    const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
    const rect = svgEl(&amp;quot;rect&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
      x:(cx-w/2)*scale,&lt;br /&gt;
      y:(cy-h/2)*scale + yOffset,&lt;br /&gt;
      width:w*scale,&lt;br /&gt;
      height:h*scale,&lt;br /&gt;
      rx:6,&lt;br /&gt;
      ry:6&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text = svgEl(&amp;quot;text&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
      x:cx*scale,&lt;br /&gt;
      y:cy*scale+yOffset,&lt;br /&gt;
      &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
      &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent = label;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(rect);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    const node = {id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
    let dragging=false, start={};&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      rect.setPointerCapture(e.pointerId);&lt;br /&gt;
      dragging=true;&lt;br /&gt;
      const p = getSVGcoords(e);&lt;br /&gt;
      start = {px:p.x, py:p.y, cx:node.cx, cy:node.cy};&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
      const p = getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      node.cx = start.cx + (p.x - start.px)/scale;&lt;br /&gt;
      node.cy = start.cy + (p.y - start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
      updateNode(node);&lt;br /&gt;
      updateAllEdges();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      dragging=false;&lt;br /&gt;
      rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return node;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateNode(n){&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function intersectRectBorder(node, tx, ty){&lt;br /&gt;
    const cx=node.cx, cy=node.cy, w2=node.w/2, h2=node.h/2;&lt;br /&gt;
    const dx=tx-cx, dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    let pts=[];&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
      let t1=(-w2)/dx;&lt;br /&gt;
      let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
      let t2=(w2)/dx;&lt;br /&gt;
      let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
      let t3=(-h2)/dy;&lt;br /&gt;
      let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
      let t4=(h2)/dy;&lt;br /&gt;
      let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
    return pts[0] || {x:cx,y:cy};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
    if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
      x:cx+R*dx/d,&lt;br /&gt;
      y:cy+R*dy/d&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
    let px=-uy, py=ux;&lt;br /&gt;
&lt;br /&gt;
    return `M ${x} ${y}&lt;br /&gt;
            L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
            L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const edges=[];&lt;br /&gt;
&lt;br /&gt;
  function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
    const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
    const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
    const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
    const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
    text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(lineA);&lt;br /&gt;
    g.appendChild(lineB);&lt;br /&gt;
    g.appendChild(circle);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    let e={&lt;br /&gt;
      fromNode,&lt;br /&gt;
      toNode,&lt;br /&gt;
      amount,&lt;br /&gt;
      yMid,&lt;br /&gt;
      xOffset,&lt;br /&gt;
      circle,&lt;br /&gt;
      text,&lt;br /&gt;
      lineA,&lt;br /&gt;
      lineB,&lt;br /&gt;
      arrow&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    edges.push(e);&lt;br /&gt;
&lt;br /&gt;
    updateEdge(e);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
    const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
    const cy=e.yMid;&lt;br /&gt;
    const R=0.14;&lt;br /&gt;
&lt;br /&gt;
    const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
    const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
    const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
    const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
    const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
    const F=px(pF),&lt;br /&gt;
          Ci=px(pCircleIn),&lt;br /&gt;
          Co=px(pCircleOut),&lt;br /&gt;
          T=px(pT);&lt;br /&gt;
&lt;br /&gt;
    e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
    e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
    e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
    e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
    let ux=T[0]-Co[0];&lt;br /&gt;
    let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
    let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
    if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
    ux/=L;&lt;br /&gt;
    uy/=L;&lt;br /&gt;
&lt;br /&gt;
    e.arrow.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      makeArrowHead(T[0],T[1],ux,uy,10)&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateAllEdges(){&lt;br /&gt;
    edges.forEach(updateEdge);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const nodes={};&lt;br /&gt;
&lt;br /&gt;
  nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
  nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
  nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
  nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
  nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
  nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
  nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
  nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
  makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
  makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
  makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A =&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
Beispielsweise lässt sich aus der ersten Spalte ablesen, dass zur Herstellung eines Bauteils &amp;lt;math&amp;gt;B_1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2 Einheiten von &amp;lt;math&amp;gt;E_1&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 1 Einheit von &amp;lt;math&amp;gt;E_2&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_3&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
benötigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Für die Herstellung einer Einheit &amp;lt;math&amp;gt;Z_1&amp;lt;/math&amp;gt; werden 3 Einheiten &amp;lt;math&amp;gt;R_1&amp;lt;/math&amp;gt; und 4 Einheiten &amp;lt;math&amp;gt;R_2&amp;lt;/math&amp;gt; benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2886</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2886"/>
		<updated>2026-05-27T08:23:54Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Produktion eines Produkts aus Einzelteilen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.  &lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VARIANTE B – FINAL OPTIMIERT --&amp;gt; &amp;lt;html&amp;gt; &amp;lt;style&amp;gt; .gozinto-wrap { width:95vw; height:50vw; max-width:1100px; max-height:400px; border:0; margin:0; padding:0; } svg { width:100%; height:100%; touch-action:none; user-select:none; background:white; } .node-rect { fill:#3498db; stroke:#1f4e78; stroke-width:2; cursor:grab; } /* Einheitliche Schriftgröße */ .node-text, .count-text { font-family:sans-serif; font-size:14px; fill:#000; pointer-events:none; } .edge-line { stroke:#000; stroke-width:2; fill:none; } .edge-arrow { fill:#000; } .count-circle { fill:#fff; stroke:#000; stroke-width:1.5; } &amp;lt;/style&amp;gt; &amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt; &amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot; viewBox=&amp;quot;0 0 1200 450&amp;quot; preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt; &amp;lt;/svg&amp;gt; &amp;lt;/div&amp;gt; &amp;lt;script&amp;gt; (function(){ const svg = document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;); // leicht reduzierte Abstände const scale = 100; const yOffset = 0; // früher 5 20 → Grafik rückt nach oben const xOffsetGlobal = 120; // gesamte Grafik leicht nach rechts (zentrieren) function svgEl(name, attrs){ const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name); for(const k in (attrs||{})) el.setAttribute(k, attrs[k]); return el; } function getSVGcoords(evt){ const pt = svg.createSVGPoint(); pt.x = evt.clientX; pt.y = evt.clientY; return pt.matrixTransform(svg.getScreenCTM().inverse()); } // ----------- NODE ----------- function createNode(id, cx, cy, w, h, label){ cx += xOffsetGlobal/scale; // gesamte Grafik nach rechts versetzt const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id}); const rect = svgEl(&amp;quot;rect&amp;quot;, { class:&amp;quot;node-rect&amp;quot;, x:(cx-w/2)*scale, y:(cy-h/2)*scale + yOffset, width:w*scale, height:h*scale, rx:6, ry:6 }); const text = svgEl(&amp;quot;text&amp;quot;, { class:&amp;quot;node-text&amp;quot;, x:cx*scale, y:cy*scale+yOffset, &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;, &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot; }); text.textContent = label; g.appendChild(rect); g.appendChild(text); svg.appendChild(g); const node = {id,cx,cy,w,h,rect,text,g}; // Draggen let dragging=false, start={}; rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{ rect.setPointerCapture(e.pointerId); dragging=true; const p = getSVGcoords(e); start = {px:p.x, py:p.y, cx:node.cx, cy:node.cy}; }); rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{ if(!dragging) return; const p = getSVGcoords(e); node.cx = start.cx + (p.x - start.px)/scale; node.cy = start.cy + (p.y - start.py)/scale; updateNode(node); updateAllEdges(); }); rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{ dragging=false; rect.releasePointerCapture(e.pointerId); }); return node; } function updateNode(n){ n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale); n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset); n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale); n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset); } // ------- Geometrie ------- function intersectRectBorder(node, tx, ty){ const cx=node.cx, cy=node.cy, w2=node.w/2, h2=node.h/2; const dx=tx-cx, dy=ty-cy; let pts=[]; if(Math.abs(dx)&amp;gt;1e-9){ let t1=(-w2)/dx; let y1=cy+t1*dy; if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2) pts.push({x:cx-w2,y:y1,t:t1}); let t2=(w2)/dx; let y2=cy+t2*dy; if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2) pts.push({x:cx+w2,y:y2,t:t2}); } if(Math.abs(dy)&amp;gt;1e-9){ let t3=(-h2)/dy; let x3=cx+t3*dx; if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2) pts.push({x:x3,y:cy-h2,t:t3}); let t4=(h2)/dy; let x4=cx+t4*dx; if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2) pts.push({x:x4,y:cy+h2,t:t4}); } pts.sort((a,b)=&amp;gt;a.t-b.t); return pts[0] || {x:cx,y:cy}; } function pointOnCircle(cx,cy,R,tx,ty){ const dx=tx-cx, dy=ty-cy; const d=Math.sqrt(dx*dx+dy*dy); if(d&amp;lt;1e-9) return {x:cx,y:cy}; return {x:cx+R*dx/d, y:cy+R*dy/d}; } function makeArrowHead(x,y,ux,uy,size){ let px=-uy, py=ux; return M ${x} ${y} L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5} L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z; } const edges=[]; function makeConnection(fromNode,toNode,amount,yMid,xOffset){ const g=svgEl(&amp;quot;g&amp;quot;,{}); const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;}); const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;}); const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;}); const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;}); const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;}); text.textContent=amount; g.appendChild(lineA); g.appendChild(lineB); g.appendChild(circle); g.appendChild(text); g.appendChild(arrow); svg.appendChild(g); let e={fromNode,toNode,amount,yMid,xOffset,circle,text,lineA,lineB,arrow}; edges.push(e); updateEdge(e); } function updateEdge(e){ const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0); const cy=e.yMid; const R=0.14; const pF=intersectRectBorder(e.fromNode,cx,cy); const pT=intersectRectBorder(e.toNode,cx,cy); const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y); const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y); const px=p=&amp;gt;[p.x*scale, p.y*scale+yOffset]; const F=px(pF), Ci=px(pCircleIn), Co=px(pCircleOut), T=px(pT); e.lineA.setAttribute(&amp;quot;d&amp;quot;,M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}); e.lineB.setAttribute(&amp;quot;d&amp;quot;,M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}); e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale); e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset); e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale); e.text.setAttribute(&#039;x&#039;, cx*scale-5); e.text.setAttribute(&#039;y&#039;, cy*scale + yOffset+5); let ux=T[0]-Co[0], uy=T[1]-Co[1]; let L=Math.sqrt(ux*ux+uy*uy); if(L&amp;lt;1e-6) L=1; ux/=L; uy/=L; e.arrow.setAttribute(&amp;quot;d&amp;quot;,makeArrowHead(T[0],T[1],ux,uy,10)); } function updateAllEdges(){ edges.forEach(updateEdge); } // ------------ Nodes ------------ const nodes={}; // Einzelteile oben nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;); nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;); nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;); nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;); // Bauteile darunter nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;); nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;); nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;); nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;); nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;); // ------------ Verbindungen ------------ makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2); makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2, 0.2); makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2); makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2, 0.2); makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25); makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2, 0.0); makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2, 0.25); makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3); makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2, 0.0); makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2, 0.3); makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2); makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2, 0.2); updateAllEdges(); })(); &amp;lt;/script&amp;gt; &amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A =&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
Beispielsweise lässt sich aus der ersten Spalte ablesen, dass zur Herstellung eines Bauteils &amp;lt;math&amp;gt;B_1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2 Einheiten von &amp;lt;math&amp;gt;E_1&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 1 Einheit von &amp;lt;math&amp;gt;E_2&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_3&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
benötigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Für die Herstellung einer Einheit &amp;lt;math&amp;gt;Z_1&amp;lt;/math&amp;gt; werden 3 Einheiten &amp;lt;math&amp;gt;R_1&amp;lt;/math&amp;gt; und 4 Einheiten &amp;lt;math&amp;gt;R_2&amp;lt;/math&amp;gt; benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2885</id>
		<title>Gozintograph</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gozintograph&amp;diff=2885"/>
		<updated>2026-05-27T08:22:19Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Gozintograph&#039;&#039;&#039; (von engl. &#039;&#039;goes into&#039;&#039; = „geht hinein“) ist ein gerichteter Graph, der die Zerlegung eines Endprodukts in seine Einzelteile oder Komponenten beschreibt.  &lt;br /&gt;
Jede Kante stellt dabei eine „Gozinto“-Beziehung dar: Sie zeigt von einer Komponente auf das Produkt, in das sie eingeht. Der Gozintograph ist ein zentrales Hilfsmittel in der Produktionsplanung und Stücklistenverwaltung.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
&lt;br /&gt;
Ein Gozintograph ist ein gerichteter, azyklischer Graph&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;G=(V,E)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
mit:&lt;br /&gt;
* &amp;lt;math&amp;gt;V&amp;lt;/math&amp;gt; als Menge der Knoten (Produkte oder Komponenten),&lt;br /&gt;
* &amp;lt;math&amp;gt;E \subseteq V \times V&amp;lt;/math&amp;gt; als Menge der gerichteten Kanten.&lt;br /&gt;
&lt;br /&gt;
Zusätzlich besitzt jede Kante ein Gewicht &amp;lt;math&amp;gt;a_{ij} \in \mathbb{N}&amp;lt;/math&amp;gt;.  &lt;br /&gt;
Eine Kante &amp;lt;math&amp;gt;(v_i,v_j)\in E&amp;lt;/math&amp;gt; mit Gewicht &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; bedeutet, dass zur Herstellung des Produkts &amp;lt;math&amp;gt;v_j&amp;lt;/math&amp;gt; genau &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; Einheiten der Komponente &amp;lt;math&amp;gt;v_i&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Da rekursive Stücklisten ausgeschlossen werden, enthält ein Gozintograph keine Zyklen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang zu Matrizen ==&lt;br /&gt;
&lt;br /&gt;
Die Informationen eines Gozintographen lassen sich in einer sogenannten &#039;&#039;&#039;Gozintomatrix&#039;&#039;&#039; darstellen.  &lt;br /&gt;
&lt;br /&gt;
Dies ist eine Matrix&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;A=(a_{ij})&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bei der das Element &amp;lt;math&amp;gt;a_{ij}&amp;lt;/math&amp;gt; die Anzahl der Einheiten der Komponente &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt; angibt, die unmittelbar zur Herstellung des Produkts &amp;lt;math&amp;gt;j&amp;lt;/math&amp;gt; benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Unter der Voraussetzung, dass der Gozintograph zyklusfrei ist und &amp;lt;math&amp;gt;I-A&amp;lt;/math&amp;gt; invertierbar ist, kann der Gesamtbedarf aller Komponenten über die Gleichung&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{x}=(I-A)^{-1}\mathbf{y}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bestimmt werden, wobei:&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt; den Vektor der Endprodukte,&lt;br /&gt;
* &amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt; den Vektor der insgesamt benötigten Komponentenmengen&lt;br /&gt;
&lt;br /&gt;
beschreibt.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Produktion eines Produkts aus Einzelteilen ===&lt;br /&gt;
&lt;br /&gt;
Im folgenden Beispiel werden fünf Bauteile &amp;lt;math&amp;gt;B_1,B_2,B_3,B_4,B_5&amp;lt;/math&amp;gt; aus vier Einzelteilen &amp;lt;math&amp;gt;E_1,E_2,E_3,E_4&amp;lt;/math&amp;gt; gefertigt.  &lt;br /&gt;
Die Pfeile zeigen, welche Einzelteile in welches Bauteil eingehen. Die Zahlen an den Pfeilen geben die benötigte Stückzahl an.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- VARIANTE B – FINAL OPTIMIERT --&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;style&amp;gt;&lt;br /&gt;
  .gozinto-wrap {&lt;br /&gt;
    width:95vw;&lt;br /&gt;
    height:50vw;&lt;br /&gt;
    max-width:1100px;&lt;br /&gt;
    max-height:400px;&lt;br /&gt;
    border:0;&lt;br /&gt;
    margin:0;&lt;br /&gt;
    padding:0;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  svg {&lt;br /&gt;
    width:100%;&lt;br /&gt;
    height:100%;&lt;br /&gt;
    touch-action:none;&lt;br /&gt;
    user-select:none;&lt;br /&gt;
    background:white;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-rect {&lt;br /&gt;
    fill:#3498db;&lt;br /&gt;
    stroke:#1f4e78;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    cursor:grab;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .node-text, .count-text {&lt;br /&gt;
    font-family:sans-serif;&lt;br /&gt;
    font-size:14px;&lt;br /&gt;
    fill:#000;&lt;br /&gt;
    pointer-events:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-line {&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:2;&lt;br /&gt;
    fill:none;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  .edge-arrow { fill:#000; }&lt;br /&gt;
&lt;br /&gt;
  .count-circle {&lt;br /&gt;
    fill:#fff;&lt;br /&gt;
    stroke:#000;&lt;br /&gt;
    stroke-width:1.5;&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/style&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;gozinto-wrap&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;svg id=&amp;quot;gozinto_svg_2&amp;quot; viewBox=&amp;quot;0 0 1200 450&amp;quot; preserveAspectRatio=&amp;quot;xMinYMin meet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
(function(){&lt;br /&gt;
  const svg = document.getElementById(&amp;quot;gozinto_svg_2&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  const scale = 100;&lt;br /&gt;
  const yOffset = 0;&lt;br /&gt;
  const xOffsetGlobal = 120;&lt;br /&gt;
&lt;br /&gt;
  function svgEl(name, attrs){&lt;br /&gt;
    const el = document.createElementNS(&amp;quot;http://www.w3.org/2000/svg&amp;quot;, name);&lt;br /&gt;
    for(const k in (attrs||{})) el.setAttribute(k, attrs[k]);&lt;br /&gt;
    return el;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function getSVGcoords(evt){&lt;br /&gt;
    const pt = svg.createSVGPoint();&lt;br /&gt;
    pt.x = evt.clientX;&lt;br /&gt;
    pt.y = evt.clientY;&lt;br /&gt;
    return pt.matrixTransform(svg.getScreenCTM().inverse());&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function createNode(id, cx, cy, w, h, label){&lt;br /&gt;
    cx += xOffsetGlobal/scale;&lt;br /&gt;
&lt;br /&gt;
    const g = svgEl(&amp;quot;g&amp;quot;, {&amp;quot;data-id&amp;quot;:id});&lt;br /&gt;
    const rect = svgEl(&amp;quot;rect&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-rect&amp;quot;,&lt;br /&gt;
      x:(cx-w/2)*scale,&lt;br /&gt;
      y:(cy-h/2)*scale + yOffset,&lt;br /&gt;
      width:w*scale,&lt;br /&gt;
      height:h*scale,&lt;br /&gt;
      rx:6,&lt;br /&gt;
      ry:6&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    const text = svgEl(&amp;quot;text&amp;quot;, {&lt;br /&gt;
      class:&amp;quot;node-text&amp;quot;,&lt;br /&gt;
      x:cx*scale,&lt;br /&gt;
      y:cy*scale+yOffset,&lt;br /&gt;
      &amp;quot;text-anchor&amp;quot;:&amp;quot;middle&amp;quot;,&lt;br /&gt;
      &amp;quot;dominant-baseline&amp;quot;:&amp;quot;middle&amp;quot;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    text.textContent = label;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(rect);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    const node = {id,cx,cy,w,h,rect,text,g};&lt;br /&gt;
&lt;br /&gt;
    let dragging=false, start={};&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerdown&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      rect.setPointerCapture(e.pointerId);&lt;br /&gt;
      dragging=true;&lt;br /&gt;
      const p = getSVGcoords(e);&lt;br /&gt;
      start = {px:p.x, py:p.y, cx:node.cx, cy:node.cy};&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointermove&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      if(!dragging) return;&lt;br /&gt;
&lt;br /&gt;
      const p = getSVGcoords(e);&lt;br /&gt;
&lt;br /&gt;
      node.cx = start.cx + (p.x - start.px)/scale;&lt;br /&gt;
      node.cy = start.cy + (p.y - start.py)/scale;&lt;br /&gt;
&lt;br /&gt;
      updateNode(node);&lt;br /&gt;
      updateAllEdges();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    rect.addEventListener(&amp;quot;pointerup&amp;quot;, e=&amp;gt;{&lt;br /&gt;
      dragging=false;&lt;br /&gt;
      rect.releasePointerCapture(e.pointerId);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    return node;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateNode(n){&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;x&amp;quot;,(n.cx-n.w/2)*scale);&lt;br /&gt;
    n.rect.setAttribute(&amp;quot;y&amp;quot;,(n.cy-n.h/2)*scale+yOffset);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;x&amp;quot;,n.cx*scale);&lt;br /&gt;
    n.text.setAttribute(&amp;quot;y&amp;quot;,n.cy*scale+yOffset);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function intersectRectBorder(node, tx, ty){&lt;br /&gt;
    const cx=node.cx, cy=node.cy, w2=node.w/2, h2=node.h/2;&lt;br /&gt;
    const dx=tx-cx, dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    let pts=[];&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dx)&amp;gt;1e-9){&lt;br /&gt;
      let t1=(-w2)/dx;&lt;br /&gt;
      let y1=cy+t1*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t1&amp;gt;0 &amp;amp;&amp;amp; y1&amp;gt;=cy-h2 &amp;amp;&amp;amp; y1&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx-w2,y:y1,t:t1});&lt;br /&gt;
&lt;br /&gt;
      let t2=(w2)/dx;&lt;br /&gt;
      let y2=cy+t2*dy;&lt;br /&gt;
&lt;br /&gt;
      if(t2&amp;gt;0 &amp;amp;&amp;amp; y2&amp;gt;=cy-h2 &amp;amp;&amp;amp; y2&amp;lt;=cy+h2)&lt;br /&gt;
        pts.push({x:cx+w2,y:y2,t:t2});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(Math.abs(dy)&amp;gt;1e-9){&lt;br /&gt;
      let t3=(-h2)/dy;&lt;br /&gt;
      let x3=cx+t3*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t3&amp;gt;0 &amp;amp;&amp;amp; x3&amp;gt;=cx-w2 &amp;amp;&amp;amp; x3&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x3,y:cy-h2,t:t3});&lt;br /&gt;
&lt;br /&gt;
      let t4=(h2)/dy;&lt;br /&gt;
      let x4=cx+t4*dx;&lt;br /&gt;
&lt;br /&gt;
      if(t4&amp;gt;0 &amp;amp;&amp;amp; x4&amp;gt;=cx-w2 &amp;amp;&amp;amp; x4&amp;lt;=cx+w2)&lt;br /&gt;
        pts.push({x:x4,y:cy+h2,t:t4});&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    pts.sort((a,b)=&amp;gt;a.t-b.t);&lt;br /&gt;
&lt;br /&gt;
    return pts[0] || {x:cx,y:cy};&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function pointOnCircle(cx,cy,R,tx,ty){&lt;br /&gt;
    const dx=tx-cx;&lt;br /&gt;
    const dy=ty-cy;&lt;br /&gt;
&lt;br /&gt;
    const d=Math.sqrt(dx*dx+dy*dy);&lt;br /&gt;
&lt;br /&gt;
    if(d&amp;lt;1e-9) return {x:cx,y:cy};&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
      x:cx+R*dx/d,&lt;br /&gt;
      y:cy+R*dy/d&lt;br /&gt;
    };&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function makeArrowHead(x,y,ux,uy,size){&lt;br /&gt;
    let px=-uy, py=ux;&lt;br /&gt;
&lt;br /&gt;
    return `M ${x} ${y}&lt;br /&gt;
            L ${x-ux*size+px*size*0.5} ${y-uy*size+py*size*0.5}&lt;br /&gt;
            L ${x-ux*size-px*size*0.5} ${y-uy*size-py*size*0.5} Z`;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const edges=[];&lt;br /&gt;
&lt;br /&gt;
  function makeConnection(fromNode,toNode,amount,yMid,xOffset){&lt;br /&gt;
&lt;br /&gt;
    const g=svgEl(&amp;quot;g&amp;quot;,{});&lt;br /&gt;
&lt;br /&gt;
    const lineA=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const lineB=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-line&amp;quot;});&lt;br /&gt;
    const circle=svgEl(&amp;quot;circle&amp;quot;,{class:&amp;quot;count-circle&amp;quot;});&lt;br /&gt;
    const text=svgEl(&amp;quot;text&amp;quot;,{class:&amp;quot;count-text&amp;quot;});&lt;br /&gt;
    const arrow=svgEl(&amp;quot;path&amp;quot;,{class:&amp;quot;edge-arrow&amp;quot;});&lt;br /&gt;
&lt;br /&gt;
    text.textContent=amount;&lt;br /&gt;
&lt;br /&gt;
    g.appendChild(lineA);&lt;br /&gt;
    g.appendChild(lineB);&lt;br /&gt;
    g.appendChild(circle);&lt;br /&gt;
    g.appendChild(text);&lt;br /&gt;
    g.appendChild(arrow);&lt;br /&gt;
&lt;br /&gt;
    svg.appendChild(g);&lt;br /&gt;
&lt;br /&gt;
    let e={&lt;br /&gt;
      fromNode,&lt;br /&gt;
      toNode,&lt;br /&gt;
      amount,&lt;br /&gt;
      yMid,&lt;br /&gt;
      xOffset,&lt;br /&gt;
      circle,&lt;br /&gt;
      text,&lt;br /&gt;
      lineA,&lt;br /&gt;
      lineB,&lt;br /&gt;
      arrow&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
    edges.push(e);&lt;br /&gt;
&lt;br /&gt;
    updateEdge(e);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateEdge(e){&lt;br /&gt;
&lt;br /&gt;
    const cx=(e.fromNode.cx+e.toNode.cx)/2+(e.xOffset||0);&lt;br /&gt;
    const cy=e.yMid;&lt;br /&gt;
    const R=0.14;&lt;br /&gt;
&lt;br /&gt;
    const pF=intersectRectBorder(e.fromNode,cx,cy);&lt;br /&gt;
    const pT=intersectRectBorder(e.toNode,cx,cy);&lt;br /&gt;
&lt;br /&gt;
    const pCircleIn=pointOnCircle(cx,cy,R,pF.x,pF.y);&lt;br /&gt;
    const pCircleOut=pointOnCircle(cx,cy,R,pT.x,pT.y);&lt;br /&gt;
&lt;br /&gt;
    const px=p=&amp;gt;[p.x*scale,p.y*scale+yOffset];&lt;br /&gt;
&lt;br /&gt;
    const F=px(pF),&lt;br /&gt;
          Ci=px(pCircleIn),&lt;br /&gt;
          Co=px(pCircleOut),&lt;br /&gt;
          T=px(pT);&lt;br /&gt;
&lt;br /&gt;
    e.lineA.setAttribute(&amp;quot;d&amp;quot;,`M ${F[0]} ${F[1]} L ${Ci[0]} ${Ci[1]}`);&lt;br /&gt;
    e.lineB.setAttribute(&amp;quot;d&amp;quot;,`M ${Co[0]} ${Co[1]} L ${T[0]} ${T[1]}`);&lt;br /&gt;
&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cx&amp;quot;,cx*scale);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;cy&amp;quot;,cy*scale+yOffset);&lt;br /&gt;
    e.circle.setAttribute(&amp;quot;r&amp;quot;,R*scale);&lt;br /&gt;
&lt;br /&gt;
    e.text.setAttribute(&amp;quot;x&amp;quot;,cx*scale-5);&lt;br /&gt;
    e.text.setAttribute(&amp;quot;y&amp;quot;,cy*scale+yOffset+5);&lt;br /&gt;
&lt;br /&gt;
    let ux=T[0]-Co[0];&lt;br /&gt;
    let uy=T[1]-Co[1];&lt;br /&gt;
&lt;br /&gt;
    let L=Math.sqrt(ux*ux+uy*uy);&lt;br /&gt;
&lt;br /&gt;
    if(L&amp;lt;1e-6) L=1;&lt;br /&gt;
&lt;br /&gt;
    ux/=L;&lt;br /&gt;
    uy/=L;&lt;br /&gt;
&lt;br /&gt;
    e.arrow.setAttribute(&lt;br /&gt;
      &amp;quot;d&amp;quot;,&lt;br /&gt;
      makeArrowHead(T[0],T[1],ux,uy,10)&lt;br /&gt;
    );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function updateAllEdges(){&lt;br /&gt;
    edges.forEach(updateEdge);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  const nodes={};&lt;br /&gt;
&lt;br /&gt;
  nodes.E1=createNode(&amp;quot;E1&amp;quot;,0,0.5,1.0,0.5,&amp;quot;E1&amp;quot;);&lt;br /&gt;
  nodes.E2=createNode(&amp;quot;E2&amp;quot;,2.5,0.5,1.0,0.5,&amp;quot;E2&amp;quot;);&lt;br /&gt;
  nodes.E3=createNode(&amp;quot;E3&amp;quot;,5.0,0.5,1.0,0.5,&amp;quot;E3&amp;quot;);&lt;br /&gt;
  nodes.E4=createNode(&amp;quot;E4&amp;quot;,7.5,0.5,1.0,0.5,&amp;quot;E4&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  nodes.B1=createNode(&amp;quot;B1&amp;quot;,0.75,4.5,1.0,0.5,&amp;quot;B1&amp;quot;);&lt;br /&gt;
  nodes.B2=createNode(&amp;quot;B2&amp;quot;,2.5,4.5,1.0,0.5,&amp;quot;B2&amp;quot;);&lt;br /&gt;
  nodes.B3=createNode(&amp;quot;B3&amp;quot;,5.0,4.5,1.0,0.5,&amp;quot;B3&amp;quot;);&lt;br /&gt;
  nodes.B4=createNode(&amp;quot;B4&amp;quot;,7.5,4.5,1.0,0.5,&amp;quot;B4&amp;quot;);&lt;br /&gt;
  nodes.B5=createNode(&amp;quot;B5&amp;quot;,10,4.5,1.0,0.5,&amp;quot;B5&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B1,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B1,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B2,&amp;quot;2&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B2,&amp;quot;1&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B3,&amp;quot;1&amp;quot;,2.2,-0.25);&lt;br /&gt;
  makeConnection(nodes.E2,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
  makeConnection(nodes.E3,nodes.B3,&amp;quot;1&amp;quot;,2.2,0.25);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B4,&amp;quot;2&amp;quot;,2.2,-0.3);&lt;br /&gt;
  makeConnection(nodes.E3,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.0);&lt;br /&gt;
  makeConnection(nodes.E4,nodes.B4,&amp;quot;1&amp;quot;,2.2,0.3);&lt;br /&gt;
&lt;br /&gt;
  makeConnection(nodes.E1,nodes.B5,&amp;quot;1&amp;quot;,2.2,-0.2);&lt;br /&gt;
  makeConnection(nodes.E4,nodes.B5,&amp;quot;2&amp;quot;,2.2,0.2);&lt;br /&gt;
&lt;br /&gt;
  updateAllEdges();&lt;br /&gt;
&lt;br /&gt;
})();&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Gozintomatrix zum oberen Gozintographen kann aus folgender Tabelle abgeleitet werden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! !! B1 !! B2 !! B3 !! B4 !! B5&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E1&#039;&#039;&#039; || 2 || 2 || 1 || 2 || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E2&#039;&#039;&#039; || 1 || 1 || 1 || 0 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E3&#039;&#039;&#039; || 0 || 0 || 1 || 1 || 0&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;E4&#039;&#039;&#039; || 0 || 0 || 0 || 1 || 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
und ist durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A =&lt;br /&gt;
\begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 2 &amp;amp; 1 &amp;amp; 2 &amp;amp; 1 \\&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
0 &amp;amp; 0 &amp;amp; 0 &amp;amp; 1 &amp;amp; 2&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
gegeben.&lt;br /&gt;
&lt;br /&gt;
Beispielsweise lässt sich aus der ersten Spalte ablesen, dass zur Herstellung eines Bauteils &amp;lt;math&amp;gt;B_1&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 2 Einheiten von &amp;lt;math&amp;gt;E_1&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 1 Einheit von &amp;lt;math&amp;gt;E_2&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_3&amp;lt;/math&amp;gt;,&lt;br /&gt;
* 0 Einheiten von &amp;lt;math&amp;gt;E_4&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
benötigt werden.&lt;br /&gt;
&lt;br /&gt;
=== Produktion von Spielwaren aus Rohstoffen über Zwischenprodukte ===&lt;br /&gt;
&lt;br /&gt;
Ein Spielwarenhersteller produziert aus drei Rohstoffen &amp;lt;math&amp;gt;R_1,R_2,R_3&amp;lt;/math&amp;gt; zunächst die beiden Zwischenprodukte &amp;lt;math&amp;gt;Z_1,Z_2&amp;lt;/math&amp;gt;, aus denen anschließend die drei Endprodukte &amp;lt;math&amp;gt;E_1,E_2,E_3&amp;lt;/math&amp;gt; gefertigt werden.&lt;br /&gt;
&lt;br /&gt;
Die Pfeile im Gozintographen geben an, wie viele Mengeneinheiten eines Materials zur Produktion einer Mengeneinheit des entstehenden Produkts benötigt werden.&lt;br /&gt;
&lt;br /&gt;
Beispiel: Für die Herstellung einer Einheit &amp;lt;math&amp;gt;Z_1&amp;lt;/math&amp;gt; werden 3 Einheiten &amp;lt;math&amp;gt;R_1&amp;lt;/math&amp;gt; und 4 Einheiten &amp;lt;math&amp;gt;R_2&amp;lt;/math&amp;gt; benötigt.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Lineares_Gleichungssystem&amp;diff=2884</id>
		<title>Lineares Gleichungssystem</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Lineares_Gleichungssystem&amp;diff=2884"/>
		<updated>2026-05-27T08:00:58Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;lineares Gleichungssystem&#039;&#039;&#039; (LGS) ist eine Menge von linearen Gleichungen mit mehreren Unbekannten. Lineare Gleichungssysteme treten in vielen mathematischen und insbesondere betriebswirtschaftlichen Fragestellungen auf, z. B. bei der Produktionsplanung, Kostenrechnung oder in Stoffstromanalysen. Häufig werden lineare Gleichungssysteme mithilfe von [[Matrix|Matrizen]] dargestellt und algorithmisch gelöst.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Ein &#039;&#039;&#039;lineares Gleichungssystem&#039;&#039;&#039; mit &amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt; Gleichungen und &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; Unbekannten hat die allgemeine Form:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n &amp;amp;= b_1 \\&lt;br /&gt;
a_{21}x_1 + a_{22}x_2 + \dots + a_{2n}x_n &amp;amp;= b_2 \\&lt;br /&gt;
\vdots \qquad &amp;amp; \vdots \\&lt;br /&gt;
a_{m1}x_1 + a_{m2}x_2 + \dots + a_{mn}x_n &amp;amp;= b_m&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
mit den Koeffizienten &amp;lt;math&amp;gt;a_{ij} \in \mathbb{R}&amp;lt;/math&amp;gt; und den Werten der rechten Seite &amp;lt;math&amp;gt;b_i \in \mathbb{R}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Die &#039;&#039;&#039;Matrizengleichung&#039;&#039;&#039; des Systems lautet:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A \cdot x = b&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
wobei &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; die Koeffizientenmatrix, &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; der Unbekanntenvektor und &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; der Ergebnisvektor (rechte Seite) ist. &lt;br /&gt;
&lt;br /&gt;
Koppelt man die Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; mit dem Vektor &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt;, erhält man die &#039;&#039;&#039;erweiterte Koeffizientenmatrix&#039;&#039;&#039; &amp;lt;math&amp;gt;(A|b)&amp;lt;/math&amp;gt;. Diese wird in der Regel mit dem [[Gaußsches Eliminationsverfahren|Gaußschen Eliminationsverfahren]] umgeformt, um die Lösung des Systems zu ermitteln.&lt;br /&gt;
&lt;br /&gt;
== Homogene und inhomogene lineare Gleichungssysteme ==&lt;br /&gt;
* Ein &#039;&#039;&#039;homogenes&#039;&#039;&#039; lineares Gleichungssystem liegt vor, wenn &amp;lt;math&amp;gt;b = 0&amp;lt;/math&amp;gt; gilt (der Vektor der rechten Seite besteht nur aus Nullen), also &amp;lt;math&amp;gt;A \cdot x = 0&amp;lt;/math&amp;gt;. Es besitzt immer mindestens die triviale Lösung &amp;lt;math&amp;gt;x = 0&amp;lt;/math&amp;gt; (alle Unbekannten sind Null).&lt;br /&gt;
* Ein &#039;&#039;&#039;inhomogenes&#039;&#039;&#039; lineares Gleichungssystem liegt vor, wenn &amp;lt;math&amp;gt;b \neq 0&amp;lt;/math&amp;gt; gilt (mindestens ein Wert auf der rechten Seite ist ungleich Null). Es kann keine, genau eine oder unendlich viele Lösungen besitzen.&lt;br /&gt;
&lt;br /&gt;
== Lösungskriterien (Satz von Kronecker-Capelli) ==&lt;br /&gt;
Die Lösbarkeit eines linearen Gleichungssystems hängt vom [[Matrix#Rang|Rang]] der Koeffizientenmatrix &amp;lt;math&amp;gt;A \in \mathbb{R}^{m \times n}&amp;lt;/math&amp;gt; und der erweiterten Koeffizientenmatrix &amp;lt;math&amp;gt;(A|b)&amp;lt;/math&amp;gt; ab:&lt;br /&gt;
* Das System ist generell &#039;&#039;&#039;lösbar&#039;&#039;&#039;, wenn gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) = \operatorname{rang}(A|b)&amp;lt;/math&amp;gt;.&lt;br /&gt;
* Die Lösung ist &#039;&#039;&#039;eindeutig&#039;&#039;&#039;, wenn zusätzlich gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) = n&amp;lt;/math&amp;gt; (wobei &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; die Anzahl der Unbekannten ist).&lt;br /&gt;
* Es gibt &#039;&#039;&#039;unendlich viele Lösungen&#039;&#039;&#039;, wenn gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) = \operatorname{rang}(A|b) &amp;lt; n&amp;lt;/math&amp;gt;. In diesem Fall werden die Lösungen häufig in Abhängigkeit von einem oder mehreren &#039;&#039;&#039;Parametern&#039;&#039;&#039; angegeben.&lt;br /&gt;
* Es gibt &#039;&#039;&#039;keine Lösung&#039;&#039;&#039;, wenn gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) \neq \operatorname{rang}(A|b)&amp;lt;/math&amp;gt; (meist bedeutet dies &amp;lt;math&amp;gt;\operatorname{rang}(A) &amp;lt; \operatorname{rang}(A|b)&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
== Zeilenstufenform ==&lt;br /&gt;
In der &#039;&#039;&#039;Zeilenstufenform&#039;&#039;&#039; verringert sich in jeder Zeile der Matrix die Anzahl der Unbekannten um mindestens eine (Stufenbildung). Unterhalb der Stufen (führende Koeffizienten bzw. Pivotelemente) stehen ausschließlich Nullen. Die erweiterte Koeffizientenmatrix kann mithilfe des [[Gaußsches_Eliminationsverfahren|Gaußschen Eliminationsverfahrens]] in diese Form gebracht werden.&lt;br /&gt;
&lt;br /&gt;
Sind darüber hinaus alle Pivotelemente auf den Wert 1 normiert und stellen sie in ihrer jeweiligen Spalte den einzigen von Null verschiedenen Eintrag dar, spricht man von der &#039;&#039;&#039;reduzierten Zeilenstufenform&#039;&#039;&#039;. Hierfür verwendet man den erweiterten [[Gaußsches_Eliminationsverfahren|Gauß-Jordan-Algorithmus]].&lt;br /&gt;
&lt;br /&gt;
== Betriebswirtschaftliche Anwendungen ==&lt;br /&gt;
In der Betriebswirtschaft werden lineare Gleichungssysteme unter anderem verwendet zur:&lt;br /&gt;
* Produktions- und Kapazitätsplanung (z. B. optimale Ressourcenauslastung),&lt;br /&gt;
* innerbetrieblichen Kosten- und Erlösrechnung (z. B. Verteilung von Gemeinkosten),&lt;br /&gt;
* Analyse von Stoff- und Warenströmen (Gozintograph),&lt;br /&gt;
* Modellierung von Stücklisten und mehrstufigen Produktionsprozessen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Homogenes lineares Gleichungssystem ===&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
x_1 + 2x_2 - x_3 &amp;amp;= 0 \\&lt;br /&gt;
2x_1 + 4x_2 - 2x_3 &amp;amp;= 0&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Dieses System besitzt unendlich viele Lösungen, da die zweite Gleichung lediglich ein Vielfaches (das 2-fache) der ersten Gleichung ist. Die Gleichungen sind linear abhängig.&lt;br /&gt;
&lt;br /&gt;
=== Inhomogenes lineares Gleichungssystem ===&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
2x_1 + x_2 &amp;amp;= 5 \\&lt;br /&gt;
x_1 - x_2 &amp;amp;= 1&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Die eindeutige Lösung dieses Systems lautet &amp;lt;math&amp;gt;x_1 = 2&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2 = 1&amp;lt;/math&amp;gt;. Geometrisch entspricht dies dem Schnittpunkt zweier Geraden im zweidimensionalen Raum.&lt;br /&gt;
&lt;br /&gt;
=== Betriebswirtschaftliches Beispiel (Kapazitätsplanung) ===&lt;br /&gt;
Ein Unternehmen produziert zwei Produkte. Für Produkt 1 werden 2 Maschinenstunden, für Produkt 2 werden 3 Maschinenstunden benötigt. Insgesamt stehen 120 Maschinenstunden zur Verfügung. Zusätzlich sollen insgesamt exakt 50 Einheiten gefertigt werden (unabhängig davon, wie sie sich auf Produkt 1 und 2 aufteilen).&lt;br /&gt;
&lt;br /&gt;
Das entsprechende LGS lautet:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
1x_1 + 1x_2 &amp;amp;= 50 \quad \text{(Mengenrestriktion)} \\&lt;br /&gt;
2x_1 + 3x_2 &amp;amp;= 120 \quad \text{(Kapazitätsrestriktion)}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Lösen dieses Systems liefert das Ergebnis &amp;lt;math&amp;gt;x_1 = 30&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2 = 20&amp;lt;/math&amp;gt;. &lt;br /&gt;
&#039;&#039;&#039;Antwort:&#039;&#039;&#039; Es können exakt 30 Einheiten von Produkt 1 und 20 Einheiten von Produkt 2 gefertigt werden, um die Maschinenkapazität vollständig auszulasten.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Gau%C3%9Fsches_Eliminationsverfahren&amp;diff=2883</id>
		<title>Gaußsches Eliminationsverfahren</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Gau%C3%9Fsches_Eliminationsverfahren&amp;diff=2883"/>
		<updated>2026-05-27T07:58:38Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das &#039;&#039;&#039;Gaußsche Eliminationsverfahren&#039;&#039;&#039; (auch &#039;&#039;&#039;Gauß-Algorithmus&#039;&#039;&#039;) ist ein fundamentales algorithmisches Verfahren zur Lösung [[Lineares_Gleichungssystem|linearer Gleichungssysteme]]. Es basiert auf elementaren Zeilenumformungen von Matrizen und ermöglicht Aussagen über die Existenz, Eindeutigkeit und Struktur von Lösungsmengen. Das Verfahren ist eng mit der Theorie der [[Matrix|Matrizen]] verknüpft.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Das &#039;&#039;&#039;Gaußsche Eliminationsverfahren&#039;&#039;&#039; ist ein Verfahren zur schrittweisen Umformung der [[Lineares_Gleichungssystem#Erweiterte_Koeffizientenmatrix|erweiterten Koeffizientenmatrix]] &amp;lt;math&amp;gt;(A|b)&amp;lt;/math&amp;gt; eines linearen Gleichungssystems in eine sogenannte Zeilenstufenform. Wird die erweiterte Koeffizientenmatrix sogar in die [[Lineares_Gleichungssystem#Zeilenstufenform|reduzierte Zeilenstufenform]] gebracht (Einsen auf der Hauptdiagonale, ansonsten nur Nullen), sprechen wir vom &#039;&#039;&#039;Gauß-Jordan-Algorithmus&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Zulässige &#039;&#039;&#039;elementare Zeilenumformungen&#039;&#039;&#039; sind:&lt;br /&gt;
* Vertauschen zweier Zeilen,&lt;br /&gt;
* Multiplikation einer Zeile mit einer von null verschiedenen reellen Zahl,&lt;br /&gt;
* Addition (oder Subtraktion) eines Vielfachen einer Zeile zu einer anderen Zeile.&lt;br /&gt;
&lt;br /&gt;
Diese Umformungen verändern die Lösungsmenge des linearen Gleichungssystems nicht. Man nennt die resultierenden Matrizen daher &#039;&#039;äquivalent&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Ziel des Verfahrens ==&lt;br /&gt;
Ziel ist es, die Matrix so umzuformen, dass&lt;br /&gt;
* die Lösungen für die Variablen direkt abgelesen werden können oder&lt;br /&gt;
* der Rang der Matrix bestimmt werden kann.&lt;br /&gt;
&lt;br /&gt;
Damit lassen sich die Existenz und die Anzahl der Lösungen (genau eine Lösung, unendlich viele Lösungen, keine Lösung) eindeutig beurteilen.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang mit der Inversen einer Matrix ==&lt;br /&gt;
Für eine quadratische Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; gilt:&lt;br /&gt;
* &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; ist genau dann invertierbar, wenn für den [[Matrix#Rang|Rang]] von &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; gilt: &amp;lt;math&amp;gt;\operatorname{rang}(A) = n&amp;lt;/math&amp;gt; (voller Rang).&lt;br /&gt;
* Die [[Matrix#Inverse|Inverse]] &amp;lt;math&amp;gt;A^{-1}&amp;lt;/math&amp;gt; kann mithilfe des Gauß-Jordan-Algorithmus bestimmt werden, indem man die um die Einheitsmatrix erweiterte Matrix &amp;lt;math&amp;gt;(A|I)&amp;lt;/math&amp;gt; durch elementare Zeilenumformungen auf die Form &amp;lt;math&amp;gt;(I|A^{-1})&amp;lt;/math&amp;gt; umformt.&lt;br /&gt;
&lt;br /&gt;
== Lineare Matrizengleichungen ==&lt;br /&gt;
Matrizengleichungen der Form&lt;br /&gt;
:&amp;lt;math&amp;gt;A \cdot X = B&amp;lt;/math&amp;gt;&lt;br /&gt;
können mithilfe der Inversen gelöst werden durch:&lt;br /&gt;
:&amp;lt;math&amp;gt;X = A^{-1} \cdot B&amp;lt;/math&amp;gt;,&lt;br /&gt;
sofern &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; eine quadratische und invertierbare Matrix ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen in mehrstufigen Produktionsprozessen ==&lt;br /&gt;
In der Produktionswirtschaft werden Inverse von Matrizen (insbesondere Verflechtungsmatrizen) genutzt, um&lt;br /&gt;
* Stücklisten zu rekonstruieren,&lt;br /&gt;
* benötigte Rohstoffmengen direkt aus Endproduktanforderungen zu bestimmen,&lt;br /&gt;
* mehrstufige Produktionsprozesse auf Effizienz zu analysieren.&lt;br /&gt;
&lt;br /&gt;
Ist beispielsweise eine Herstellungsmatrix invertierbar, lassen sich aus den Zielvorgaben für die Endproduktmengen durch Rückwärtsrechnung direkt die erforderlichen Einsatzmengen berechnen.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Lösung eines linearen Gleichungssystems ===&lt;br /&gt;
Gegeben sei das System:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
x_1 + x_2 &amp;amp;= 5 \\&lt;br /&gt;
2x_1 + 3x_2 &amp;amp;= 13&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Matrizengleichung lautet:&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{pmatrix}&lt;br /&gt;
1 &amp;amp; 1 \\&lt;br /&gt;
2 &amp;amp; 3 \\&lt;br /&gt;
\end{pmatrix} \cdot \begin{pmatrix}&lt;br /&gt;
x_1  \\&lt;br /&gt;
x_2 \\&lt;br /&gt;
\end{pmatrix} = \begin{pmatrix}&lt;br /&gt;
5  \\&lt;br /&gt;
13 \\&lt;br /&gt;
\end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die erweiterte Koeffizientenmatrix lautet entsprechend:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|c}&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 5 \\&lt;br /&gt;
2 &amp;amp; 3 &amp;amp; 13&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 1:&#039;&#039;&#039; Wir subtrahieren das 2-fache der ersten Zeile von der zweiten Zeile (&amp;lt;math&amp;gt;Z_2 \rightarrow Z_2 - 2 \cdot Z_1&amp;lt;/math&amp;gt;), um eine Null in der linken unteren Ecke zu erzeugen:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|c}&lt;br /&gt;
1 &amp;amp; 1 &amp;amp; 5 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 3&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&#039;&#039;(Die Matrix befindet sich nun bereits in Zeilenstufenform. Der reguläre Gauß-Algorithmus wäre hier beendet und man könnte rückwärts einsetzen. Für den Gauß-Jordan-Algorithmus rechnen wir jedoch weiter.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2:&#039;&#039;&#039; Wir subtrahieren die zweite Zeile von der ersten Zeile (&amp;lt;math&amp;gt;Z_1 \rightarrow Z_1 - Z_2&amp;lt;/math&amp;gt;), um die reduzierte Zeilenstufenform zu erhalten:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|c}&lt;br /&gt;
1 &amp;amp; 0 &amp;amp; 2 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp; 3&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nach Anwendung des Verfahrens können wir die Lösung direkt ablesen: &lt;br /&gt;
:&amp;lt;math&amp;gt;x_1 = 2&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;x_2 = 3&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Bestimmung der Inversen ===&lt;br /&gt;
Wir berechnen die Inverse &amp;lt;math&amp;gt;A^{-1}&amp;lt;/math&amp;gt; zur folgenden Matrix:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix}&lt;br /&gt;
1 &amp;amp; 2 \\&lt;br /&gt;
3 &amp;amp; 4&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir notieren die Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; gekoppelt mit der Einheitsmatrix &amp;lt;math&amp;gt;I&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|cc}&lt;br /&gt;
1 &amp;amp; 2 &amp;amp; 1 &amp;amp; 0 \\&lt;br /&gt;
3 &amp;amp; 4 &amp;amp; 0 &amp;amp; 1&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 1:&#039;&#039;&#039; Wir subtrahieren das 3-fache der ersten Zeile von der zweiten Zeile (&amp;lt;math&amp;gt;Z_2 \rightarrow Z_2 - 3 \cdot Z_1&amp;lt;/math&amp;gt;):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|cc}&lt;br /&gt;
1 &amp;amp; 2 &amp;amp;  1 &amp;amp;  0 \\&lt;br /&gt;
0 &amp;amp; -2 &amp;amp; -3 &amp;amp;  1&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 2:&#039;&#039;&#039; Wir dividieren die zweite Zeile durch -2 (&amp;lt;math&amp;gt;Z_2 \rightarrow Z_2 / (-2)&amp;lt;/math&amp;gt;), um auf der Diagonale eine 1 zu erhalten:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|cc}&lt;br /&gt;
1 &amp;amp; 2 &amp;amp;  1   &amp;amp;  0 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp;  \frac{3}{2} &amp;amp; -\frac{1}{2}&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Schritt 3:&#039;&#039;&#039; Wir subtrahieren das 2-fache der zweiten Zeile von der ersten Zeile (&amp;lt;math&amp;gt;Z_1 \rightarrow Z_1 - 2 \cdot Z_2&amp;lt;/math&amp;gt;):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left(&lt;br /&gt;
\begin{array}{cc|cc}&lt;br /&gt;
1 &amp;amp; 0 &amp;amp; -2 &amp;amp;  1 \\&lt;br /&gt;
0 &amp;amp; 1 &amp;amp;  \frac{3}{2} &amp;amp; -\frac{1}{2}&lt;br /&gt;
\end{array}&lt;br /&gt;
\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Auf der linken Seite steht nun die Einheitsmatrix. Auf der rechten Seite können wir die gesuchte Inverse zu Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; ablesen:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A^{-1} = \begin{pmatrix}&lt;br /&gt;
-2 &amp;amp; 1 \\&lt;br /&gt;
\frac{3}{2} &amp;amp; -\frac{1}{2}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Produktionswirtschaftliches Beispiel ===&lt;br /&gt;
Eine invertierbare Herstellungsmatrix beschreibt den Zusammenhang zwischen Zwischen- und Endprodukten. Mithilfe der Inversen können aus bekannten Endproduktmengen die erforderlichen Zwischenproduktmengen berechnet werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Matrix&amp;diff=2882</id>
		<title>Matrix</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Matrix&amp;diff=2882"/>
		<updated>2026-05-27T07:53:14Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Eine &#039;&#039;&#039;Matrix&#039;&#039;&#039; ist eine rechteckige Anordnung von Zahlen oder Symbolen, die in Zeilen und Spalten organisiert ist. Matrizen dienen zur Darstellung und Berechnung linearer Zusammenhänge und werden in vielen Bereichen wie Wirtschaft, Technik, Informatik und Naturwissenschaften eingesetzt. Matrizen (insbesondere Verflechtungsmatrizen) werden häufig mit [[Gozintograph]]en grafisch veranschaulicht.&lt;br /&gt;
&lt;br /&gt;
== Definition ==&lt;br /&gt;
Eine rechteckige Anordnung von Zahlen oder Platzhaltern mit \(m \in \mathbb{N}\) Zeilen und \(n \in \mathbb{N}\) Spalten wird als &#039;&#039;&#039;\(m \times n\)-Matrix&#039;&#039;&#039; bezeichnet. \(a_{ij} \in \mathbb{R}\) ist das Element in Zeile \(i\) und Spalte \(j\).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix}&lt;br /&gt;
a_{11} &amp;amp; a_{12} &amp;amp; \dots &amp;amp; a_{1n} \\&lt;br /&gt;
a_{21} &amp;amp; a_{22} &amp;amp; \dots &amp;amp; a_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{m1} &amp;amp; a_{m2} &amp;amp; \dots &amp;amp; a_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
\(m \times n\) ist das &#039;&#039;&#039;Format&#039;&#039;&#039; oder die &#039;&#039;&#039;Dimension&#039;&#039;&#039; einer Matrix. Eine \(n \times n\)-Matrix heißt &#039;&#039;&#039;quadratische Matrix&#039;&#039;&#039;. Die Elemente \(a_{11}, \dots ,a_{nn}\) bilden die &#039;&#039;&#039;Hauptdiagonale&#039;&#039;&#039; der Matrix. Eine quadratische Matrix, deren Elemente auf der Hauptdiagonalen den Wert 1 haben und sonst überall 0 sind, heißt &#039;&#039;&#039;Einheitsmatrix&#039;&#039;&#039;. Eine Matrix, die nur aus einer Spalte besteht, heißt &#039;&#039;&#039;Spaltenvektor&#039;&#039;&#039;. Eine Matrix, die nur aus einer Zeile besteht, heißt &#039;&#039;&#039;Zeilenvektor&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== Transponierte Matrix ==&lt;br /&gt;
Es sei &lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix}&lt;br /&gt;
a_{11} &amp;amp; a_{12} &amp;amp; \dots &amp;amp; a_{1n} \\&lt;br /&gt;
a_{21} &amp;amp; a_{22} &amp;amp; \dots &amp;amp; a_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{m1} &amp;amp; a_{m2} &amp;amp; \dots &amp;amp; a_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt; &lt;br /&gt;
eine \(m \times n\)-Matrix. Die &#039;&#039;&#039;transponierte Matrix&#039;&#039;&#039; \(A^T\) entsteht, indem man die Zeilen und Spalten vertauscht. Das Ergebnis ist eine \(n \times m\)-Matrix. Es gilt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A^T = \begin{pmatrix}&lt;br /&gt;
a_{11} &amp;amp; a_{21} &amp;amp; \dots &amp;amp; a_{m1} \\&lt;br /&gt;
a_{12} &amp;amp; a_{22} &amp;amp; \dots &amp;amp; a_{m2} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{1n} &amp;amp; a_{2n} &amp;amp; \dots &amp;amp; a_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Addition ==&lt;br /&gt;
Zwei Matrizen lassen sich nur addieren, wenn sie das exakt gleiche Format haben. Es seien A und B \(m \times n\)-Matrizen, dann werden diese komponentenweise addiert:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A + B = \begin{pmatrix}&lt;br /&gt;
a_{11}+b_{11} &amp;amp; a_{12}+b_{12} &amp;amp; \dots &amp;amp; a_{1n}+b_{1n} \\&lt;br /&gt;
a_{21}+b_{21} &amp;amp; a_{22}+b_{22} &amp;amp; \dots &amp;amp; a_{2n}+b_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{m1}+b_{m1} &amp;amp; a_{m2}+b_{m2} &amp;amp; \dots &amp;amp; a_{mn}+b_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Subtraktion ==&lt;br /&gt;
Analog zur Addition gilt für die Subtraktion zweier \(m \times n\)-Matrizen A und B:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A - B = \begin{pmatrix}&lt;br /&gt;
a_{11}-b_{11} &amp;amp; a_{12}-b_{12} &amp;amp; \dots &amp;amp; a_{1n}-b_{1n} \\&lt;br /&gt;
a_{21}-b_{21} &amp;amp; a_{22}-b_{22} &amp;amp; \dots &amp;amp; a_{2n}-b_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
a_{m1}-b_{m1} &amp;amp; a_{m2}-b_{m2} &amp;amp; \dots &amp;amp; a_{mn}-b_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Skalarmultiplikation ==&lt;br /&gt;
Eine Matrix wird mit einer reellen Zahl (Skalar) multipliziert, indem man jeden einzelnen Eintrag der Matrix mit dieser Zahl multipliziert. Es sei A eine \(m \times n\)-Matrix und \(\lambda \in \mathbb{R}\) ein Skalar, dann gilt:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\lambda \cdot A = \begin{pmatrix}&lt;br /&gt;
\lambda \cdot a_{11} &amp;amp; \lambda \cdot a_{12} &amp;amp; \dots &amp;amp; \lambda \cdot a_{1n} \\&lt;br /&gt;
\lambda \cdot a_{21} &amp;amp; \lambda \cdot a_{22} &amp;amp; \dots &amp;amp; \lambda \cdot a_{2n} \\&lt;br /&gt;
\vdots &amp;amp; \vdots &amp;amp; \ddots &amp;amp; \vdots \\&lt;br /&gt;
\lambda \cdot a_{m1} &amp;amp; \lambda \cdot a_{m2} &amp;amp; \dots &amp;amp; \lambda \cdot a_{mn}&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Skalarprodukt ==&lt;br /&gt;
Gegeben seien ein Zeilenvektor &amp;lt;math&amp;gt;a \in \mathbb{R}^n&amp;lt;/math&amp;gt; und ein Spaltenvektor &amp;lt;math&amp;gt;b \in \mathbb{R}^n&amp;lt;/math&amp;gt; (beide Vektoren müssen dieselbe Dimension &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; haben), dann ist das Skalarprodukt definiert durch:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
a\cdot b=\begin{pmatrix} a_{1} &amp;amp; a_{2} &amp;amp; \dots &amp;amp;  a_{n} &lt;br /&gt;
\end{pmatrix} \cdot \begin{pmatrix} b_{1} \\ b_{2} \\ \vdots \\  b_{n} &lt;br /&gt;
\end{pmatrix} = a_1 \cdot b_1 + a_2 \cdot b_2 + \dots + a_n \cdot b_n&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Multiplikation ==&lt;br /&gt;
Zwei Matrizen lassen sich nur miteinander multiplizieren, wenn die Anzahl der Spalten der ersten Matrix gleich der Anzahl der Zeilen der zweiten Matrix ist. &lt;br /&gt;
&lt;br /&gt;
Es sei A eine \(m \times r\)-Matrix und B eine \(r \times n\)-Matrix. Dann wird das Produkt \(A \cdot B \) berechnet, indem das Skalarprodukt aus jedem Zeilenvektor von \(A\) mit jedem Spaltenvektor von \(B\) gebildet wird (Merkregel: &#039;&#039;&#039;&amp;quot;Zeile mal Spalte&amp;quot;&#039;&#039;&#039;). Zur besseren Übersicht verwendet man hierfür häufig das [[Falksches_Schema|Falksche Schema]]. Das Ergebnis ist eine neue \(m \times n\)-Matrix.&lt;br /&gt;
&lt;br /&gt;
== Rang ==&lt;br /&gt;
Der &#039;&#039;&#039;Rang&#039;&#039;&#039; einer [[Matrix]] ist eine zentrale Kenngröße zur Analyse [[Lineares_Gleichungssystem|linearer Gleichungssysteme]]. Er gibt an, wie viele Zeilen (bzw. Spalten) einer Matrix [[Lineare_Unabhängigkeit|linear unabhängig]] sind.&lt;br /&gt;
&lt;br /&gt;
Formal ist der Rang einer Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; die maximale Anzahl linear unabhängiger Zeilen oder Spalten von &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Man bezeichnet ihn mit &amp;lt;math&amp;gt;\operatorname{rang}(A)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Der Rang kann mithilfe des [[Gaußsches Eliminationsverfahren|Gaußschen Eliminationsverfahrens]] bestimmt werden:&lt;br /&gt;
* Man bringt die Matrix in Zeilenstufenform.&lt;br /&gt;
* Der Rang entspricht der Anzahl der von Null verschiedenen Zeilen.&lt;br /&gt;
&lt;br /&gt;
== Inverse ==&lt;br /&gt;
Die &#039;&#039;&#039;Inverse einer Matrix&#039;&#039;&#039; \( A \in \mathbb{R}^{n \times n} \) ist die eindeutige Matrix \( A^{-1} \), für die gilt:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A \cdot A^{-1} = A^{-1} \cdot A = I_n&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
wobei \( I_n \) die Einheitsmatrix der Größe \( n \times n \) ist. Die Inverse kann unter anderem mit dem [[Gaußsches_Eliminationsverfahren#Bestimmung_der_Inversen|Gauß-Jordan-Algorithmus]] berechnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Aufstellen einer Transportmatrix und einer Kostenmatrix ===&lt;br /&gt;
Ein Unternehmen betreibt drei Steinbrüche (S1 bis S3) und zwei Betonwerke (B1 und B2). Die in einem Monat transportierten Mengen Kies (in t) sowie die Transportkosten (in €/t) sind tabellarisch gegeben:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   Transport   !! B1   !! B2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S1&#039;&#039;&#039;   || 100  || 200&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S2&#039;&#039;&#039;   || 150  || 300&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S3&#039;&#039;&#039;   || 90   || 110&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!   Kosten   !! B1   !! B2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S1&#039;&#039;&#039;   || 0,5  || 2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S2&#039;&#039;&#039;   || 0,3  || 1&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;S3&#039;&#039;&#039;   || 0,4  || 0,25&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Daraus ergibt sich die Transportmatrix &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt; und die Kostenmatrix &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
T = \begin{pmatrix}&lt;br /&gt;
100 &amp;amp; 200 \\&lt;br /&gt;
150 &amp;amp; 300 \\&lt;br /&gt;
90 &amp;amp; 110 \\&lt;br /&gt;
\end{pmatrix}, \quad&lt;br /&gt;
K = \begin{pmatrix}&lt;br /&gt;
0,5 &amp;amp; 2 \\&lt;br /&gt;
0,3 &amp;amp; 1 \\&lt;br /&gt;
0,4 &amp;amp; 0,25 \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aufstellen von Herstellungsmatrizen ===&lt;br /&gt;
Ein Unternehmen stellt aus Rohstoffen (R1, R2) über Zwischenprodukte (Z1, Z2, Z3) schließlich Endprodukte (E1, E2) her. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Stückliste 1 !! Z1 !! Z2 !! Z3 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R1&#039;&#039;&#039; || 3 || 2 || 4 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;R2&#039;&#039;&#039; || 5 || 1 || 3 &lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
! Stückliste 2 !! E1 !! E2 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Z1&#039;&#039;&#039; || 1 || 3 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Z2&#039;&#039;&#039; || 2 || 4 &lt;br /&gt;
|- &lt;br /&gt;
| &#039;&#039;&#039;Z3&#039;&#039;&#039; || 1 || 2 &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Damit ergeben sich die Herstellungsmatrix &amp;lt;math&amp;gt;RZ&amp;lt;/math&amp;gt; (Rohstoffe zu Zwischenprodukten) und &amp;lt;math&amp;gt;ZE&amp;lt;/math&amp;gt; (Zwischenprodukte zu Endprodukten):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
RZ = \begin{pmatrix} 3 &amp;amp; 2 &amp;amp; 4 \\ 5 &amp;amp; 1 &amp;amp; 3 \end{pmatrix}, \quad&lt;br /&gt;
ZE = \begin{pmatrix} 1 &amp;amp; 3 \\ 2 &amp;amp; 4 \\ 1 &amp;amp; 2 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transponierte Matrix berechnen ===&lt;br /&gt;
Gegeben sei die Matrix &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;. Durch Vertauschen von Zeilen und Spalten erhält man &amp;lt;math&amp;gt;A^T&amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix}&lt;br /&gt;
1 &amp;amp; 2 &amp;amp; 3 \\&lt;br /&gt;
4 &amp;amp; 5 &amp;amp; 6 \\&lt;br /&gt;
7 &amp;amp; 8 &amp;amp; 9&lt;br /&gt;
\end{pmatrix} \quad \Rightarrow \quad&lt;br /&gt;
A^T = \begin{pmatrix}&lt;br /&gt;
1 &amp;amp; 4 &amp;amp; 7 \\&lt;br /&gt;
2 &amp;amp; 5 &amp;amp; 8 \\&lt;br /&gt;
3 &amp;amp; 6 &amp;amp; 9&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Addition und Subtraktion von Matrizen ===&lt;br /&gt;
Gegeben seien&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
A = \begin{pmatrix} 1 &amp;amp; 3 \\ 2 &amp;amp; 4 \end{pmatrix}, \quad&lt;br /&gt;
B = \begin{pmatrix} 5 &amp;amp; 2 \\ 1 &amp;amp; 3 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
dann wird die Summe durch komponentenweise Addition berechnet:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
A + B = \begin{pmatrix} &lt;br /&gt;
1+5 &amp;amp; 3+2 \\ &lt;br /&gt;
2+1 &amp;amp; 4+3 &lt;br /&gt;
\end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
6 &amp;amp; 5 \\ &lt;br /&gt;
3 &amp;amp; 7 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Gegeben seien&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
C = \begin{pmatrix} 7 &amp;amp; 4 \\ 6 &amp;amp; 2 \end{pmatrix}, \quad&lt;br /&gt;
D = \begin{pmatrix} 3 &amp;amp; 1 \\ 2 &amp;amp; 5 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
dann wird die Differenz von C und D durch komponentenweise Subtraktion berechnet:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
C - D = \begin{pmatrix} &lt;br /&gt;
7-3 &amp;amp; 4-1 \\ &lt;br /&gt;
6-2 &amp;amp; 2-5 &lt;br /&gt;
\end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
4 &amp;amp; 3 \\ &lt;br /&gt;
4 &amp;amp; -3 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Skalarmultiplikation durchführen ===&lt;br /&gt;
Gegeben sei die Matrix &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; und der Skalar &amp;lt;math&amp;gt;\lambda = 3&amp;lt;/math&amp;gt;. Die Multiplikation ergibt:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
3 \cdot \begin{pmatrix}&lt;br /&gt;
2 &amp;amp; 4 &amp;amp; 1 \\&lt;br /&gt;
0 &amp;amp; 3 &amp;amp; 5 \\&lt;br /&gt;
7 &amp;amp; 1 &amp;amp; 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
= \begin{pmatrix}&lt;br /&gt;
3 \cdot 2 &amp;amp; 3 \cdot 4 &amp;amp; 3 \cdot 1 \\&lt;br /&gt;
3 \cdot 0 &amp;amp; 3 \cdot 3 &amp;amp; 3 \cdot 5 \\&lt;br /&gt;
3 \cdot 7 &amp;amp; 3 \cdot 1 &amp;amp; 3 \cdot 6&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
= \begin{pmatrix}&lt;br /&gt;
6 &amp;amp; 12 &amp;amp; 3 \\&lt;br /&gt;
0 &amp;amp; 9 &amp;amp; 15 \\&lt;br /&gt;
21 &amp;amp; 3 &amp;amp; 18&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Das Skalarprodukt berechnen ===&lt;br /&gt;
Der Zeilenvektor &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; und der Spaltenvektor &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; seien wie folgt gegeben:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
a = \begin{pmatrix} 2 &amp;amp; -1 &amp;amp; 3 \end{pmatrix}, \quad&lt;br /&gt;
b = \begin{pmatrix} 4 \\ 2 \\ 1 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Das Skalarprodukt wird dann berechnet durch:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
a \cdot b = (2 \cdot 4) + (-1 \cdot 2) + (3 \cdot 1) = 8 - 2 + 3 = 9&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiplikation von Matrizen ===&lt;br /&gt;
Gegeben seien die Matrizen&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
E = \begin{pmatrix} 1 &amp;amp; 2 \\ 3 &amp;amp; 4 \end{pmatrix}, \quad&lt;br /&gt;
F = \begin{pmatrix} 2 &amp;amp; 0 \\ 1 &amp;amp; 3 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;.&lt;br /&gt;
Diese werden nach dem Prinzip &amp;quot;Zeile mal Spalte&amp;quot; multipliziert:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
E \cdot F = \begin{pmatrix} &lt;br /&gt;
1\cdot2 + 2\cdot1 &amp;amp; 1\cdot0 + 2\cdot3 \\ &lt;br /&gt;
3\cdot2 + 4\cdot1 &amp;amp; 3\cdot0 + 4\cdot3 &lt;br /&gt;
\end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
4 &amp;amp; 6 \\ &lt;br /&gt;
10 &amp;amp; 12 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&#039;&#039;Wichtig:&#039;&#039; Die Matrixmultiplikation ist nicht kommutativ, d. h. im Allgemeinen gilt &amp;lt;math&amp;gt;E \cdot F \neq F \cdot E &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Kombination von Skalarmultiplikation und Addition ===&lt;br /&gt;
Gegeben seien:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
G = \begin{pmatrix} 2 &amp;amp; 1 \\ 0 &amp;amp; 3 \end{pmatrix}, \quad&lt;br /&gt;
H = \begin{pmatrix} 1 &amp;amp; 4 \\ 2 &amp;amp; 1 \end{pmatrix}, \quad&lt;br /&gt;
\lambda = 2&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
Kombinierte Berechnung gemäß Klammerregeln (zuerst addieren, dann mit dem Skalar multiplizieren):&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
2 \cdot (G + H) = 2 \cdot \left( \begin{pmatrix} 2 &amp;amp; 1 \\ 0 &amp;amp; 3 \end{pmatrix} + \begin{pmatrix} 1 &amp;amp; 4 \\ 2 &amp;amp; 1 \end{pmatrix} \right) = 2 \cdot \begin{pmatrix} 3 &amp;amp; 5 \\ 2 &amp;amp; 4 \end{pmatrix} = \begin{pmatrix} 6 &amp;amp; 10 \\ 4 &amp;amp; 8 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Komplexe Kombination verschiedener Rechenoperationen ===&lt;br /&gt;
Gegeben seien:&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
G = \begin{pmatrix} 2 &amp;amp; 1 \\ 0 &amp;amp; 3 \end{pmatrix}, \quad&lt;br /&gt;
H = \begin{pmatrix} 1 &amp;amp; 4 \\ 2 &amp;amp; 1 \end{pmatrix}, \quad&lt;br /&gt;
J = \begin{pmatrix} 3 &amp;amp; 1 \\ 2 &amp;amp; 2 \end{pmatrix}, \quad&lt;br /&gt;
\lambda = 2, \quad \mu = 3&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu berechnen ist der Term: &amp;lt;math&amp;gt;\lambda \cdot G + \mu \cdot (H \cdot J)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Schritt: Matrixmultiplikation (Klammer auflösen)&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
H \cdot J = \begin{pmatrix} &lt;br /&gt;
1\cdot3 + 4\cdot2 &amp;amp; 1\cdot1 + 4\cdot2 \\&lt;br /&gt;
2\cdot3 + 1\cdot2 &amp;amp; 2\cdot1 + 1\cdot2 &lt;br /&gt;
\end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
11 &amp;amp; 9 \\&lt;br /&gt;
8 &amp;amp; 4 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Schritt: Skalarmultiplikationen&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
2 \cdot G = \begin{pmatrix} 4 &amp;amp; 2 \\ 0 &amp;amp; 6 \end{pmatrix}, \quad&lt;br /&gt;
3 \cdot (H \cdot J) = \begin{pmatrix} 33 &amp;amp; 27 \\ 24 &amp;amp; 12 \end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Schritt: Addition der Ergebnisse&#039;&#039;&#039;&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{pmatrix} 4 &amp;amp; 2 \\ 0 &amp;amp; 6 \end{pmatrix} + \begin{pmatrix} 33 &amp;amp; 27 \\ 24 &amp;amp; 12 \end{pmatrix} = \begin{pmatrix} &lt;br /&gt;
37 &amp;amp; 29 \\&lt;br /&gt;
24 &amp;amp; 18 &lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Endergebnis: &amp;lt;math&amp;gt;\lambda \cdot G + \mu \cdot (H \cdot J) = \begin{pmatrix} 37 &amp;amp; 29 \\ 24 &amp;amp; 18 \end{pmatrix}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Lineare_Algebra]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Vierfeldertafel&amp;diff=2881</id>
		<title>Vierfeldertafel</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Vierfeldertafel&amp;diff=2881"/>
		<updated>2026-05-27T07:45:44Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die Vierfeldertafel wird neben dem [[Baumdiagramm_(Wahrscheinlichkeitsrechnung)|Baumdiagramm]] zur tabellarischen und strukturierten Darstellung von [[Zufallsexperiment|Zufallsexperimenten]] und ihren [[Wahrscheinlichkeitsverteilung|Wahrscheinlichkeitsverteilungen]] verwendet.&lt;br /&gt;
&lt;br /&gt;
== Definition ==  &lt;br /&gt;
Eine &#039;&#039;&#039;Vierfeldertafel&#039;&#039;&#039; ist eine Übersicht, die verwendet wird, um die Zusammenhänge zwischen zwei [[Zufallsexperiment#Ereignis|Ereignissen]] und ihren [[Zufallsexperiment#Gegenereignis|Gegenereignissen]] zu analysieren. Sie ermöglicht die schnelle Bestimmung von Schnittmengen und bildet die Basis für die Berechnung von [[Bedingte Wahrscheinlichkeit|bedingten Wahrscheinlichkeiten]].  &lt;br /&gt;
&lt;br /&gt;
Die Vierfeldertafel besteht im Kern aus vier Feldern, die die Kombinationen der beiden Ereignisse (z. B. &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;) sowie deren Gegenereignisse (&amp;lt;math&amp;gt;\overline{A}&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;\overline{B}&amp;lt;/math&amp;gt;) abbilden. Zusätzlich werden an den Rändern die sogenannten Randwahrscheinlichkeiten (Totals) angegeben, um die Gesamtwahrscheinlichkeiten der einzelnen Ereignisse zu verdeutlichen.  &lt;br /&gt;
&lt;br /&gt;
== Aufbau einer Vierfeldertafel ==  &lt;br /&gt;
Eine Vierfeldertafel hat bezüglich relativer Wahrscheinlichkeiten standardmäßig folgende Struktur:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|               || &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;       || &amp;lt;math&amp;gt;\overline{B}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\sum&amp;lt;/math&amp;gt;  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;         || &amp;lt;math&amp;gt;P(A \cap B)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(A \cap \overline{B})&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(A)&amp;lt;/math&amp;gt;  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;\overline{A}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(\overline{A} \cap B)&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(\overline{A} \cap \overline{B})&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;P(\overline{A})&amp;lt;/math&amp;gt;  &lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;\sum&amp;lt;/math&amp;gt;     || &amp;lt;math&amp;gt;P(B)&amp;lt;/math&amp;gt;    || &amp;lt;math&amp;gt;P(\overline{B})&amp;lt;/math&amp;gt; || &#039;&#039;&#039;1&#039;&#039;&#039;  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die Randwahrscheinlichkeiten ergeben sich stets aus der Summe der jeweiligen Zeilen oder Spalten. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prüfungshinweis:&#039;&#039; Neben Wahrscheinlichkeiten können in eine Vierfeldertafel auch &#039;&#039;&#039;absolute Häufigkeiten&#039;&#039;&#039; (z. B. konkrete Personenanzahlen) eingetragen werden. In diesem Fall steht im Feld rechts unten nicht die `1`, sondern die Gesamtgröße der Stichprobe (z. B. 10.000 Personen). Wahrscheinlichkeiten und absolute Zahlen dürfen innerhalb einer Tabelle niemals gemischt werden!&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==  &lt;br /&gt;
&lt;br /&gt;
=== Medizinischer Test ===  &lt;br /&gt;
[[Datei:VierfeldertafelBaumdiagrammMedizinischerTest.png|mini|[[Baumdiagramm_(Wahrscheinlichkeitsrechnung)|Baumdiagramm]] zum Beispiel - Medizinischer Test]]&lt;br /&gt;
&lt;br /&gt;
Ein medizinischer Test weist eine Krankheit mit einer Wahrscheinlichkeit von 95 % richtig nach (Sensitivität). Gesunde Personen werden mit einer Wahrscheinlichkeit von 90 % korrekterweise als gesund erkannt (Spezifität). In der Bevölkerung haben 2 % der Menschen diese Krankheit (Prävalenz).  &lt;br /&gt;
&lt;br /&gt;
Überträgt man diese Werte über die 1. Pfadregel in die Vierfeldertafel, sieht diese wie folgt aus:  &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|               || &#039;&#039;&#039;Test positiv (&amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;)&#039;&#039;&#039; || &#039;&#039;&#039;Test negativ (&amp;lt;math&amp;gt;\overline{T}&amp;lt;/math&amp;gt;)&#039;&#039;&#039; || &#039;&#039;&#039;Total&#039;&#039;&#039;  &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Krank (&amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;)&#039;&#039;&#039; || &amp;lt;math&amp;gt;0,02 \cdot 0,95 =&amp;lt;/math&amp;gt; &#039;&#039;&#039;0,019&#039;&#039;&#039; || &amp;lt;math&amp;gt;0,02 \cdot 0,05 =&amp;lt;/math&amp;gt; &#039;&#039;&#039;0,001&#039;&#039;&#039; || &#039;&#039;&#039;0,02&#039;&#039;&#039;  &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Gesund (&amp;lt;math&amp;gt;\overline{K}&amp;lt;/math&amp;gt;)&#039;&#039;&#039; || &amp;lt;math&amp;gt;0,98 \cdot 0,10 =&amp;lt;/math&amp;gt; &#039;&#039;&#039;0,098&#039;&#039;&#039; || &amp;lt;math&amp;gt;0,98 \cdot 0,90 =&amp;lt;/math&amp;gt; &#039;&#039;&#039;0,882&#039;&#039;&#039; || &#039;&#039;&#039;0,98&#039;&#039;&#039;  &lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Total&#039;&#039;&#039;     || &#039;&#039;&#039;0,117&#039;&#039;&#039;             || &#039;&#039;&#039;0,883&#039;&#039;&#039;                          || &#039;&#039;&#039;1&#039;&#039;&#039;  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Formale Berechnungen (aus der Tabelle abgeleitet):&#039;&#039;&#039;  &lt;br /&gt;
&lt;br /&gt;
Wahrscheinlichkeit, dass eine Person krank ist &#039;&#039;&#039;und&#039;&#039;&#039; positiv getestet wird (Schnittmenge): &lt;br /&gt;
:&amp;lt;math&amp;gt;P(K \cap T) = P(K) \cdot P_K(T) = 0,02 \cdot 0,95 = 0,019&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Totale Wahrscheinlichkeit, dass der Test (ungeachtet des Gesundheitszustands) positiv ausfällt (Spaltensumme):&lt;br /&gt;
:&amp;lt;math&amp;gt;P(T) = P(K \cap T) + P(\overline{K} \cap T) = 0,019 + 0,098 = 0,117&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[[Bedingte Wahrscheinlichkeit]], dass eine Person &#039;&#039;&#039;tatsächlich krank&#039;&#039;&#039; ist, unter der Vorbedingung, dass der Test positiv ist:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P_T(K) = \frac{P(K \cap T)}{P(T)} = \frac{0,019}{0,117} \approx 0,1624 \approx 16,2\,\%&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]] &lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Bedingte_Wahrscheinlichkeit&amp;diff=2880</id>
		<title>Bedingte Wahrscheinlichkeit</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Bedingte_Wahrscheinlichkeit&amp;diff=2880"/>
		<updated>2026-05-27T07:43:15Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Definition ==&lt;br /&gt;
Die &#039;&#039;&#039;bedingte Wahrscheinlichkeit&#039;&#039;&#039; &amp;lt;math&amp;gt;P_B(A)&amp;lt;/math&amp;gt; bzw. &amp;lt;math&amp;gt;P(A|B)&amp;lt;/math&amp;gt; beschreibt die Wahrscheinlichkeit eines [[Zufallsexperiment#Ereignis|Ereignisses]] &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; unter der Voraussetzung, dass ein anderes Ereignis &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; bereits eingetreten ist. Wir sagen auch &amp;quot;Wahrscheinlichkeit von A unter der Bedingung B&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Es seien &amp;lt;math&amp;gt;A, B&amp;lt;/math&amp;gt; Ereignisse mit &amp;lt;math&amp;gt;P(B) &amp;gt; 0&amp;lt;/math&amp;gt;, dann gilt:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P(A \cap B)}{P(B)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Stochastische Unabhängigkeit ==&lt;br /&gt;
Zwei Ereignisse &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; heißen &#039;&#039;&#039;stochastisch unabhängig&#039;&#039;&#039;, wenn&lt;br /&gt;
:&amp;lt;math&amp;gt;P(A \cap B) = P(A) \cdot P(B)&amp;lt;/math&amp;gt;&lt;br /&gt;
gilt.&lt;br /&gt;
&lt;br /&gt;
Dies bedeutet, dass das Eintreten von &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; die Wahrscheinlichkeit von &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; nicht beeinflusst. Für bedingte Wahrscheinlichkeiten bei stochastisch unabhängigen Ereignissen gilt demnach (vorausgesetzt die Wahrscheinlichkeiten sind größer als 0):&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = P(A)&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;P_A(B) = P(B)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Zusammenhang mit der Vierfeldertafel ==&lt;br /&gt;
Die [[Vierfeldertafel]] eignet sich besonders gut zur Veranschaulichung bedingter Wahrscheinlichkeiten und zur Überprüfung auf stochastische Unabhängigkeit. &lt;br /&gt;
&lt;br /&gt;
Hierbei stehen die Variablen &amp;lt;math&amp;gt;a, b, c, d&amp;lt;/math&amp;gt; für die Wahrscheinlichkeiten der jeweiligen Schnittmengen (z. B. &amp;lt;math&amp;gt;a = P(A \cap B)&amp;lt;/math&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|               || &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt;       || &amp;lt;math&amp;gt;\bar{B}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;\sum&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;       || &amp;lt;math&amp;gt;a&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;b&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;a+b&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;\bar{A}&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; || &amp;lt;math&amp;gt;c+d&amp;lt;/math&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;math&amp;gt;\sum&amp;lt;/math&amp;gt;    || &amp;lt;math&amp;gt;a+c&amp;lt;/math&amp;gt;    || &amp;lt;math&amp;gt;b+d&amp;lt;/math&amp;gt; || &#039;&#039;&#039;1&#039;&#039;&#039;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Die bedingte Wahrscheinlichkeit &amp;lt;math&amp;gt;P_B(A)&amp;lt;/math&amp;gt; lässt sich dann direkt aus der Tafel ablesen und berechnen durch:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{a}{a+c}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Satz von Bayes ==&lt;br /&gt;
Es seien &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; Ereignisse mit &amp;lt;math&amp;gt;P(B) &amp;gt; 0&amp;lt;/math&amp;gt;. Die Wahrscheinlichkeiten &amp;lt;math&amp;gt;P_A(B)&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;P(A)&amp;lt;/math&amp;gt; und &amp;lt;math&amp;gt;P(\bar{A})&amp;lt;/math&amp;gt; seien gegeben. Die Wahrscheinlichkeit von &amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt; unter der Bedingung &amp;lt;math&amp;gt;B&amp;lt;/math&amp;gt; wird dann durch&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P_A(B) \cdot P(A)}{P(B)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
berechnet. Oftmals ist &amp;lt;math&amp;gt;P(B)&amp;lt;/math&amp;gt; nicht direkt gegeben und muss über das Gesetz der totalen Wahrscheinlichkeit (die Pfadadditionsregel im Baumdiagramm) ermittelt werden. Die erweiterte Formel lautet dann:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P_A(B) \cdot P(A)}{P_A(B) \cdot P(A) + P_{\bar{A}}(B) \cdot P(\bar{A})}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Medizinischer Test (mit Vierfeldertafel) ===&lt;br /&gt;
Fortsetzung des Beispiels aus der [[Vierfeldertafel#Medizinischer_Test|Vierfeldertafel]]:&lt;br /&gt;
* Sensitivität &amp;lt;math&amp;gt;P_K(T) = 0,95&amp;lt;/math&amp;gt;&lt;br /&gt;
* Spezifität &amp;lt;math&amp;gt;P_{\bar{K}}(\bar{T}) = 0,90&amp;lt;/math&amp;gt;&lt;br /&gt;
* Prävalenz (Krankheitsrate) &amp;lt;math&amp;gt;P(K) = 0,02&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Wahrscheinlichkeit krank zu sein bei positivem Test ist eine bedingte Wahrscheinlichkeit:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_T(K) = \frac{P(K \cap T)}{P(T)} = \frac{0,019}{0,117} \approx 16,2\%&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative Berechnung direkt mit dem &#039;&#039;&#039;Satz von Bayes&#039;&#039;&#039;:&lt;br /&gt;
&lt;br /&gt;
Zuerst berechnen wir &amp;lt;math&amp;gt;P(T)&amp;lt;/math&amp;gt; über die totale Wahrscheinlichkeit:&lt;br /&gt;
:&amp;lt;math&amp;gt;P(T) = P_K(T) \cdot P(K) + P_{\bar{K}}(T) \cdot P(\bar{K})&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(T) = 0,95 \cdot 0,02 + (1 - 0,90) \cdot 0,98 = 0,019 + 0,098 = 0,117&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun wenden wir den Satz von Bayes an:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_T(K) = \frac{P_K(T) \cdot P(K)}{P(T)} = \frac{0,95 \cdot 0,02}{0,117} \approx 0,162&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interpretation:&#039;&#039;&#039; Trotz eines positiven Testergebnisses beträgt die Wahrscheinlichkeit, tatsächlich krank zu sein, nur etwa 16,2 % – dies liegt an der niedrigen Prävalenz (seltene Krankheit) in Kombination mit der Fehlerquote des Tests.&lt;br /&gt;
&lt;br /&gt;
=== Würfelbeispiel zur stochastischen Unabhängigkeit ===&lt;br /&gt;
Betrachtet man zwei Ereignisse bei einem fairen sechsseitigen Würfel:&lt;br /&gt;
* A: &amp;quot;Gerade Zahl&amp;quot; = {2,4,6} → &amp;lt;math&amp;gt;P(A) = \frac{3}{6} = \frac{1}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
* B: &amp;quot;Zahl &amp;gt; 3&amp;quot; = {4,5,6} → &amp;lt;math&amp;gt;P(B) = \frac{3}{6} = \frac{1}{2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Schnittmenge: &amp;lt;math&amp;gt;A \cap B&amp;lt;/math&amp;gt; = {4,6} → &amp;lt;math&amp;gt;P(A \cap B) = \frac{2}{6} = \frac{1}{3}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wir prüfen auf stochastische Unabhängigkeit:&lt;br /&gt;
:&amp;lt;math&amp;gt;P(A) \cdot P(B) = \frac{1}{2} \cdot \frac{1}{2} = \frac{1}{4}&amp;lt;/math&amp;gt;&lt;br /&gt;
Da &amp;lt;math&amp;gt;\frac{1}{4} \neq \frac{1}{3}&amp;lt;/math&amp;gt;, sind die Ereignisse &#039;&#039;&#039;nicht&#039;&#039;&#039; stochastisch unabhängig.&lt;br /&gt;
&lt;br /&gt;
Die bedingte Wahrscheinlichkeit berechnet sich zu:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P(A \cap B)}{P(B)} = \frac{1/3}{1/2} = \frac{2}{3} \approx 66,7\%&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Münzwurfbeispiel zur stochastischen Unabhängigkeit ===&lt;br /&gt;
Bei zwei Münzwürfen:&lt;br /&gt;
* A: &amp;quot;Erster Wurf Kopf&amp;quot; → &amp;lt;math&amp;gt;P(A) = 0,5&amp;lt;/math&amp;gt;&lt;br /&gt;
* B: &amp;quot;Zweiter Wurf Zahl&amp;quot; → &amp;lt;math&amp;gt;P(B) = 0,5&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Da die Würfe voneinander unabhängig sind, gilt für die Schnittmenge:&lt;br /&gt;
:&amp;lt;math&amp;gt;P(A \cap B) = P(A) \cdot P(B) = 0,5 \cdot 0,5 = 0,25&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die bedingte Wahrscheinlichkeit ergibt entsprechend:&lt;br /&gt;
:&amp;lt;math&amp;gt;P_B(A) = \frac{P(A \cap B)}{P(B)} = \frac{0,25}{0,5} = 0,5 = P(A)&amp;lt;/math&amp;gt; &lt;br /&gt;
(Dies ist das zu erwartende Resultat bei stochastischer Unabhängigkeit, da Vorwissen B das Eintreten von A nicht beeinflusst).&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2879</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2879"/>
		<updated>2026-05-26T06:52:23Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/F7omRJUFg6w?si=wJZEx2jRBw-2FblK&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Eine Münze wird &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich.&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,077 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es extrem ungewöhnlich (Wahrscheinlichkeit von ca. 4 %), höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich. &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,184 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe sind 2 Lampen ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 2) \approx 0,411 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis im Annahmebereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es mit einer Wahrscheinlichkeit von ca. 41,1 % überhaupt nicht ungewöhnlich, höchstens 2 ausgefalle Lampen zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2878</id>
		<title>Signifikanztest</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Signifikanztest&amp;diff=2878"/>
		<updated>2026-05-26T06:52:17Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; ist ein Werkzeug der Wahrscheinlichkeitsrechnung, mit dem überprüft wird, ob eine getroffene Annahme über eine [[Zufallsvariable]] auf Grundlage einer [[Häufigkeit#Statistische_Begriffe|Stichprobe]] beibehalten oder verworfen werden sollte.&lt;br /&gt;
&lt;br /&gt;
==Null- und Gegenhypothese==  &lt;br /&gt;
Für die Durchführung eines Signifikanztests werden zwei Hypothesen formuliert:&lt;br /&gt;
&lt;br /&gt;
* Die &#039;&#039;&#039;Nullhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt;: Sie beschreibt die Ausgangsannahme über die [[Zufallsvariable]] und wird solange als gültig betrachtet, bis sie durch den Test widerlegt wird.&lt;br /&gt;
* Die &#039;&#039;&#039;Gegenhypothese&#039;&#039;&#039; oder &#039;&#039;&#039;Alternativhypothese&#039;&#039;&#039; &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt;: Sie stellt die Alternative zu &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; dar und wird angenommen, wenn genügend Hinweise vorliegen, dass &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht zutrifft.&lt;br /&gt;
&lt;br /&gt;
==Definition==  &lt;br /&gt;
Ein &#039;&#039;&#039;Signifikanztest&#039;&#039;&#039; überprüft auf Basis der Wahrscheinlichkeitsverteilung einer [[Zufallsvariable]], ob die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; auf einem vorgegebenen &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; verworfen wird.  &lt;br /&gt;
&lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen, spricht man von einem &#039;&#039;&#039;signifikanten Ergebnis&#039;&#039;&#039;.  &lt;br /&gt;
* Wird &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen, reichen die vorliegenden Daten nicht aus, um &amp;lt;math&amp;gt;H_1&amp;lt;/math&amp;gt; zu stützen.&lt;br /&gt;
&lt;br /&gt;
==Einseitiger Signifikanztest==  &lt;br /&gt;
Beim &#039;&#039;&#039;einseitigen Signifikanztest&#039;&#039;&#039; wird nur eine Abweichung in eine Richtung untersucht.  &lt;br /&gt;
Die Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; folgt unter der Nullhypothese einer bekannten Verteilung, z. B. einer [[Binomialverteilung]].  &lt;br /&gt;
&lt;br /&gt;
* Wird eine Abweichung nach oben untersucht, so sprechen wir von einem &#039;&#039;&#039;rechtsseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Wird eine Abweichung nach unten untersucht, so sprechen wir von einem &#039;&#039;&#039;linksseitigen Signifikanztest&#039;&#039;&#039;.&lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; nicht verworfen wird, heißt &#039;&#039;&#039;Annahmebereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Bereich, in dem &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; verworfen wird, heißt &#039;&#039;&#039;Verwerfungsbereich&#039;&#039;&#039;.  &lt;br /&gt;
* Der Wert, der den Übergang zwischen Annahme- und Verwerfungsbereich angibt und im Annahmebereich liegt, wird &#039;&#039;&#039;kritische Zahl&#039;&#039;&#039; genannt.  &lt;br /&gt;
* Die Wahrscheinlichkeit, dass das Testergebnis fälschlicherweise im Verwerfungsbereich liegt, wird &#039;&#039;&#039;Irrtumswahrscheinlichkeit&#039;&#039;&#039; oder &#039;&#039;&#039;Signifikanzniveau&#039;&#039;&#039; &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; genannt.&lt;br /&gt;
&lt;br /&gt;
==Fehler 1. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 1. Art (&amp;lt;math&amp;gt;\alpha-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; abgelehnt wird, obwohl sie in Wirklichkeit zutrifft.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler entspricht dem Signifikanzniveau &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Fehler 2. Art==  &lt;br /&gt;
Ein &#039;&#039;&#039;Fehler 2. Art (&amp;lt;math&amp;gt;\beta-Fehler&amp;lt;/math&amp;gt;)&#039;&#039;&#039; tritt auf, wenn die Nullhypothese &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; beibehalten wird, obwohl sie in Wirklichkeit falsch ist.  &lt;br /&gt;
Die Wahrscheinlichkeit für diesen Fehler wird mit &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; bezeichnet. Dieser kann bei Signifikanztests nicht berechnen werden, da für die Alternativhypothese keine Wahrscheinlichkeit gegeben ist.&lt;br /&gt;
&lt;br /&gt;
== Anwendungen ==&lt;br /&gt;
&lt;br /&gt;
*Qualitätskontrollen in der industriellen Fertigung&lt;br /&gt;
*Risikoabschätzung in Versicherungen&lt;br /&gt;
*Analyse von Produktionsprozessen&lt;br /&gt;
*Überprüfung von Hypothesen in betriebswirtschaftlichen Modellen&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 20 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/F7omRJUFg6w?si=wJZEx2jRBw-2FblK&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; referrerpolicy=&amp;quot;strict-origin-when-cross-origin&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Es wird eine Stichprobe von &amp;lt;math&amp;gt;n=20&amp;lt;/math&amp;gt; Teilen gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden. &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,05&amp;lt;/math&amp;gt; (Fehlerquote beträgt 5 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,05&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 5 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden, ob die Maschine zu viele fehlerhafte Teile produziert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = n \cdot p_0 = 20 \cdot 0,05 = 1&amp;lt;/math&amp;gt;.  &lt;br /&gt;
&lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.  &lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
Berechnung:  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 2) = 1 - P(X \le 2) \approx 0,076 &amp;gt; 0,05&amp;lt;/math&amp;gt;&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,016 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;20\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 20-teiligen Stichprobe wurden 2 fehlerhafte Teile gefunden. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 2) \approx 0,264 &amp;gt; 0,05&amp;lt;/math&amp;gt;, d. h. die Wahrscheinlichkeit 2 oder mehr fehlerhafte Teile zu finden, ist deutlich größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. Liegt eine Fehlerquote von 5 % vor, ist es nicht ungewöhnlich 2 oder mehr fehlerhafte Teile zu finden. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Qualitätskontrolle mit 50 Teilen (Rechtsseitiger Signifikanztest)===&lt;br /&gt;
Eine Maschine produziert in Serie Teile. Eine Stichprobe von &amp;lt;math&amp;gt;n=50&amp;lt;/math&amp;gt; Teilen wird gezogen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele fehlerhafte Teile in der Stichprobe gefunden wurden.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,02&amp;lt;/math&amp;gt; (Fehlerquote beträgt 2 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;gt; 0,02&amp;lt;/math&amp;gt; (Fehlerquote ist größer als 2 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 50 \cdot 0,02 = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Der Annahmebereich umfasst alle Werte &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \ge k) &amp;gt; 0,05&amp;lt;/math&amp;gt; gilt.&lt;br /&gt;
Die kleinste Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;P(X &amp;gt; k) \le 0,05&amp;lt;/math&amp;gt; ist die kritische Zahl, sie markiert den Übergang und liegt noch im Annahmebereich.  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X &amp;gt; 3) = 1 - P(X \le 3) \approx 0,018 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \ge 3) = 1 - P(X \le 2) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{0;1;2;3\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{4;5;\dots;50\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 3&amp;lt;/math&amp;gt;, d. h. in der 50-teiligen Stichprobe wurden 3 fehlerhafte Teile gefunden.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \ge 3) \approx 0,078 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis noch im Annahmebereich. Die Wahrscheinlichkeit, 3 oder mehr fehlerhafte Teile zu finden, ist mit knapp 7,8 % größer als das Signifikanzniveau &amp;lt;math&amp;gt;\alpha=0,05&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Münzwurf-Experiment (Linksseitiger Signifikanztest)===&lt;br /&gt;
Eine Münze wird &amp;lt;math&amp;gt;n=40&amp;lt;/math&amp;gt;-mal geworfen. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie häufig Kopf geworfen wird.&lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,5&amp;lt;/math&amp;gt; (Die Wahrscheinlichkeit für Kopf ist 50 %, d. h. die Münze ist fair).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,5&amp;lt;/math&amp;gt; (Die Münze fällt seltener auf Kopf).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist:&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 40 \cdot 0,5 = 20&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich.&lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 15) \approx 0,077 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 15&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0;1;\dots;14\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{15;16;\dots;40\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 14&amp;lt;/math&amp;gt;, d. h. bei 40 Würfen trat 14-mal Kopf auf.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 14) \approx 0,040 \le 0,05&amp;lt;/math&amp;gt;. Damit fällt das Ergebnis in den Verwerfungsbereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es extrem ungewöhnlich (Wahrscheinlichkeit von ca. 4 %), höchstens 14-mal Kopf zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird verworfen. Diese Entscheidung wird für alle Werte im Verwerfungsbereich getroffen.&lt;br /&gt;
&lt;br /&gt;
=== Produktionskontrolle mit Glühlampen (Linksseitiger Signifikanztest)===&lt;br /&gt;
Ein Hersteller überprüft die Lebensdauer von Glühlampen. Es gilt &amp;lt;math&amp;gt;n=30&amp;lt;/math&amp;gt;. Die binomialverteilte Zufallsvariable &amp;lt;math&amp;gt;X&amp;lt;/math&amp;gt; gibt an, wie viele Lampen in der Stichprobe ausfallen.  &lt;br /&gt;
* Nullhypothese: &amp;lt;math&amp;gt;H_0: p = 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate beträgt 10 %).  &lt;br /&gt;
* Alternativhypothese: &amp;lt;math&amp;gt;H_1: p &amp;lt; 0,1&amp;lt;/math&amp;gt; (Die Ausfallrate ist kleiner als 10 %).  &lt;br /&gt;
&lt;br /&gt;
Es soll auf einem Signifikanzniveau von &amp;lt;math&amp;gt;\alpha = 0,05&amp;lt;/math&amp;gt; getestet werden.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Erwartungswert und Annahmebereich:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Der Erwartungswert unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist&lt;br /&gt;
:&amp;lt;math&amp;gt;\operatorname{E}(X) = 30 \cdot 0,1 = 3&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
Berechnung der kritischen Zahl:  &lt;br /&gt;
Bei einem linksseitigen Test markiert die größte Zahl &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt;, für die &amp;lt;math&amp;gt;P(X \le k) \le 0,05&amp;lt;/math&amp;gt; gilt, das Ende des Verwerfungsbereichs. &lt;br /&gt;
Die darauf folgende Zahl ist die kritische Zahl, sie markiert den Übergang und liegt im Annahmebereich. &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 0) \approx 0,042 \le 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
:&amp;lt;math&amp;gt;P(X \le 1) \approx 0,184 &amp;gt; 0,05&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
→ Kritische Zahl: &amp;lt;math&amp;gt;k = 1&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Verwerfungsbereich: &amp;lt;math&amp;gt;\{0\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
* Annahmebereich: &amp;lt;math&amp;gt;\{1;2;\dots;30\}&amp;lt;/math&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Beobachtung:&#039;&#039;&#039;  &lt;br /&gt;
&amp;lt;math&amp;gt;X = 2&amp;lt;/math&amp;gt;, d. h. in der 30-teiligen Stichprobe sind 2 Lampen ausgefallen.  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Entscheidung:&#039;&#039;&#039;  &lt;br /&gt;
Es gilt &amp;lt;math&amp;gt;P(X \le 2) \approx 0,411 &amp;gt; 0,05&amp;lt;/math&amp;gt;. Damit liegt das Ergebnis im Annahmebereich. Unter &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; ist es mit einer Wahrscheinlichkeit von ca. 41,1 % überhaupt nicht ungewöhnlich, höchstens 2 ausgefalle Lampen zu beobachten. &amp;lt;math&amp;gt;H_0&amp;lt;/math&amp;gt; wird nicht verworfen. Diese Entscheidung wird für alle Werte im Annahmebereich getroffen.  &lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Wahrscheinlichkeitsrechnung]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2877</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2877"/>
		<updated>2026-05-22T07:08:36Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (engl. &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) ist ein elementares Verhaltensdiagramm der UML.&lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des &#039;&#039;&#039;Lastenhefts&#039;&#039;&#039; und bilden die primäre Grundlage für das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; und keine konkrete Person.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Anwendungsfalldiagramm bildet &#039;&#039;&#039;keine&#039;&#039;&#039; zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt;. Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; erfolgen (z. B. &#039;&#039;Artikel suchen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Ungerichtete Assoziation als einfache Verbindungslinie]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen. &lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Use Case gerichtet&#039;&#039;&#039; ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.&lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Akteur zeigt&#039;&#039;&#039;, besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).&lt;br /&gt;
* Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (beliebig viele) definiert (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: &amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: &amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes (Inklusion) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Include-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;beinhalten&#039;&#039; oder &#039;&#039;einschließen&#039;&#039;) beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases). &lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet ist. Der Pfeil startet immer beim &#039;&#039;&#039;Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der inkludierte Anwendungsfall wird &#039;&#039;&#039;immer (zu 100 %)&#039;&#039;&#039; ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten]]&lt;br /&gt;
&lt;br /&gt;
=== Extend (Erweiterung) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;erweitern&#039;&#039;) beschreibt ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.&lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim &#039;&#039;&#039;Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der Basis-Use-Case deklariert sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;, die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points:&amp;lt;/code&amp;gt; gefolgt von den Namen der Punkte steht.&lt;br /&gt;
&lt;br /&gt;
Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort &amp;lt;code&amp;gt;Condition:&amp;lt;/code&amp;gt; gefolgt von der logischen Bedingung in geschweiften Klammern &amp;lt;code&amp;gt;{...}&amp;lt;/code&amp;gt; sowie den Verweis auf den zugehörigen Erweiterungspunkt.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische &#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;, analog zur Vererbung in der objektorientierten Programmierung.&lt;br /&gt;
&lt;br /&gt;
Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer &#039;&#039;&#039;geschlossenen, hohlen Dreieckspfeilspitze&#039;&#039;&#039; dargestellt. Der Pfeil zeigt immer &#039;&#039;&#039;vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Im Beispiel ist der Akteur &#039;&#039;Fahrer&#039;&#039; eine Spezialisierung von &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case &#039;&#039;Login durchführen&#039;&#039;), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Anwendungsfällen:&#039;&#039;&#039; Ein abstrakter Anwendungsfall wie &#039;&#039;„Medium brennen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„CD brennen“&#039;&#039; oder &#039;&#039;„DVD brennen“&#039;&#039; geerbt und ausdifferenziert werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2876</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2876"/>
		<updated>2026-05-22T07:08:07Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (engl. &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) ist ein elementares Verhaltensdiagramm der UML.&lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des &#039;&#039;&#039;Lastenhefts&#039;&#039;&#039; und bilden die primäre Grundlage für das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; und keine konkrete Person.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Anwendungsfalldiagramm bildet &#039;&#039;&#039;keine&#039;&#039;&#039; zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt;. Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; erfolgen (z. B. &#039;&#039;Artikel suchen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Ungerichtete Assoziation als einfache Verbindungslinie]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen. &lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Use Case gerichtet&#039;&#039;&#039; ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.&lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Akteur zeigt&#039;&#039;&#039;, besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).&lt;br /&gt;
* Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (beliebig viele) definiert (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: &amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: &amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes (Inklusion) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Include-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;beinhalten&#039;&#039; oder &#039;&#039;einschließen&#039;&#039;) beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases). &lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet ist. Der Pfeil startet immer beim &#039;&#039;&#039;Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der inkludierte Anwendungsfall wird &#039;&#039;&#039;immer (zu 100 %)&#039;&#039;&#039; ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten]]&lt;br /&gt;
&lt;br /&gt;
=== Extend (Erweiterung) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;erweitern&#039;&#039;) beschreibt ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.&lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim &#039;&#039;&#039;Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der Basis-Use-Case deklariert sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;, die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points:&amp;lt;/code&amp;gt; gefolgt von den Namen der Punkte steht.&lt;br /&gt;
&lt;br /&gt;
Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort &amp;lt;code&amp;gt;Condition:&amp;lt;/code&amp;gt; gefolgt von der logischen Bedingung in geschweiften Klammern &amp;lt;code&amp;gt;{...}&amp;lt;/code&amp;gt; sowie den Verweis auf den zugehörigen Erweiterungspunkt.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische &#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;, analog zur Vererbung in der objektorientierten Programmierung.&lt;br /&gt;
&lt;br /&gt;
Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer &#039;&#039;&#039;geschlossenen, hohlen Dreieckspfeilspitze&#039;&#039;&#039; dargestellt. Der Pfeil zeigt immer &#039;&#039;&#039;vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Im Beispiel ist der Akteur &#039;&#039;Fahrer&#039;&#039; eine Spezialisierung von &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case &#039;&#039;Login durchführen&#039;&#039;), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Anwendungsfällen:&#039;&#039;&#039; Ein abstrakter Anwendungsfall wie &#039;&#039;„Medium brennen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„CD brennen“&#039;&#039; oder &#039;&#039;„DVD brennen“&#039;&#039; geerbt und ausdifferenziert werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2875</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2875"/>
		<updated>2026-05-22T06:47:37Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung, Spezifikation und Dokumentation von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (engl. &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) ist ein elementares Verhaltensdiagramm der UML.&lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase (Requirements Engineering) die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um barrierefrei zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklungsteam) zu vermitteln. Als strukturierte funktionale Anforderungsbeschreibung sind Anwendungsfalldiagramme ein fester Bestandteil des &#039;&#039;&#039;Lastenhefts&#039;&#039;&#039; und bilden die primäre Grundlage für das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie identifizieren die externen Benutzer oder Systeme, die mit dem System interagieren. Jeder Akteur repräsentiert eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; und keine konkrete Person.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben die vom System angebotenen Funktionalitäten und Aufgaben, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert erzeugen.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Sie definieren die Kommunikationspfade zwischen Akteuren und Anwendungsfällen sowie die strukturellen Abhängigkeiten der Anwendungsfälle untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Anwendungsfalldiagramm bildet &#039;&#039;&#039;keine&#039;&#039;&#039; zeitlichen, logischen oder prozessualen Abläufe ab. Für die Modellierung von Kontrollflüssen und sequentiellen Prozessen sind stattdessen UML-Aktivitätendiagramme oder Sequenzdiagramme zu verwenden.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Funktionseinheiten innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. Der Rahmen grenzt das zu entwickelnde System strikt von seiner Umwelt ab: Akteure stehen als externe Entitäten immer außerhalb des Systems, während die Anwendungsfälle die interne Funktionalität definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel eines Use-Case-Diagramms mit Systemgrenze, Akteuren und verknüpften Beziehungen]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der methodische Aufbau eines standardkonformen Anwendungsfalldiagramms folgt drei sequentiellen Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Es wird festgelegt, welche unterschiedlichen Rollen das System nutzen werden. Menschliche Rollen werden grafisch als Strichmännchen dargestellt, externe Software- oder Hardwaresysteme als Rechtecke mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt;. Jeder Akteur muss einen eindeutigen, selbsterklärenden Namen im Singular erhalten (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Allgemeine Bezeichnungen wie „User“ oder „Akteur“ sind zu vermeiden, da sie für fast jedes Softwaresystem gültig sind und keine spezifische Rolle beschreiben.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Es wird geklärt, welche fachlichen Ziele das System erfüllen muss. Anwendungsfälle werden als horizontale Ellipsen dargestellt, die eine kurze Inhaltsbeschreibung enthalten. Die Formulierung muss kurz, aussagekräftig und im Infinitiv bzw. im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; erfolgen (z. B. &#039;&#039;Artikel suchen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im letzten Schritt werden die Akteure und Anwendungsfälle über strukturierte Beziehungslinien miteinander verbunden, um die Interaktionskanäle visuell zu definieren.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen bilden die grundlegenden Kommunikationspfade zwischen Akteuren und Use Cases. Eine Assoziation signalisiert, dass der verknüpfte Akteur die Aktion des Use Cases ausführen oder mit diesem interagieren kann. Es handelt sich um eine binäre Beziehung, die exakt zwei Elemente miteinander verbindet. Ein einzelner Use Case darf mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als einfache, durchgehende Linie dargestellt. Sie stellt die offenste Form der Interaktion dar und signalisiert einen bidirektionalen Informationsfluss, lässt jedoch die Richtung der Initiierung (wer die Aktion startet) offen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Ungerichtete Assoziation als einfache Verbindungslinie]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Eine gerichtete Assoziation verwendet eine offene Pfeilspitze, um die Navigierbarkeit und den Initiator des Prozesses eindeutig festzulegen. &lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Use Case gerichtet&#039;&#039;&#039; ist, besagt, dass der Akteur den Anwendungsfall aktiv initiiert.&lt;br /&gt;
* Ein Pfeil, der &#039;&#039;&#039;auf den Akteur zeigt&#039;&#039;&#039;, besagt, dass der Use Case (bzw. das System) die Interaktion zum Akteur hin anstößt (häufig bei sekundären Systemen oder Benachrichtigungsdiensten).&lt;br /&gt;
* Können beide Seiten die Aktion unabhängig voneinander initiieren, werden die Pfeile weggelassen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Gerichtete Assoziation mit Pfeil zur Kennzeichnung des Initiators]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs mit wie vielen Instanzen eines Anwendungsfalls in einer konkreten Systeminteraktion in Beziehung stehen können. Sie werden direkt an den Enden der Assoziationslinien notiert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Modellierung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten des Beispiels sind gemeldet nach UML-Standard wie folgt zu interpretieren:&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) sind mindestens 3 Spielerinnen beteiligt. Die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;, die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; (beliebig viele) definiert (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede Spielerin kann jedoch zeitgleich an exakt einem Rundlauf-Spiel teilnehmen (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (Notation: &amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann wiederum an höchstens einem Rundlaufspiel aktiv beteiligt sein (Notation: &amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da diese Detailinformationen die Adressaten eines Use-Case-Diagramms häufig überfordern, werden Multiplizitäten hier selten notiert. Ihre zentrale und fundamentale Bedeutung entfalten sie im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes (Inklusion) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Include-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;beinhalten&#039;&#039; oder &#039;&#039;einschließen&#039;&#039;) beschreibt eine zwingende Abhängigkeit zur Vermeidung von funktionaler Redundanz (Wiederverwendung von Use Cases). &lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet ist. Der Pfeil startet immer beim &#039;&#039;&#039;Basis-Use-Case und zeigt in Richtung des zu inkludierenden Use Cases&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der inkludierte Anwendungsfall wird &#039;&#039;&#039;immer (zu 100 %)&#039;&#039;&#039; ausgeführt, sobald der Basis-Anwendungsfall aufgerufen wird. Der Basis-Use-Case ist ohne das Inkludat funktional unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Zwingende Include-Beziehung zur Auslagerung gemeinsamer Funktionalitäten]]&lt;br /&gt;
&lt;br /&gt;
=== Extend (Erweiterung) ===&lt;br /&gt;
Eine &#039;&#039;&#039;Extend-Beziehung&#039;&#039;&#039; (dt. &#039;&#039;erweitern&#039;&#039;) beschreibt ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten, das den Basis-Use-Case nur unter ganz bestimmten Bedingungen ergänzt.&lt;br /&gt;
&lt;br /&gt;
Die Beziehung wird durch eine gestrichelte Linie mit einer offenen Pfeilspitze dargestellt, die mit dem Stereotyp &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; gekennzeichnet ist. Die Pfeilrichtung verhält sich umgekehrt zum Include: Der Pfeil startet beim &#039;&#039;&#039;Extension-Use-Case (Erweiterung) und zeigt in Richtung des Basis-Use-Cases&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Der Basis-Use-Case deklariert sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;, die den präzisen Ort innerhalb des Ablaufs definieren, an dem die Erweiterung eingreifen darf. Grafisch wird hierzu in der Ellipse des Basis-Use-Cases eine horizontale Trennlinie eingezogen, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points:&amp;lt;/code&amp;gt; gefolgt von den Namen der Punkte steht.&lt;br /&gt;
&lt;br /&gt;
Optional wird an die Extend-Linie über eine fein gestrichelte Linie ein UML-Notizsymbol angeheftet. Dieses enthält das Schlüsselwort &amp;lt;code&amp;gt;Condition:&amp;lt;/code&amp;gt; gefolgt von der logischen Bedingung in geschweiften Klammern &amp;lt;code&amp;gt;{...}&amp;lt;/code&amp;gt; sowie den Verweis auf den zugehörigen Erweiterungspunkt.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Der Basis-Use-Case ist auch ohne die Erweiterung vollkommen autark lauffähig. Der Extension-Use-Case wird nur dann ausgeführt, wenn die definierte Bedingung am Erweiterungspunkt wahr (true) ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Optionale Extend-Beziehung mit expliziten Extension Points und Notizfeld für die Bedingung (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Zwischen Akteuren untereinander sowie zwischen Anwendungsfällen untereinander kann eine Generalisierungsbeziehung existieren. Sie modelliert eine klassische &#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;, analog zur Vererbung in der objektorientierten Programmierung.&lt;br /&gt;
&lt;br /&gt;
Die Generalisierung wird grafisch durch eine durchgehende Linie mit einer &#039;&#039;&#039;geschlossenen, hohlen Dreieckspfeilspitze&#039;&#039;&#039; dargestellt. Der Pfeil zeigt immer &#039;&#039;&#039;vom spezialisierten Element (Unterklasse) zum allgemeinen Element (Oberklasse)&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Strukturelle Generalisierung zwischen Akteuren oder Funktionseinheiten]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Im Beispiel ist der Akteur &#039;&#039;Fahrer&#039;&#039; eine Spezialisierung von &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt bedingungslos alle Fähigkeiten, Use Cases und Attribute des allgemeinen Anwenders (z. B. Stammdaten und die Interaktion mit dem Use Case &#039;&#039;Login durchführen&#039;&#039;), konkretisiert oder erweitert diese Rolle jedoch um spezifische Eigenschaften.&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Anwendungsfällen:&#039;&#039;&#039; Ein abstrakter Anwendungsfall wie &#039;&#039;„Medium brennen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„CD brennen“&#039;&#039; oder &#039;&#039;„DVD brennen“&#039;&#039; geerbt und ausdifferenziert werden.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2874</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2874"/>
		<updated>2026-05-22T06:45:22Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: /* Zielsetzung im Requirements Engineering */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung in die Use-Case-Modellierung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Softwareteilen und anderen Systemen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (im englischsprachigen Raum &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) gehört zu den Verhaltensdiagrammen der UML.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung im Requirements Engineering ===&lt;br /&gt;
In der [[Softwareentwicklungsprozess|Analysephase]] (Anforderungsermittlung / Requirements Engineering) ist es das primäre Ziel des Anwendungsfalldiagramms, das geplante System aus der &#039;&#039;&#039;externen Beobachterperspektive&#039;&#039;&#039; zu beschreiben. Es modelliert das &amp;quot;Was&amp;quot; (welche Funktionen bietet das System?) und grenzt sich strikt vom &amp;quot;Wie&amp;quot; (wie werden diese Funktionen technisch umgesetzt?) ab. &lt;br /&gt;
&lt;br /&gt;
Es dient als zentrales Kommunikationsmittel zwischen:&lt;br /&gt;
* &#039;&#039;&#039;Auftraggebern / potenziellen Anwendern (Fachseite):&#039;&#039;&#039; Diese können das Diagramm ohne Programmierkenntnisse verstehen.&lt;br /&gt;
* &#039;&#039;&#039;Auftragnehmern (Entwicklerteam / Systemarchitekten):&#039;&#039;&#039; Für diese bildet das Diagramm die Grundlage für die Systemarchitektur.&lt;br /&gt;
&lt;br /&gt;
Daher fließen Anwendungsfalldiagramme als strukturierte Anforderungsbeschreibung in das &#039;&#039;&#039;Lastenheft&#039;&#039;&#039; (Forderungen des Auftraggebers) und später detailliert in das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039; (Umsetzungsvorgaben des Auftragnehmers) ein.&lt;br /&gt;
&lt;br /&gt;
=== Die drei Kernelemente ===&lt;br /&gt;
Das Diagramm besteht aus drei essenziellen Bausteinen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie repräsentieren externe Entitäten, die mit dem System interagieren. Wichtig: Ein Akteur ist immer eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; (z. B. &amp;quot;Kunde&amp;quot;), niemals eine konkrete Person (z. B. &amp;quot;Herr Müller&amp;quot;). Auch externe Fremdsysteme (wie ein Zahlungsanbieter) treten als Akteure auf.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben eine in sich abgeschlossene Aufgabe, die für den Akteur einen messbaren, fachlichen Mehrwert erzeugt.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Interaktionspfade zwischen Akteur und Anwendungsfall oder die Abhängigkeiten von Anwendungsfällen untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf (Kontrollfluss) innerhalb eines Anwendungsfalls wird im Use-Case-Diagramm bewusst abstrahiert. Hierfür werden in der UML ergänzend &#039;&#039;&#039;Aktivitätendiagramme&#039;&#039;&#039; oder &#039;&#039;&#039;Sequenzdiagramme&#039;&#039;&#039; genutzt.&lt;br /&gt;
&lt;br /&gt;
== Systemkontext und Systemgrenze ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. &lt;br /&gt;
Die Systemgrenze ist ein fundamentales Konzept: Sie trennt das zu entwickelnde System strikt von seiner Umwelt. Akteure befinden sich als externe Rollen immer &#039;&#039;&#039;außerhalb&#039;&#039;&#039; des Systems, während die Anwendungsfälle die Funktionalität &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Systems definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel: Der Rahmen definiert die Systemgrenze. Akteure stehen außerhalb, Use Cases innerhalb.]]&lt;br /&gt;
&lt;br /&gt;
== Notation und Erstellung ==&lt;br /&gt;
Die Erstellung eines Anwendungsfalldiagramms folgt methodisch diesen drei Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Wer oder was interagiert mit der Software? Akteure werden als „Strichmännchen“ (Menschen) oder als Rechteck mit dem Stereotyp &amp;lt;code&amp;gt;&amp;lt;&amp;lt;system&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; (externe Systeme) dargestellt. Der Name muss zwingend eine präzise Rolle beschreiben (z. B. &#039;&#039;Sachbearbeiter&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Generische Namen wie &amp;quot;User&amp;quot; sind als Modellierungsfehler zu betrachten.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Welche fachlichen Ziele sollen erreicht werden? Anwendungsfälle werden als Ellipsen gezeichnet. Die Benennung erfolgt imperativ oder im Infinitiv im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (z. B. &amp;quot;Rechnung stornieren&amp;quot;, &amp;quot;Artikel suchen&amp;quot;). Die Formulierung muss prägnant und fachlich verständlich sein.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Akteure und Anwendungsfälle werden durch Kommunikationspfade (Linien) verbunden, um den Interaktionsfluss sichtbar zu machen.&lt;br /&gt;
&lt;br /&gt;
== Beziehungsarten (Relationen) ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen sind die grundlegenden Kommunikationspfade zwischen Akteur und Use Case. Sie drücken aus, dass der Akteur mit dem System interagiert, um den Anwendungsfall auszuführen. Eine Assoziation ist immer binär (verbindet exakt zwei Elemente). Ein Akteur kann mit mehreren Use Cases assoziiert sein und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Wird als durchgehende Linie ohne Pfeilspitzen dargestellt. Sie zeigt an, dass eine Kommunikation stattfindet, lässt aber die Initiierungsrichtung (wer den Anstoß gibt) offen. Dies ist die häufigste und flexibelste Form in frühen Analysephasen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Beispiel einer ungerichteten Assoziation: Die Interaktion ist bidirektional.]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Verfügt über eine offene Pfeilspitze und gibt die Navigierbarkeit bzw. den Initiator an. Ein Pfeil zum Use Case bedeutet: Der Akteur stößt den Prozess aktiv an. Ein Pfeil zum Akteur bedeutet: Das System initiiert die Kommunikation zum Akteur (z. B. automatischer E-Mail-Versand an den Kunden). Können beide den Prozess anstoßen, wird auf Pfeile komplett verzichtet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Beispiel einer gerichteten Assoziation: Die Pfeilspitze definiert den Initiator.]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (auch Kardinalitäten genannt) definieren, wie viele Instanzen eines Akteurs zeitgleich an wie vielen Instanzen eines Anwendungsfalls beteiligt sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Darstellung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lesebeispiel der Abbildung:&#039;&#039;&#039;&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) nehmen zwingend mindestens 3 bis beliebig viele (&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;) Spielerinnen teil (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede einzelne Spielerin nimmt jedoch zu einem gegebenen Zeitpunkt an exakt 1 Rundlauf-Spiel teil (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Ein Spiel kann völlig ohne oder mit beliebig vielen Schiedsrichterinnen stattfinden (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Eine Schiedsrichterin überwacht gleichzeitig maximal ein Spiel (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prüfungshinweis:&#039;&#039; Multiplizitäten spielen in Use-Case-Diagrammen in der Praxis eine untergeordnete Rolle, da sie das Diagramm schnell überladen. Ihre volle konzeptionelle Bedeutung entfalten sie erst im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Abhängigkeiten zwischen Anwendungsfällen ===&lt;br /&gt;
&lt;br /&gt;
==== Include-Beziehung (&amp;lt;&amp;lt;include&amp;gt;&amp;gt;) ====&lt;br /&gt;
Die &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehung dient der &#039;&#039;&#039;Vermeidung von Redundanz&#039;&#039;&#039;. Sie lagert gemeinsames Verhalten in einen eigenen Use Case aus. Der gestrichelte Pfeil zeigt vom Basis-Use-Case zum inkludierten Use Case.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Wenn der Basis-Anwendungsfall ausgeführt wird, wird der inkludierte Anwendungsfall &#039;&#039;&#039;zwingend immer (zu 100%)&#039;&#039;&#039; mit ausgeführt. Der Basis-Use-Case ist ohne das Inkludat unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Include-Beziehung: Der inkludierte Prozess wird zwingend aufgerufen.]]&lt;br /&gt;
&lt;br /&gt;
==== Extend-Beziehung (&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;) ====&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung modelliert &#039;&#039;&#039;Ausnahmebehandlungen oder optionale Erweiterungen&#039;&#039;&#039;. Der gestrichelte Pfeil zeigt (im Gegensatz zum Include!) vom erweiternden Use Case (Extension) zurück auf den Basis-Use-Case.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Die Erweiterung wird nur unter bestimmten Bedingungen ausgeführt. Der Basis-Use-Case ist auch ohne die Erweiterung vollständig lauffähig.&lt;br /&gt;
&lt;br /&gt;
Die Integration erfolgt über sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;. Diese markieren im Basis-Use-Case (unterhalb eines Trennstrichs) die genaue Stelle des Eingriffs. Optional kann über ein Notizsymbol eine logische &#039;&#039;&#039;Bedingung (Condition)&#039;&#039;&#039; angefügt werden, die prüft, ob die Erweiterung überhaupt zündet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Extend-Beziehung mit definierten Erweiterungspunkten und auslösender Bedingung (Condition).]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Die Generalisierung entspricht dem aus der Objektorientierung bekannten Konzept der Vererbung (&#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;). Sie wird mit einer durchgehenden Linie und einer hohlen, geschlossenen Pfeilspitze dargestellt, die vom speziellen zum allgemeinen Element zeigt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Generalisierungsbeziehung: Spezialisierung von Anwendungsfällen oder Akteuren.]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Der Akteur &#039;&#039;Fahrer&#039;&#039; ist eine Spezialisierung des Akteurs &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt alle Zugriffsrechte und Use Cases des allgemeinen Anwenders (z. B. &amp;quot;Login&amp;quot;), besitzt darüber hinaus aber erweiterte, spezifische Berechtigungen (z. B. &amp;quot;Fahrzeug starten&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Use Cases:&#039;&#039;&#039; Ein allgemeiner Anwendungsfall wie &#039;&#039;„Zahlung durchführen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„Per Kreditkarte zahlen“&#039;&#039; oder &#039;&#039;„Per PayPal zahlen“&#039;&#039; generalisiert werden. Die speziellen Fälle erben die grundlegende Funktionalität, setzen sie aber im Detail abweichend um.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2873</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2873"/>
		<updated>2026-05-22T06:44:17Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung in die Use-Case-Modellierung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Spezifikation, Konstruktion und Dokumentation von Softwareteilen und anderen Systemen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; (im englischsprachigen Raum &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039;) gehört zu den Verhaltensdiagrammen der UML.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung im Requirements Engineering ===&lt;br /&gt;
In der Analysephase (Anforderungsermittlung / Requirements Engineering) ist es das primäre Ziel des Anwendungsfalldiagramms, das geplante System aus der &#039;&#039;&#039;externen Beobachterperspektive&#039;&#039;&#039; zu beschreiben. Es modelliert das &amp;quot;Was&amp;quot; (welche Funktionen bietet das System?) und grenzt sich strikt vom &amp;quot;Wie&amp;quot; (wie werden diese Funktionen technisch umgesetzt?) ab. &lt;br /&gt;
&lt;br /&gt;
Es dient als zentrales Kommunikationsmittel zwischen:&lt;br /&gt;
* &#039;&#039;&#039;Auftraggebern / potenziellen Anwendern (Fachseite):&#039;&#039;&#039; Diese können das Diagramm ohne Programmierkenntnisse verstehen.&lt;br /&gt;
* &#039;&#039;&#039;Auftragnehmern (Entwicklerteam / Systemarchitekten):&#039;&#039;&#039; Für diese bildet das Diagramm die Grundlage für die Systemarchitektur.&lt;br /&gt;
&lt;br /&gt;
Daher fließen Anwendungsfalldiagramme als strukturierte Anforderungsbeschreibung in das &#039;&#039;&#039;Lastenheft&#039;&#039;&#039; (Forderungen des Auftraggebers) und später detailliert in das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039; (Umsetzungsvorgaben des Auftragnehmers) ein.&lt;br /&gt;
&lt;br /&gt;
=== Die drei Kernelemente ===&lt;br /&gt;
Das Diagramm besteht aus drei essenziellen Bausteinen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; Sie repräsentieren externe Entitäten, die mit dem System interagieren. Wichtig: Ein Akteur ist immer eine &#039;&#039;&#039;Rolle&#039;&#039;&#039; (z. B. &amp;quot;Kunde&amp;quot;), niemals eine konkrete Person (z. B. &amp;quot;Herr Müller&amp;quot;). Auch externe Fremdsysteme (wie ein Zahlungsanbieter) treten als Akteure auf.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Sie beschreiben eine in sich abgeschlossene Aufgabe, die für den Akteur einen messbaren, fachlichen Mehrwert erzeugt.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Interaktionspfade zwischen Akteur und Anwendungsfall oder die Abhängigkeiten von Anwendungsfällen untereinander.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf (Kontrollfluss) innerhalb eines Anwendungsfalls wird im Use-Case-Diagramm bewusst abstrahiert. Hierfür werden in der UML ergänzend &#039;&#039;&#039;Aktivitätendiagramme&#039;&#039;&#039; oder &#039;&#039;&#039;Sequenzdiagramme&#039;&#039;&#039; genutzt.&lt;br /&gt;
&lt;br /&gt;
== Systemkontext und Systemgrenze ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze / System Boundary)&#039;&#039;&#039; zusammen. &lt;br /&gt;
Die Systemgrenze ist ein fundamentales Konzept: Sie trennt das zu entwickelnde System strikt von seiner Umwelt. Akteure befinden sich als externe Rollen immer &#039;&#039;&#039;außerhalb&#039;&#039;&#039; des Systems, während die Anwendungsfälle die Funktionalität &#039;&#039;&#039;innerhalb&#039;&#039;&#039; des Systems definieren.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel: Der Rahmen definiert die Systemgrenze. Akteure stehen außerhalb, Use Cases innerhalb.]]&lt;br /&gt;
&lt;br /&gt;
== Notation und Erstellung ==&lt;br /&gt;
Die Erstellung eines Anwendungsfalldiagramms folgt methodisch diesen drei Schritten:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Wer oder was interagiert mit der Software? Akteure werden als „Strichmännchen“ (Menschen) oder als Rechteck mit dem Stereotyp &amp;lt;code&amp;gt;&amp;lt;&amp;lt;system&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; (externe Systeme) dargestellt. Der Name muss zwingend eine präzise Rolle beschreiben (z. B. &#039;&#039;Sachbearbeiter&#039;&#039;, &#039;&#039;Administrator&#039;&#039;). Generische Namen wie &amp;quot;User&amp;quot; sind als Modellierungsfehler zu betrachten.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Welche fachlichen Ziele sollen erreicht werden? Anwendungsfälle werden als Ellipsen gezeichnet. Die Benennung erfolgt imperativ oder im Infinitiv im Format &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (z. B. &amp;quot;Rechnung stornieren&amp;quot;, &amp;quot;Artikel suchen&amp;quot;). Die Formulierung muss prägnant und fachlich verständlich sein.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Akteure und Anwendungsfälle werden durch Kommunikationspfade (Linien) verbunden, um den Interaktionsfluss sichtbar zu machen.&lt;br /&gt;
&lt;br /&gt;
== Beziehungsarten (Relationen) ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen sind die grundlegenden Kommunikationspfade zwischen Akteur und Use Case. Sie drücken aus, dass der Akteur mit dem System interagiert, um den Anwendungsfall auszuführen. Eine Assoziation ist immer binär (verbindet exakt zwei Elemente). Ein Akteur kann mit mehreren Use Cases assoziiert sein und umgekehrt.&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Wird als durchgehende Linie ohne Pfeilspitzen dargestellt. Sie zeigt an, dass eine Kommunikation stattfindet, lässt aber die Initiierungsrichtung (wer den Anstoß gibt) offen. Dies ist die häufigste und flexibelste Form in frühen Analysephasen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Beispiel einer ungerichteten Assoziation: Die Interaktion ist bidirektional.]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Verfügt über eine offene Pfeilspitze und gibt die Navigierbarkeit bzw. den Initiator an. Ein Pfeil zum Use Case bedeutet: Der Akteur stößt den Prozess aktiv an. Ein Pfeil zum Akteur bedeutet: Das System initiiert die Kommunikation zum Akteur (z. B. automatischer E-Mail-Versand an den Kunden). Können beide den Prozess anstoßen, wird auf Pfeile komplett verzichtet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Beispiel einer gerichteten Assoziation: Die Pfeilspitze definiert den Initiator.]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (auch Kardinalitäten genannt) definieren, wie viele Instanzen eines Akteurs zeitgleich an wie vielen Instanzen eines Anwendungsfalls beteiligt sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Darstellung von Multiplizitäten am Beispiel eines Tischtennis-Rundlaufs]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lesebeispiel der Abbildung:&#039;&#039;&#039;&lt;br /&gt;
* An einem Tischtennis-Rundlauf (Use Case) nehmen zwingend mindestens 3 bis beliebig viele (&amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt;) Spielerinnen teil (Notation: &amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede einzelne Spielerin nimmt jedoch zu einem gegebenen Zeitpunkt an exakt 1 Rundlauf-Spiel teil (Notation: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Ein Spiel kann völlig ohne oder mit beliebig vielen Schiedsrichterinnen stattfinden (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Eine Schiedsrichterin überwacht gleichzeitig maximal ein Spiel (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Prüfungshinweis:&#039;&#039; Multiplizitäten spielen in Use-Case-Diagrammen in der Praxis eine untergeordnete Rolle, da sie das Diagramm schnell überladen. Ihre volle konzeptionelle Bedeutung entfalten sie erst im strukturellen [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Abhängigkeiten zwischen Anwendungsfällen ===&lt;br /&gt;
&lt;br /&gt;
==== Include-Beziehung (&amp;lt;&amp;lt;include&amp;gt;&amp;gt;) ====&lt;br /&gt;
Die &amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehung dient der &#039;&#039;&#039;Vermeidung von Redundanz&#039;&#039;&#039;. Sie lagert gemeinsames Verhalten in einen eigenen Use Case aus. Der gestrichelte Pfeil zeigt vom Basis-Use-Case zum inkludierten Use Case.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Wenn der Basis-Anwendungsfall ausgeführt wird, wird der inkludierte Anwendungsfall &#039;&#039;&#039;zwingend immer (zu 100%)&#039;&#039;&#039; mit ausgeführt. Der Basis-Use-Case ist ohne das Inkludat unvollständig.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Include-Beziehung: Der inkludierte Prozess wird zwingend aufgerufen.]]&lt;br /&gt;
&lt;br /&gt;
==== Extend-Beziehung (&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;) ====&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung modelliert &#039;&#039;&#039;Ausnahmebehandlungen oder optionale Erweiterungen&#039;&#039;&#039;. Der gestrichelte Pfeil zeigt (im Gegensatz zum Include!) vom erweiternden Use Case (Extension) zurück auf den Basis-Use-Case.&lt;br /&gt;
* &#039;&#039;&#039;Semantik:&#039;&#039;&#039; Die Erweiterung wird nur unter bestimmten Bedingungen ausgeführt. Der Basis-Use-Case ist auch ohne die Erweiterung vollständig lauffähig.&lt;br /&gt;
&lt;br /&gt;
Die Integration erfolgt über sogenannte &#039;&#039;&#039;Erweiterungspunkte (Extension Points)&#039;&#039;&#039;. Diese markieren im Basis-Use-Case (unterhalb eines Trennstrichs) die genaue Stelle des Eingriffs. Optional kann über ein Notizsymbol eine logische &#039;&#039;&#039;Bedingung (Condition)&#039;&#039;&#039; angefügt werden, die prüft, ob die Erweiterung überhaupt zündet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Extend-Beziehung mit definierten Erweiterungspunkten und auslösender Bedingung (Condition).]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung (Vererbung) ===&lt;br /&gt;
Die Generalisierung entspricht dem aus der Objektorientierung bekannten Konzept der Vererbung (&#039;&#039;&#039;&amp;quot;Ist-ein&amp;quot;-Beziehung&#039;&#039;&#039;). Sie wird mit einer durchgehenden Linie und einer hohlen, geschlossenen Pfeilspitze dargestellt, die vom speziellen zum allgemeinen Element zeigt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Generalisierungsbeziehung: Spezialisierung von Anwendungsfällen oder Akteuren.]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Akteuren:&#039;&#039;&#039; Der Akteur &#039;&#039;Fahrer&#039;&#039; ist eine Spezialisierung des Akteurs &#039;&#039;Anwender&#039;&#039;. Der Fahrer erbt alle Zugriffsrechte und Use Cases des allgemeinen Anwenders (z. B. &amp;quot;Login&amp;quot;), besitzt darüber hinaus aber erweiterte, spezifische Berechtigungen (z. B. &amp;quot;Fahrzeug starten&amp;quot;).&lt;br /&gt;
* &#039;&#039;&#039;Generalisierung von Use Cases:&#039;&#039;&#039; Ein allgemeiner Anwendungsfall wie &#039;&#039;„Zahlung durchführen“&#039;&#039; kann durch spezialisierte Anwendungsfälle wie &#039;&#039;„Per Kreditkarte zahlen“&#039;&#039; oder &#039;&#039;„Per PayPal zahlen“&#039;&#039; generalisiert werden. Die speziellen Fälle erben die grundlegende Funktionalität, setzen sie aber im Detail abweichend um.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2872</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2872"/>
		<updated>2026-05-22T06:43:11Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die [[Unified Modeling Language]] (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; ist Teil der UML und wird im englischsprachigen Raum auch als &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039; bezeichnet. &lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklerteam) zu vermitteln. Als strukturierte Anforderungsbeschreibung können Anwendungsfalldiagramme direkt in das Lastenheft mit aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; In einem Anwendungsfalldiagramm werden potenzielle Benutzer des Systems identifiziert. Diese Benutzer nennt man Akteure. Jeder Akteur hat gewisse Erwartungen an die Software. Benutzer erwarten, dass das Programm ihnen hilft, ihre Aufgaben schneller und einfacher zu lösen.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Diese Aufgaben der Benutzer nennt man Anwendungsfälle. Sie erzeugen für den Anwender ein Ergebnis von messbarem Wert.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Verbindung zwischen Akteur und Anwendungsfall (oder zwischen Anwendungsfällen untereinander) nennt man Beziehung oder Relation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf von Anwendungsfällen wird nicht hier, sondern vorzugsweise in einem UML-Aktivitätendiagramm dargestellt.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze)&#039;&#039;&#039; zusammen. Die Akteure befinden sich außerhalb des Systems, während die Anwendungsfälle innerhalb des Systems liegen und über Beziehungen miteinander verknüpft sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel mit Systemgrenze und Akteuren]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der Aufbau eines Anwendungsfalldiagramms folgt methodisch folgenden drei Regeln:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Als erstes sollte man klären, welche unterschiedlichen Akteure die zu erstellende Software benutzen werden. Akteure werden als „Strichmännchen“ dargestellt. Alle notwendigen Benutzer der Software sind darzustellen. Dies sind in der Regel Personen wie Kunden, Mitarbeiter oder Administratoren. Es können aber auch andere Software-Systeme sein, die eine Anwendung benutzen werden. Jeder Akteur sollte einen aussagekräftigen und selbsterklärenden Namen haben. „User“ bzw. „Akteur“ sind keine aussagekräftigen Namen, da sie für jede Software gültig sind.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Als zweites sollte geklärt werden, welche Anwendungsfälle die Software erfüllen soll. Anwendungsfälle werden in Ellipsen dargestellt. In diese Ellipsen wird die inhaltliche Beschreibung geschrieben. Es wird empfohlen, den Anwendungsfall kurz und aussagekräftig zusammenzufassen. Trotz der Kürze muss er verständlich bleiben! Daher sollte er in einem ganzen, aber möglichst knappen Satz im Sinne von &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (bzw. im Infinitiv) formuliert werden.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im dritten Schritt werden die Anwendungsfälle und Akteure über Beziehungen miteinander verbunden. Beziehungen zwischen Akteuren und Anwendungsfällen müssen durch Linien gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen verbinden Akteure mit Use Cases. Eine Assoziation bedeutet, dass der User die Aktion ausführen kann und somit mit dem System interagiert, das den Use Case enthält. Dabei darf ein einzelner Use Case mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein. Eine einzelne Assoziation muss immer genau zwei Elemente miteinander verbinden (binäre Assoziation).&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als eine durchgehende Linie dargestellt. Es ist die offenste Form der Darstellung und lässt Spielraum für Interpretation bezüglich des genauen Datenflusses.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Beispiel einer ungerichteten Assoziation]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Pfeile an der Assoziation geben an, wer die Aktion initiieren kann. Hier spricht man von einer gerichteten Assoziation. Ein Pfeil, der auf den Use Case gerichtet ist, besagt, dass nur der Akteur die Aktion initiieren kann, während ein Pfeil, der auf den Akteur zeigt, besagt, dass nur der Use Case die Aktion initiieren kann. Können beide Seiten die Aktion initiieren, werden die Pfeile weggelassen, anstatt zwei Pfeile zu setzen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Beispiel einer gerichteten Assoziation]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten geben an, wie viele Akteure mit wie vielen Anwendungsfällen in Beziehung stehen. Sie werden an gerichtete oder ungerichtete Assoziationen modelliert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Darstellung von Multiplizitäten beim Tischtennis-Rundlauf]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten sind im obigen Beispiel wie folgt zu lesen:&lt;br /&gt;
* An einem Tischtennis-Rundlauf sind mindestens 3 Spielerinnen beteiligt. Die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; bzw. beliebig definiert und die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Jede Spielerin jedoch kann an exakt einem Rundlauf-Spiel teilnehmen. Hier sind die Ober- und Untergrenze &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann an höchstens einem Rundlaufspiel beteiligt sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Da diese Information jedoch häufig für die Adressaten des Use Case Diagramms keine Rolle spielt, werden Multiplizitäten im Anwendungsfalldiagramm eher selten notiert. Eine elementare Rolle spielen sie hingegen beim [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes ===&lt;br /&gt;
&amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehungen (dt. beinhalten) werden mittels einer mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichneten gestrichelten Linie und einem Pfeil zum inkludierten Anwendungsfall gekennzeichnet. Hierdurch wird abgebildet, dass der inkludierte Anwendungsfall immer zwingend ausgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Include-Anweisung gibt an, dass ein Use Case alle inkludierten Use Cases zwingend mitbenutzt. Die Include-Beziehung wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Basis Use Case einen Pfeil in Richtung des zu inkludierenden Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Include-Beziehung zwischen Anwendungsfällen]]&lt;br /&gt;
&lt;br /&gt;
=== Extend ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung gibt an, dass ein Use Case optional ist und nur unter bestimmten Bedingungen ausgeführt wird. Sie wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Extension Use Case (Erweiterung) einen Pfeil in Richtung des Basis Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
Der Basis Use Case bestimmt sogenannte Erweiterungspunkte (&#039;&#039;Extension Points&#039;&#039;), die den präzisen Ort innerhalb des Use Cases angeben, an dem Extensions hinzugefügt werden dürfen. Erweiterungspunkte werden dargestellt, indem dem Use Case eine horizontale Linie hinzugefügt wird, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; steht, gefolgt von den Namen der Erweiterungspunkte.&lt;br /&gt;
&lt;br /&gt;
Optional kann an eine Extend-Anweisung eine Bedingung (&#039;&#039;Condition&#039;&#039;) hinzugefügt werden, die beschreibt, unter welchen Voraussetzungen bezogen auf den Erweiterungspunkt der Extend Use Case ausgeführt wird. Die Bedingung wird in der UML als Notizzettel dargestellt, der das Schlüsselwort &amp;lt;code&amp;gt;Condition&amp;lt;/code&amp;gt; enthält, gefolgt von der Bedingung in geschweiften Klammern und darunter der Erweiterungspunkt, auf den sich die Bedingung bezieht. Die Bedingung ist mit einer gestrichelten Linie mit der Linie der Extend-Anweisung verbunden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Extend-Beziehung inklusive Erweiterungspunkten und Bedingungen (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung ===&lt;br /&gt;
Zwischen zwei Anwendungsfällen oder Akteuren kann eine Generalisierungsbeziehung existieren (Vererbungspfeil mit hohler, geschlossener Pfeilspitze). Ausgedrückt wird damit, dass der spezialisierte Anwendungsfall oder Akteur alle Bestandteile des allgemeinen Anwendungsfalls oder Akteurs beinhaltet. Das spezialisierte Element konkretisiert oder erweitert das allgemeine Element.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Generalisierungsbeziehung (Vererbung)]]&lt;br /&gt;
&lt;br /&gt;
Ein typisches Beispiel bei Akteuren: Der Akteur &#039;&#039;&#039;Fahrer&#039;&#039;&#039; ist eine Spezialisierung von &#039;&#039;&#039;Anwender&#039;&#039;&#039;. Ein Fahrer besitzt alle Fähigkeiten, Use Cases und Eigenschaften eines allgemeinen Anwenders, wie z.B. Vorname, Nachname, Benutzername und dass er sich mit dem Benutzernamen und Passwort anmelden kann (login), fügt jedoch spezifische Eigenschaften oder Rollen hinzu. Ebenso lassen sich allgemeine Anwendungsfälle (z. B. &amp;quot;Medium brennen&amp;quot;) durch speziellere Anwendungsfälle (z. B. &amp;quot;CD brennen&amp;quot;, &amp;quot;DVD brennen&amp;quot;) generalisieren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2871</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2871"/>
		<updated>2026-05-22T06:39:56Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; ist Teil der UML und wird im englischsprachigen Raum auch als &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039; bezeichnet. &lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklerteam) zu vermitteln. Als strukturierte Anforderungsbeschreibung können Anwendungsfalldiagramme direkt in das Lastenheft mit aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; In einem Anwendungsfalldiagramm werden potenzielle Benutzer des Systems identifiziert. Diese Benutzer nennt man Akteure. Jeder Akteur hat gewisse Erwartungen an die Software. Benutzer erwarten, dass das Programm ihnen hilft, ihre Aufgaben schneller und einfacher zu lösen.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Diese Aufgaben der Benutzer nennt man Anwendungsfälle. Sie erzeugen für den Anwender ein Ergebnis von messbarem Wert.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Verbindung zwischen Akteur und Anwendungsfall (oder zwischen Anwendungsfällen untereinander) nennt man Beziehung oder Relation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf von Anwendungsfällen wird nicht hier, sondern vorzugsweise in einem UML-Aktivitätendiagramm dargestellt.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (Systemgrenze)&#039;&#039;&#039; zusammen. Die Akteure befinden sich außerhalb des Systems, während die Anwendungsfälle innerhalb des Systems liegen und über Beziehungen miteinander verknüpft sind.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallSys.png|mini|Gesamtbeispiel mit Systemgrenze und Akteuren]]&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der Aufbau eines Anwendungsfalldiagramms folgt methodisch folgenden drei Regeln:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Als erstes sollte man klären, welche unterschiedlichen Akteure die zu erstellende Software benutzen werden. Akteure werden als „Strichmännchen“ dargestellt. Alle notwendigen Benutzer der Software sind darzustellen. Dies sind in der Regel Personen wie Kunden, Mitarbeiter oder Administratoren. Es können aber auch andere Software-Systeme sein, die eine Anwendung benutzen werden. Jeder Akteur sollte einen aussagekräftigen und selbsterklärenden Namen haben. „User“ bzw. „Akteur“ sind keine aussagekräftigen Namen, da sie für jede Software gültig sind.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Als zweites sollte geklärt werden, welche Anwendungsfälle die Software erfüllen soll. Anwendungsfälle werden in Ellipsen dargestellt. In diese Ellipsen wird die inhaltliche Beschreibung geschrieben. Es wird empfohlen, den Anwendungsfall kurz und aussagekräftig zusammenzufassen. Trotz der Kürze muss er verständlich bleiben! Daher sollte er in einem ganzen, aber möglichst knappen Satz im Sinne von &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (bzw. im Infinitiv) formuliert werden.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im dritten Schritt werden die Anwendungsfälle und Akteure über Beziehungen miteinander verbunden. Beziehungen zwischen Akteuren und Anwendungsfällen müssen durch Linien gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen verbinden Akteure mit Use Cases. Eine Assoziation bedeutet, dass der User die Aktion ausführen kann und somit mit dem System interagiert, das den Use Case enthält. Dabei darf ein einzelner Use Case mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein. Eine einzelne Assoziation muss immer genau zwei Elemente miteinander verbinden (binäre Assoziation).&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als eine durchgehende Linie dargestellt. Es ist die offenste Form der Darstellung und lässt Spielraum für Interpretation bezüglich des genauen Datenflusses.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallEinweihungsfeier.png|mini|Beispiel einer ungerichteten Assoziation]]&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Pfeile an der Assoziation geben an, wer die Aktion initiieren kann. Hier spricht man von einer gerichteten Assoziation. Ein Pfeil, der auf den Use Case gerichtet ist, besagt, dass nur der Akteur die Aktion initiieren kann, während ein Pfeil, der auf den Akteur zeigt, besagt, dass nur der Use Case die Aktion initiieren kann. Können beide Seiten die Aktion initiieren, werden die Pfeile weggelassen, anstatt zwei Pfeile zu setzen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierung.png|mini|Beispiel einer gerichteten Assoziation]]&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten geben an, wie viele Akteure mit wie vielen Anwendungsfällen in Beziehung stehen. Sie werden an gerichtete oder ungerichtete Assoziationen modelliert.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallTischtennis.png|mini|Darstellung von Multiplizitäten beim Tischtennis-Rundlauf]]&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten sind im obigen Beispiel wie folgt zu lesen:&lt;br /&gt;
* An einem Tischtennis-Rundlauf sind mindestens 3 Spielerinnen beteiligt. Die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; bzw. beliebig definiert und die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Jede Spielerin jedoch kann an exakt einem Rundlauf-Spiel teilnehmen. Hier sind die Ober- und Untergrenze &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann an höchstens einem Rundlaufspiel beteiligt sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Da diese Information jedoch häufig für die Adressaten des Use Case Diagramms keine Rolle spielt, werden Multiplizitäten im Anwendungsfalldiagramm eher selten notiert. Eine elementare Rolle spielen sie hingegen beim [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes ===&lt;br /&gt;
&amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehungen (dt. beinhalten) werden mittels einer mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichneten gestrichelten Linie und einem Pfeil zum inkludierten Anwendungsfall gekennzeichnet. Hierdurch wird abgebildet, dass der inkludierte Anwendungsfall immer zwingend ausgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Include-Anweisung gibt an, dass ein Use Case alle inkludierten Use Cases zwingend mitbenutzt. Die Include-Beziehung wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Basis Use Case einen Pfeil in Richtung des zu inkludierenden Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallHotelreservierungKomplex.png|mini|Include-Beziehung zwischen Anwendungsfällen]]&lt;br /&gt;
&lt;br /&gt;
=== Extend ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung gibt an, dass ein Use Case optional ist und nur unter bestimmten Bedingungen ausgeführt wird. Sie wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Extension Use Case (Erweiterung) einen Pfeil in Richtung des Basis Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
Der Basis Use Case bestimmt sogenannte Erweiterungspunkte (&#039;&#039;Extension Points&#039;&#039;), die den präzisen Ort innerhalb des Use Cases angeben, an dem Extensions hinzugefügt werden dürfen. Erweiterungspunkte werden dargestellt, indem dem Use Case eine horizontale Linie hinzugefügt wird, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; steht, gefolgt von den Namen der Erweiterungspunkte.&lt;br /&gt;
&lt;br /&gt;
Optional kann an eine Extend-Anweisung eine Bedingung (&#039;&#039;Condition&#039;&#039;) hinzugefügt werden, die beschreibt, unter welchen Voraussetzungen bezogen auf den Erweiterungspunkt der Extend Use Case ausgeführt wird. Die Bedingung wird in der UML als Notizzettel dargestellt, der das Schlüsselwort &amp;lt;code&amp;gt;Condition&amp;lt;/code&amp;gt; enthält, gefolgt von der Bedingung in geschweiften Klammern und darunter der Erweiterungspunkt, auf den sich die Bedingung bezieht. Die Bedingung ist mit einer gestrichelten Linie mit der Linie der Extend-Anweisung verbunden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png|mini|Extend-Beziehung inklusive Erweiterungspunkten und Bedingungen (Condition)]]&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung ===&lt;br /&gt;
Zwischen zwei Anwendungsfällen oder Akteuren kann eine Generalisierungsbeziehung existieren (Vererbungspfeil mit hohler, geschlossener Pfeilspitze). Ausgedrückt wird damit, dass der spezialisierte Anwendungsfall oder Akteur alle Bestandteile des allgemeinen Anwendungsfalls oder Akteurs beinhaltet. Das spezialisierte Element konkretisiert oder erweitert das allgemeine Element.&lt;br /&gt;
&lt;br /&gt;
[[Datei:AnwendungsfallCD.png|mini|Generalisierungsbeziehung (Vererbung)]]&lt;br /&gt;
&lt;br /&gt;
Ein typisches Beispiel bei Akteuren: Der Akteur &#039;&#039;&#039;Fahrer&#039;&#039;&#039; ist eine Spezialisierung von &#039;&#039;&#039;Anwender&#039;&#039;&#039;. Ein Fahrer besitzt alle Fähigkeiten, Use Cases und Eigenschaften eines allgemeinen Anwenders, wie z.B. Vorname, Nachname, Benutzername und dass er sich mit dem Benutzernamen und Passwort anmelden kann (login), fügt jedoch spezifische Eigenschaften oder Rollen hinzu. Ebenso lassen sich allgemeine Anwendungsfälle (z. B. &amp;quot;Medium brennen&amp;quot;) durch speziellere Anwendungsfälle (z. B. &amp;quot;CD brennen&amp;quot;, &amp;quot;DVD brennen&amp;quot;) generalisieren.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallSys.png&amp;diff=2870</id>
		<title>Datei:AnwendungsfallSys.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallSys.png&amp;diff=2870"/>
		<updated>2026-05-22T06:37:44Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm System mit Fahrern&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallCD.png&amp;diff=2869</id>
		<title>Datei:AnwendungsfallCD.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallCD.png&amp;diff=2869"/>
		<updated>2026-05-22T06:37:02Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm mit CD für Generalisierung&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png&amp;diff=2868</id>
		<title>Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfalldiagrammHotelreservierungKomplexErkl.png&amp;diff=2868"/>
		<updated>2026-05-22T06:36:29Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm der komplexen Hotelreservierung mit Erklärung&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallTischtennis.png&amp;diff=2867</id>
		<title>Datei:AnwendungsfallTischtennis.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallTischtennis.png&amp;diff=2867"/>
		<updated>2026-05-22T06:35:16Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm, das Tischtennis darstellt&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallHotelreservierungKomplex.png&amp;diff=2866</id>
		<title>Datei:AnwendungsfallHotelreservierungKomplex.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallHotelreservierungKomplex.png&amp;diff=2866"/>
		<updated>2026-05-22T06:34:31Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm, das eine komplexere Hotelreservierung darstellt&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallHotelreservierung.png&amp;diff=2865</id>
		<title>Datei:AnwendungsfallHotelreservierung.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallHotelreservierung.png&amp;diff=2865"/>
		<updated>2026-05-22T06:33:06Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm, das eine Hotelreservierung darstellt&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallEinweihungsfeier.png&amp;diff=2864</id>
		<title>Datei:AnwendungsfallEinweihungsfeier.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Datei:AnwendungsfallEinweihungsfeier.png&amp;diff=2864"/>
		<updated>2026-05-22T06:32:11Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Anwendungsfalldiagramm, das eine Einweihungsfeier modelliert&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2863</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2863"/>
		<updated>2026-05-22T06:24:52Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; ist Teil der UML und wird im englischsprachigen Raum auch als &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039; bezeichnet. &lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklerteam) zu vermitteln. Als strukturierte Anforderungsbeschreibung können Anwendungsfalldiagramme direkt in das Lastenheft mit aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; In einem Anwendungsfalldiagramm werden potenzielle Benutzer des Systems identifiziert. Diese Benutzer nennt man Akteure. Jeder Akteur hat gewisse Erwartungen an die Software. Benutzer erwarten, dass das Programm ihnen hilft, ihre Aufgaben schneller und einfacher zu lösen.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Diese Aufgaben der Benutzer nennt man Anwendungsfälle. Sie erzeugen für den Anwender ein Ergebnis von messbarem Wert.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Verbindung zwischen Akteur und Anwendungsfall (oder zwischen Anwendungsfällen untereinander) nennt man Beziehung oder Relation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf von Anwendungsfällen wird nicht hier, sondern vorzugsweise in einem UML-Aktivitätendiagramm dargestellt.&lt;br /&gt;
&lt;br /&gt;
== Gesamtbeispiel (Systemkontext) ==&lt;br /&gt;
Ein vollständiges Anwendungsfalldiagramm führt alle Elemente innerhalb eines umschließenden &#039;&#039;&#039;Systemrahmens (System Boundary)&#039;&#039;&#039; zusammen. Die Akteure befinden sich außerhalb des Systems, während die Anwendungsfälle innerhalb des Systems liegen und über Beziehungen miteinander verknüpft sind.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;680&amp;quot; height=&amp;quot;340&amp;quot; viewBox=&amp;quot;0 0 680 340&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;rect x=&amp;quot;160&amp;quot; y=&amp;quot;20&amp;quot; width=&amp;quot;360&amp;quot; height=&amp;quot;300&amp;quot; rx=&amp;quot;8&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;175&amp;quot; y=&amp;quot;45&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;System: Onlineshop&amp;lt;/text&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 90)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Kunde&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;145&amp;quot; x2=&amp;quot;185&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;155&amp;quot; x2=&amp;quot;185&amp;quot; y2=&amp;quot;235&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(185, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;85&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;75&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;85&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Artikel bestellen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;270&amp;quot; y1=&amp;quot;95&amp;quot; x2=&amp;quot;375&amp;quot; y2=&amp;quot;135&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1.5&amp;quot; stroke-dasharray=&amp;quot;4,4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;383,138 373,130 369,139&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;335&amp;quot; y=&amp;quot;112&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;«include»&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(370, 125)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;85&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;75&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;85&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Login durchführen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;260&amp;quot; y1=&amp;quot;210&amp;quot; x2=&amp;quot;260&amp;quot; y2=&amp;quot;132&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1.5&amp;quot; stroke-dasharray=&amp;quot;4,4&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;260,124 256,134 264,134&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;268&amp;quot; y=&amp;quot;175&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;«extend»&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(185, 210)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;85&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;75&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;85&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Reklamation einreichen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(590, 90)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;rect x=&amp;quot;0&amp;quot; y=&amp;quot;35&amp;quot; width=&amp;quot;70&amp;quot; height=&amp;quot;40&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; rx=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;35&amp;quot; y=&amp;quot;25&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-style=&amp;quot;italic&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;«system»&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;35&amp;quot; y=&amp;quot;58&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Support&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;535&amp;quot; y1=&amp;quot;155&amp;quot; x2=&amp;quot;590&amp;quot; y2=&amp;quot;120&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der Aufbau eines Anwendungsfalldiagramms folgt methodisch folgenden drei Regeln:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Als erstes sollte man klären, welche unterschiedlichen Akteure die zu erstellende Software benutzen werden. Akteure werden als „Strichmännchen“ dargestellt. Alle notwendigen Benutzer der Software sind darzustellen. Dies sind in der Regel Personen wie Kunden, Mitarbeiter oder Administratoren. Es können aber auch andere Software-Systeme sein, die eine Anwendung benutzen werden. Jeder Akteur sollte einen aussagekräftigen und selbsterklärenden Namen haben. „User“ bzw. „Akteur“ sind keine aussagekräftigen Namen, da sie für jede Software gültig sind.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Als zweites sollte geklärt werden, welche Anwendungsfälle die Software erfüllen soll. Anwendungsfälle werden in Ellipsen dargestellt. In diese Ellipsen wird die inhaltliche Beschreibung geschrieben. Es wird empfohlen, den Anwendungsfall kurz und aussagekräftig zusammenzufassen. Trotz der Kürze muss er verständlich bleiben! Daher sollte er in einem ganzen, aber möglichst knappen Satz im Sinne von &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (bzw. im Infinitiv) formuliert werden.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im dritten Schritt werden die Anwendungsfälle und Akteure über Beziehungen miteinander verbunden. Beziehungen zwischen Akteuren und Anwendungsfällen müssen durch Linien gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen verbinden Akteure mit Use Cases. Eine Assoziation bedeutet, dass der User die Aktion ausführen kann und somit mit dem System interagiert, das den Use Case enthält. Dabei darf ein einzelner Use Case mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein. Eine einzelne Assoziation muss immer genau zwei Elemente miteinander verbinden (binäre Assoziation).&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als eine durchgehende Linie dargestellt. Es ist die offenste Form der Darstellung und lässt Spielraum für Interpretation bezüglich des genauen Datenflusses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;450&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 450 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Akteur&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;230&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(230, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;90&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;85&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;90&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwendungsfall&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Pfeile an der Assoziation geben an, wer die Aktion initiieren kann. Hier spricht man von einer gerichteten Assoziation. Ein Pfeil, der auf den Use Case gerichtet ist, besagt, dass nur der Akteur die Aktion initiieren kann, während ein Pfeil, der auf den Akteur zeigt, besagt, dass nur der Use Case die Aktion initiieren kann. Können beide Seiten die Aktion initiieren, werden die Pfeile weggelassen, anstatt zwei Pfeile zu setzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;500&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 500 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Akteur&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;250&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;260,65 246,59 246,71&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(260, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;90&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;85&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;90&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwendungsfall&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten geben an, wie viele Akteure mit wie vielen Anwendungsfällen in Beziehung stehen. Sie werden an gerichtete oder ungerichtete Assoziationen modelliert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;720&amp;quot; height=&amp;quot;160&amp;quot; viewBox=&amp;quot;0 0 720 160&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(20, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Spielerin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;80&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;240&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;1&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;215&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;3..*&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(240, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;105&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Tischtennis-Rundlauf&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;460&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;620&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;475&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;0..*&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;595&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;0..1&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(620, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Schiedsrichterin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten sind im obigen Beispiel wie folgt zu lesen:&lt;br /&gt;
* An einem Tischtennis-Rundlauf sind mindestens 3 Spielerinnen beteiligt. Die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; bzw. beliebig definiert und die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Jede Spielerin jedoch kann an exakt einem Rundlauf-Spiel teilnehmen. Hier sind die Ober- und Untergrenze &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann an höchstens einem Rundlaufspiel beteiligt sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Da diese Information jedoch häufig für die Adressaten des Use Case Diagramms keine Rolle spielt, werden Multiplizitäten im Anwendungsfalldiagramm eher selten notiert. Eine elementare Rolle spielen sie hingegen beim [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes ===&lt;br /&gt;
&amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehungen (dt. beinhalten) werden mittels einer mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichneten gestrichelten Linie und einem Pfeil zum inkludierten Anwendungsfall gekennzeichnet. Hierdurch wird abgebildet, dass der inkludierte Anwendungsfall immer zwingend ausgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Include-Anweisung gibt an, dass ein Use Case alle inkludierten Use Cases zwingend mitbenutzt. Die Include-Beziehung wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Basis Use Case einen Pfeil in Richtung des zu inkludierenden Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;580&amp;quot; height=&amp;quot;110&amp;quot; viewBox=&amp;quot;0 0 580 110&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Basis Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;200&amp;quot; y1=&amp;quot;55&amp;quot; x2=&amp;quot;370&amp;quot; y2=&amp;quot;55&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;380,55 366,49 366,61&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;290&amp;quot; y=&amp;quot;42&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;&amp;amp;lt;&amp;amp;lt;include&amp;amp;gt;&amp;amp;gt;&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(380, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Inkludierter Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extend ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung gibt an, dass ein Use Case optional ist und nur unter bestimmten Bedingungen ausgeführt wird. Sie wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Extension Use Case (Erweiterung) einen Pfeil in Richtung des Basis Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
Der Basis Use Case bestimmt sogenannte Erweiterungspunkte (&#039;&#039;Extension Points&#039;&#039;), die den präzisen Ort innerhalb des Use Cases angeben, an dem Extensions hinzugefügt werden dürfen. Erweiterungspunkte werden dargestellt, indem dem Use Case eine horizontale Linie hinzugefügt wird, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; steht, gefolgt von den Namen der Erweiterungspunkte.&lt;br /&gt;
&lt;br /&gt;
Optional kann an eine Extend-Anweisung eine Bedingung (&#039;&#039;Condition&#039;&#039;) hinzugefügt werden, die beschreibt, unter welchen Voraussetzungen bezogen auf den Erweiterungspunkt der Extend Use Case ausgeführt wird. Die Bedingung wird in der UML als Notizzettel dargestellt, der das Schlüsselwort &amp;lt;code&amp;gt;Condition&amp;lt;/code&amp;gt; enthält, gefolgt von der Bedingung in geschweiften Klammern und darunter der Erweiterungspunkt, auf den sich die Bedingung bezieht. Die Bedingung ist mit einer gestrichelten Linie mit der Linie der Extend-Anweisung verbunden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;620&amp;quot; height=&amp;quot;230&amp;quot; viewBox=&amp;quot;0 0 620 230&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;100&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;95&amp;quot; ry=&amp;quot;38&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;32&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Basis Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;15&amp;quot; y1=&amp;quot;42&amp;quot; x2=&amp;quot;185&amp;quot; y2=&amp;quot;42&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-style=&amp;quot;italic&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;extension points:&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;68&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Erweiterungspunkt&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;410&amp;quot; y1=&amp;quot;110&amp;quot; x2=&amp;quot;220&amp;quot; y2=&amp;quot;110&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;210,110 224,104 224,116&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;315&amp;quot; y=&amp;quot;95&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;&amp;amp;lt;&amp;amp;lt;extend&amp;amp;gt;&amp;amp;gt;&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(410, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;100&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;95&amp;quot; ry=&amp;quot;38&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Extension Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(220, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;0,0 160,0 180,20 180,50 0,50&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;160,0 160,20 180,20&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;18&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Condition: {Bedingung}&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;Erweiterungspunkt&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;310&amp;quot; y1=&amp;quot;60&amp;quot; x2=&amp;quot;310&amp;quot; y2=&amp;quot;110&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; stroke-dasharray=&amp;quot;3,3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung ===&lt;br /&gt;
Zwischen zwei Anwendungsfällen und Akteuren kann eine Generalisierungsbeziehung existieren (Vererbungspfeil). Ausgedrückt wird damit, dass der spezialisierte Anwendungsfall oder Akteur alle Bestandteile des allgemeinen Anwendungsfalls oder Akteurs beinhaltet. Der spezialisierte Anwendungsfall oder Akteur konkretisiert oder erweitert den allgemeinen Anwendungsfall.&lt;br /&gt;
&lt;br /&gt;
==== Generalisierung von Akteuren ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;360&amp;quot; height=&amp;quot;260&amp;quot; viewBox=&amp;quot;0 0 360 260&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwender&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;60&amp;quot; y1=&amp;quot;165&amp;quot; x2=&amp;quot;60&amp;quot; y2=&amp;quot;150&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;60,135 50,150 70,150&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 145)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Fahrer&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel ist der Akteur &#039;&#039;&#039;Fahrer&#039;&#039;&#039; eine Spezialisierung von &#039;&#039;&#039;Anwender&#039;&#039;&#039;. Ein Fahrer besitzt alle Fähigkeiten, Use Cases und Eigenschaften eines allgemeinen Anwenders, wie z.B. Vorname, Nachname, Benutzername und dass er sich mit dem Benutzernamen und Passwort anmelden kann (login), fügt jedoch spezifische Eigenschaften oder Rollen hinzu.&lt;br /&gt;
&lt;br /&gt;
==== Generalisierung von Anwendungsfällen ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;540&amp;quot; height=&amp;quot;200&amp;quot; viewBox=&amp;quot;0 0 540 200&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(175, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Zahlung durchführen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;130&amp;quot; y1=&amp;quot;115&amp;quot; x2=&amp;quot;200&amp;quot; y2=&amp;quot;70&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;212,62 195,64 203,77&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;410&amp;quot; y1=&amp;quot;115&amp;quot; x2=&amp;quot;340&amp;quot; y2=&amp;quot;70&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;328,62 337,77 345,64&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(15, 115)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Mit Kreditkarte bezahlen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(335, 115)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;30&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;25&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Per PayPal bezahlen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ebenso können Anwendungsfälle untereinander generalisiert werden. Der allgemeine Use Case &#039;&#039;„Zahlung durchführen“&#039;&#039; wird hierbei durch die konkreten, spezialisierten Ausprägungen &#039;&#039;„Mit Kreditkarte bezahlen“&#039;&#039; und &#039;&#039;„Per PayPal bezahlen“&#039;&#039; geerbt und ausdifferenziert.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2862</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2862"/>
		<updated>2026-05-22T06:19:43Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte grafische Modellierungssprache zur Beschreibung von Anforderungen und Softwarearchitekturen. Das &#039;&#039;&#039;Anwendungsfalldiagramm&#039;&#039;&#039; ist Teil der UML und wird im englischsprachigen Raum auch als &#039;&#039;&#039;Use Case Diagramm&#039;&#039;&#039; bezeichnet. &lt;br /&gt;
&lt;br /&gt;
Ziel des Anwendungsfalldiagramms ist es, in der Analysephase die funktionalen Anforderungen des Auftraggebers aus fachlicher Sicht für alle Beteiligten verständlich, übersichtlich und vollständig zu modellieren. Es dient als zentrales Kommunikationsmittel, um zwischen potenziellen Anwendern, Auftraggebern (Fachseite) und Auftragnehmern (Entwicklerteam) zu vermitteln. Als strukturierte Anforderungsbeschreibung können Anwendungsfalldiagramme direkt in das Lastenheft mit aufgenommen werden.&lt;br /&gt;
&lt;br /&gt;
Das Anwendungsfalldiagramm besteht aus drei wesentlichen Elementen:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (engl. &#039;&#039;actors&#039;&#039;):&#039;&#039;&#039; In einem Anwendungsfalldiagramm werden potenzielle Benutzer des Systems identifiziert. Diese Benutzer nennt man Akteure. Jeder Akteur hat gewisse Erwartungen an die Software. Benutzer erwarten, dass das Programm ihnen hilft, ihre Aufgaben schneller und einfacher zu lösen.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (engl. &#039;&#039;use cases&#039;&#039;):&#039;&#039;&#039; Diese Aufgaben der Benutzer nennt man Anwendungsfälle. Sie erzeugen für den Anwender ein Ergebnis von messbarem Wert.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (engl. &#039;&#039;relations&#039;&#039;):&#039;&#039;&#039; Die Verbindung zwischen Akteur und Anwendungsfall (oder zwischen Anwendungsfällen untereinander) nennt man Beziehung oder Relation.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Der detaillierte, prozessuale Ablauf von Anwendungsfällen wird nicht hier, sondern vorzugsweise in einem UML-Aktivitätendiagramm dargestellt.&lt;br /&gt;
&lt;br /&gt;
== Notation ==&lt;br /&gt;
Der Aufbau eines Anwendungsfalldiagramms folgt methodisch folgenden drei Regeln:&lt;br /&gt;
&lt;br /&gt;
# &#039;&#039;&#039;Akteure identifizieren:&#039;&#039;&#039; Als erstes sollte man klären, welche unterschiedlichen Akteure die zu erstellende Software benutzen werden. Akteure werden als „Strichmännchen“ dargestellt. Alle notwendigen Benutzer der Software sind darzustellen. Dies sind in der Regel Personen wie Kunden, Mitarbeiter oder Administratoren. Es können aber auch andere Software-Systeme sein, die eine Anwendung benutzen werden. Jeder Akteur sollte einen aussagekräftigen und selbsterklärenden Namen haben. „User“ bzw. „Akteur“ sind keine aussagekräftigen Namen, da sie für jede Software gültig sind.&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle definieren:&#039;&#039;&#039; Als zweites sollte geklärt werden, welche Anwendungsfälle die Software erfüllen soll. Anwendungsfälle werden in Ellipsen dargestellt. In diese Ellipsen wird die inhaltliche Beschreibung geschrieben. Es wird empfohlen, den Anwendungsfall kurz und aussagekräftig zusammenzufassen. Trotz der Kürze muss er verständlich bleiben! Daher sollte er in einem ganzen, aber möglichst knappen Satz im Sinne von &#039;&#039;Subjekt-Prädikat-Objekt&#039;&#039; (bzw. im Infinitiv) formuliert werden.&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen verknüpfen:&#039;&#039;&#039; Erst im dritten Schritt werden die Anwendungsfälle und Akteure über Beziehungen miteinander verbunden. Beziehungen zwischen Akteuren und Anwendungsfällen müssen durch Linien gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
== Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== Assoziation ===&lt;br /&gt;
Assoziationen verbinden Akteure mit Use Cases. Eine Assoziation bedeutet, dass der User die Aktion ausführen kann und somit mit dem System interagiert, das den Use Case enthält. Dabei darf ein einzelner Use Case mit mehreren Akteuren und ein einzelner Akteur mit mehreren Use Cases verbunden sein. Eine einzelne Assoziation muss immer genau zwei Elemente miteinander verbinden (binäre Assoziation).&lt;br /&gt;
&lt;br /&gt;
==== Ungerichtete Assoziation ====&lt;br /&gt;
Ungerichtete Assoziationen werden als eine durchgehende Linie dargestellt. Es ist die offenste Form der Darstellung und lässt Spielraum für Interpretation bezüglich des genauen Datenflusses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;450&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 450 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Akteur&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;230&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(230, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;90&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;85&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;90&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwendungsfall&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Gerichtete Assoziation ====&lt;br /&gt;
Pfeile an der Assoziation geben an, wer die Aktion initiieren kann. Hier spricht man von einer gerichteten Assoziation. Ein Pfeil, der auf den Use Case gerichtet ist, besagt, dass nur der Akteur die Aktion initiieren kann, während ein Pfeil, der auf den Akteur zeigt, besagt, dass nur der Use Case die Aktion initiieren kann. Können beide Seiten die Aktion initiieren, werden die Pfeile weggelassen, anstatt zwei Pfeile zu setzen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;500&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 500 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Akteur&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;90&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;250&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;260,65 246,59 246,71&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(260, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;90&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;85&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;90&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwendungsfall&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Multiplizitäten ===&lt;br /&gt;
Multiplizitäten geben an, wie viele Akteure mit wie vielen Anwendungsfällen in Beziehung stehen. Sie werden an gerichtete oder ungerichtete Assoziationen modelliert.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;720&amp;quot; height=&amp;quot;160&amp;quot; viewBox=&amp;quot;0 0 720 160&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(20, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Spielerin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;80&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;240&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;1&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;215&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;3..*&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(240, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;105&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Tischtennis-Rundlauf&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;460&amp;quot; y1=&amp;quot;65&amp;quot; x2=&amp;quot;620&amp;quot; y2=&amp;quot;65&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;475&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;0..*&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;595&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#c00&amp;quot;&amp;gt;0..1&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(620, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Schiedsrichterin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Multiplizitäten sind im obigen Beispiel wie folgt zu lesen:&lt;br /&gt;
* An einem Tischtennis-Rundlauf sind mindestens 3 Spielerinnen beteiligt. Die Obergrenze ist als &amp;lt;code&amp;gt;*&amp;lt;/code&amp;gt; bzw. beliebig definiert und die Untergrenze ist &amp;lt;code&amp;gt;3&amp;lt;/code&amp;gt;. Jede Spielerin jedoch kann an exakt einem Rundlauf-Spiel teilnehmen. Hier sind die Ober- und Untergrenze &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;.&lt;br /&gt;
* An einem Rundlaufspiel können keine oder beliebig viele Schiedsrichterinnen beteiligt sein (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Jede Schiedsrichterin kann an höchstens einem Rundlaufspiel beteiligt sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Da diese Information jedoch häufig für die Adressaten des Use Case Diagramms keine Rolle spielt, werden Multiplizitäten im Anwendungsfalldiagramm eher selten notiert. Eine elementare Rolle spielen sie hingegen beim [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== Includes ===&lt;br /&gt;
&amp;lt;code&amp;gt;include&amp;lt;/code&amp;gt;-Beziehungen (dt. beinhalten) werden mittels einer mit &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichneten gestrichelten Linie und einem Pfeil zum inkludierten Anwendungsfall gekennzeichnet. Hierdurch wird abgebildet, dass der inkludierte Anwendungsfall immer zwingend ausgeführt werden muss.&lt;br /&gt;
&lt;br /&gt;
Die Include-Anweisung gibt an, dass ein Use Case alle inkludierten Use Cases zwingend mitbenutzt. Die Include-Beziehung wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;include&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Basis Use Case einen Pfeil in Richtung des zu inkludierenden Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;580&amp;quot; height=&amp;quot;110&amp;quot; viewBox=&amp;quot;0 0 580 110&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Basis Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;200&amp;quot; y1=&amp;quot;55&amp;quot; x2=&amp;quot;370&amp;quot; y2=&amp;quot;55&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;380,55 366,49 366,61&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;290&amp;quot; y=&amp;quot;42&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;&amp;amp;lt;&amp;amp;lt;include&amp;amp;gt;&amp;amp;gt;&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(380, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;95&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;90&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;95&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Inkludierter Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extend ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;extend&amp;lt;/code&amp;gt;-Beziehung gibt an, dass ein Use Case optional ist und nur unter bestimmten Bedingungen ausgeführt wird. Sie wird durch eine gestrichelte Linie dargestellt, die durch das Schlüsselwort &amp;lt;code&amp;gt;&amp;lt;&amp;lt;extend&amp;gt;&amp;gt;&amp;lt;/code&amp;gt; gekennzeichnet ist und vom Extension Use Case (Erweiterung) einen Pfeil in Richtung des Basis Use Cases hat.&lt;br /&gt;
&lt;br /&gt;
Der Basis Use Case bestimmt sogenannte Erweiterungspunkte (&#039;&#039;Extension Points&#039;&#039;), die den präzisen Ort innerhalb des Use Cases angeben, an dem Extensions hinzugefügt werden dürfen. Erweiterungspunkte werden dargestellt, indem dem Use Case eine horizontale Linie hinzugefügt wird, unter der das Schlüsselwort &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; steht, gefolgt von den Namen der Erweiterungspunkte.&lt;br /&gt;
&lt;br /&gt;
Optional kann an eine Extend-Anweisung eine Bedingung (&#039;&#039;Condition&#039;&#039;) hinzugefügt werden, die beschreibt, unter welchen Voraussetzungen bezogen auf den Erweiterungspunkt der Extend Use Case ausgeführt wird. Die Bedingung wird in der UML als Notizzettel dargestellt, der das Schlüsselwort &amp;lt;code&amp;gt;Condition&amp;lt;/code&amp;gt; enthält, gefolgt von der Bedingung in geschweiften Klammern und darunter der Erweiterungspunkt, auf den sich die Bedingung bezieht. Die Bedingung ist mit einer gestrichelten Linie mit der Linie der Extend-Anweisung verbunden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;620&amp;quot; height=&amp;quot;230&amp;quot; viewBox=&amp;quot;0 0 620 230&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;100&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;95&amp;quot; ry=&amp;quot;38&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;32&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Basis Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;15&amp;quot; y1=&amp;quot;42&amp;quot; x2=&amp;quot;185&amp;quot; y2=&amp;quot;42&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-style=&amp;quot;italic&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;extension points:&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;68&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Erweiterungspunkt&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;410&amp;quot; y1=&amp;quot;110&amp;quot; x2=&amp;quot;220&amp;quot; y2=&amp;quot;110&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;210,110 224,104 224,116&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;315&amp;quot; y=&amp;quot;95&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;&amp;amp;lt;&amp;amp;lt;extend&amp;amp;gt;&amp;amp;gt;&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(410, 70)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;100&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;95&amp;quot; ry=&amp;quot;38&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;100&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Extension Use-Case&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(220, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;0,0 160,0 180,20 180,50 0,50&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;160,0 160,20 180,20&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;18&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Condition: {Bedingung}&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;34&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;10&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;Erweiterungspunkt&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;310&amp;quot; y1=&amp;quot;60&amp;quot; x2=&amp;quot;310&amp;quot; y2=&amp;quot;110&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; stroke-dasharray=&amp;quot;3,3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Generalisierung ===&lt;br /&gt;
Zwischen zwei Anwendungsfällen und Akteuren kann eine Generalisierungsbeziehung existieren (Vererbungspfeil). Ausgedrückt wird damit, dass der spezialisierte Anwendungsfall oder Akteur alle Bestandteile des allgemeinen Anwendungsfalls oder Akteurs beinhaltet. Der spezialisierte Anwendungsfall oder Akteur konkretisiert oder erweitert den allgemeinen Anwendungsfall. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;360&amp;quot; height=&amp;quot;260&amp;quot; viewBox=&amp;quot;0 0 360 260&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwender&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;60&amp;quot; y1=&amp;quot;165&amp;quot; x2=&amp;quot;60&amp;quot; y2=&amp;quot;150&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;60,135 50,150 70,150&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(30, 145)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Fahrer&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im obigen Beispiel ist der Akteur &#039;&#039;&#039;Fahrer&#039;&#039;&#039; eine Spezialisierung von &#039;&#039;&#039;Anwender&#039;&#039;&#039;. Ein Fahrer besitzt alle Fähigkeiten, Use Cases und Eigenschaften eines allgemeinen Anwenders, wie z.B. Vorname, Nachname, Benutzername und dass er sich mit dem Benutzernamen und Passwort anmelden kann (login), fügt jedoch spezifische Eigenschaften oder Rollen hinzu.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2861</id>
		<title>Anwendungsfalldiagramm</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Anwendungsfalldiagramm&amp;diff=2861"/>
		<updated>2026-05-22T06:15:39Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Einführung ==&lt;br /&gt;
Die &#039;&#039;&#039;Unified Modeling Language&#039;&#039;&#039; (Vereinheitlichte Modellierungssprache), kurz &#039;&#039;&#039;UML&#039;&#039;&#039;, ist eine standardisierte, grafische Modellierungssprache zur Spezifikation, zum Entwurf und zur Dokumentation von Software- und anderen Systemen. Innerhalb der UML gehören &#039;&#039;&#039;Anwendungsfalndiagramme&#039;&#039;&#039; (auch &#039;&#039;Use-Case-Diagramme&#039;&#039; genannt) zu den Verhaltensdiagrammen. Sie beschreiben das erwartete Verhalten eines Systems aus der Perspektive eines externen Beobachters (Benutzers) heraus, ohne technische Implementierungsdetails offenzulegen.&lt;br /&gt;
&lt;br /&gt;
=== Zielsetzung im Software-Lebenszyklus ===&lt;br /&gt;
In der Analysephase eines Softwareprojekts dienen Anwendungsfalldiagramme dazu, die funktionalen Anforderungen des Auftraggebers strukturiert, übersichtlich und vollständig zu erfassen. Sie erfüllen dabei eine essenzielle Brückenfunktion:&lt;br /&gt;
* &#039;&#039;&#039;Kommunikationsmittel:&#039;&#039;&#039; Sie vermitteln barrierefrei zwischen fachlichen Laien (potenziellen Anwendern, Auftraggebern) und dem technischen Entwicklungsteam (Auftragnehmern).&lt;br /&gt;
* &#039;&#039;&#039;Anforderungsdokumentation:&#039;&#039;&#039; Als strukturierte und visuelle Anforderungsbeschreibung sind sie ein fundamentaler Bestandteil des &#039;&#039;&#039;Lastenhefts&#039;&#039;&#039; (was das System tun soll) und fließen direkt in das &#039;&#039;&#039;Pflichtenheft&#039;&#039;&#039; ein.&lt;br /&gt;
&lt;br /&gt;
=== Die drei Kernelemente ===&lt;br /&gt;
Ein Anwendungsfalndiagramm lässt sich auf drei wesentliche Säulen reduzieren:&amp;lt;ref&amp;gt;Heide Balzer: &#039;&#039;Lehrbuch der Objektmodellierung - Analyse und Entwurf&#039;&#039;, Spektrum Akademischer Verlag, S. 62 ff.&amp;lt;/ref&amp;gt;&lt;br /&gt;
# &#039;&#039;&#039;Akteure (Actors):&#039;&#039;&#039; Wer interagiert mit dem System? (Sowohl Personen als auch externe Systeme).&lt;br /&gt;
# &#039;&#039;&#039;Anwendungsfälle (Use Cases):&#039;&#039;&#039; Was kann mit dem System getan werden? Welche Ziele werden erreicht?&lt;br /&gt;
# &#039;&#039;&#039;Beziehungen (Relations):&#039;&#039;&#039; Wie interagieren Akteure und Anwendungsfälle miteinander oder wie hängen Anwendungsfälle untereinander zusammen?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis zur Abgrenzung:&#039;&#039; Ein Use-Case-Diagramm zeigt &#039;&#039;&#039;nicht&#039;&#039;&#039;, in welcher zeitlichen oder logischen Reihenfolge Prozesse ablaufen. Für die Modellierung von detaillierten, prozessualen Abläufen und Kontrollflüssen wird stattdessen das [[Aktivitätendiagramm]] verwendet.&lt;br /&gt;
&lt;br /&gt;
== Systematische Notation und Aufbau ==&lt;br /&gt;
Die Erstellung eines normkonformen Diagramms folgt einem klaren, dreistufigen iterativen Prozess:&lt;br /&gt;
&lt;br /&gt;
=== 1. Akteure identifizieren (Actors) ===&lt;br /&gt;
Akteure stellen Rollen dar, die außerhalb des betrachteten Systems liegen, aber mit diesem interagieren. &lt;br /&gt;
* &#039;&#039;&#039;Darstellung:&#039;&#039;&#039; Grafisch als klassisches Strichmännchen (für menschliche Rollen) oder als Rechteck mit dem Stereotyp &amp;lt;code&amp;gt;«system»&amp;lt;/code&amp;gt; (für externe Software/Hardware).&lt;br /&gt;
* &#039;&#039;&#039;Namensgebung:&#039;&#039;&#039; Akteure müssen präzise, selbsterklärende Substantive sein (z. B. &#039;&#039;Kunde&#039;&#039;, &#039;&#039;Systemadministrator&#039;&#039;, &#039;&#039;Buchhaltungssystem&#039;&#039;). Generische Bezeichnungen wie „User“, „Benutzer“ oder „Akteur“ sind strikt zu vermeiden, da sie keine differenzierte Rolle beschreiben.&lt;br /&gt;
&lt;br /&gt;
=== 2. Anwendungsfälle definieren (Use Cases) ===&lt;br /&gt;
Ein Anwendungsfall beschreibt eine Sequenz von Interaktionen, die für den Akteur ein Ergebnis von messbarem, fachlichem Wert liefert.&lt;br /&gt;
* &#039;&#039;&#039;Darstellung:&#039;&#039;&#039; Als horizontale Ellipse, in deren Zentrum die Beschreibung steht.&lt;br /&gt;
* &#039;&#039;&#039;Namensgebung:&#039;&#039;&#039; Die Formulierung erfolgt kurz, prägnant, im Infinitiv und folgt der sprachlichen Struktur: &#039;&#039;&#039;Subjekt-Objekt-Prädikat&#039;&#039;&#039; (z. B. &#039;&#039;Artikel in Warenkorb legen&#039;&#039;, &#039;&#039;Passwort zurücksetzen&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== 3. Beziehungen verknüpfen (Relations) ===&lt;br /&gt;
Akteure und Anwendungsfälle werden über Beziehungslinien verknüpft, um Interaktionskanäle aufzuzeigen. Das gesamte System wird optional durch einen rechteckigen &#039;&#039;&#039;Systemrahmen (System Boundary)&#039;&#039;&#039; umschlossen, welcher die Systemgrenze markiert: Akteure stehen außerhalb, Use Cases innerhalb des Rahmens.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;600&amp;quot; height=&amp;quot;220&amp;quot; viewBox=&amp;quot;0 0 600 220&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;rect x=&amp;quot;180&amp;quot; y=&amp;quot;20&amp;quot; width=&amp;quot;380&amp;quot; height=&amp;quot;180&amp;quot; rx=&amp;quot;5&amp;quot; fill=&amp;quot;none&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;190&amp;quot; y=&amp;quot;40&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Systemgrenze (z.B. Webshop)&amp;lt;/text&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(50, 60)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Kunde&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;110&amp;quot; y1=&amp;quot;120&amp;quot; x2=&amp;quot;240&amp;quot; y2=&amp;quot;120&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;175&amp;quot; y=&amp;quot;110&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; fill=&amp;quot;#555555&amp;quot; text-anchor=&amp;quot;middle&amp;quot;&amp;gt;Assoziation&amp;lt;/text&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(240, 80)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;140&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;120&amp;quot; ry=&amp;quot;35&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;140&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; text-anchor=&amp;quot;middle&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Artikel suchen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Detaillierte Typisierung von Beziehungen ==&lt;br /&gt;
&lt;br /&gt;
=== 1. Assoziationen (Akteur ↔ Use Case) ===&lt;br /&gt;
Assoziationen bilden das Fundament der Kommunikation zwischen Akteur und System. Es handelt sich um eine binäre Beziehung (verbindet genau zwei Elemente).&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Ungerichtete Assoziation:&#039;&#039;&#039; Eine einfache, durchgehende Linie. Sie signalisiert einen bidirektionalen Informationsfluss. Der Akteur interagiert mit dem Use Case, lässt jedoch offen, wer die Interaktion gestartet hat.&lt;br /&gt;
* &#039;&#039;&#039;Gerichtete Assoziation:&#039;&#039;&#039; Eine Linie mit einer offenen Pfeilspitze. Der Pfeil zeigt auf den Initiator des Datenflusses bzw. der Aktion:&lt;br /&gt;
** Pfeil zeigt zum &#039;&#039;Use Case&#039;&#039;: Der Akteur initiiert den Anwendungsfall aktiv.&lt;br /&gt;
** Pfeil zeigt zum &#039;&#039;Akteur&#039;&#039;: Der Anwendungsfall stößt eine Aktion beim Akteur an (häufig bei sekundären, externen Systemen wie z. B. Benachrichtigungsdiensten).&lt;br /&gt;
&lt;br /&gt;
=== 2. Multiplizitäten ===&lt;br /&gt;
Multiplizitäten (Kardinalitäten) geben an, wie viele Instanzen eines Akteurs zeitgleich mit wie vielen Instanzen eines Anwendungsfalls interagieren können. Sie werden direkt an die Enden der Assoziationslinien geschrieben.&lt;br /&gt;
&lt;br /&gt;
==== Praxisbeispiel: Das Tischtennis-Rundlaufspiel ====&lt;br /&gt;
Um die Logik von Multiplizitäten zu verdeutlichen, betrachten wir das Regelwerk eines Tischtennis-Rundlaufs:&lt;br /&gt;
* An einem Rundlauf-Spiel müssen &#039;&#039;&#039;mindestens 3 Spielerinnen&#039;&#039;&#039; teilnehmen, nach oben hin gibt es keine Grenze (&amp;lt;code&amp;gt;3..*&amp;lt;/code&amp;gt;). Jede einzelne Spielerin nimmt jedoch zu einem Zeitpunkt an &#039;&#039;&#039;exakt 1&#039;&#039;&#039; Rundlauf-Spiel teil (&amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;).&lt;br /&gt;
* Ein Spiel kann völlig ohne oder mit unbegrenzt vielen Schiedsrichterinnen stattfinden (&amp;lt;code&amp;gt;0..*&amp;lt;/code&amp;gt;). Eine Schiedsrichterin kann maximal &#039;&#039;&#039;an höchstens 1&#039;&#039;&#039; Spiel gleichzeitig als Offizielle zugewiesen sein (&amp;lt;code&amp;gt;0..1&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;750&amp;quot; height=&amp;quot;280&amp;quot; viewBox=&amp;quot;0 0 750 280&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(265, 100)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;100&amp;quot; ry=&amp;quot;35&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Am Rundlauf-Spiel&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;60&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;teilnehmen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(40, 50)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Spielerin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;100&amp;quot; y1=&amp;quot;130&amp;quot; x2=&amp;quot;265&amp;quot; y2=&amp;quot;135&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;115&amp;quot; y=&amp;quot;120&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#b30000&amp;quot;&amp;gt;1&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;240&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#b30000&amp;quot;&amp;gt;3..*&amp;lt;/text&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(640, 50)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Schiedsrichterin&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;465&amp;quot; y1=&amp;quot;135&amp;quot; x2=&amp;quot;640&amp;quot; y2=&amp;quot;130&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;480&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#b30000&amp;quot;&amp;gt;0..*&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;text x=&amp;quot;615&amp;quot; y=&amp;quot;120&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#b30000&amp;quot;&amp;gt;0..1&amp;lt;/text&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Hinweis für die Praxis:&#039;&#039; Da Multiplizitäten Use-Case-Diagramme schnell visuell überladen und für fachliche Auftraggeber oft sekundär sind, werden sie in dieser Diagrammart selten notiert. Ihre fundamentale Bedeutung entfalten sie im [[Klassendiagramm]].&lt;br /&gt;
&lt;br /&gt;
=== 3. Include-Beziehungen (Abhängigkeiten) ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt;-Beziehung beschreibt eine zwingende Abhängigkeit (Einschluss). Wenn ein Basis-Anwendungsfall ausgeführt wird, &#039;&#039;&#039;muss&#039;&#039;&#039; der inkludierte Anwendungsfall zwingend ebenfalls ausgeführt werden. Sie dient dem Aufbrechen komplexer Use Cases und der Wiederverwendung von Funktionalitäten.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfeilrichtung:&#039;&#039;&#039; Der gestrichelte Pfeil startet beim &#039;&#039;Basis-Use-Case&#039;&#039; und zeigt &#039;&#039;&#039;auf den inkludierten&#039;&#039;&#039; Use Case.&lt;br /&gt;
* &#039;&#039;&#039;Stereotyp:&#039;&#039;&#039; Die Beziehungslinie muss zwingend mit dem Schlüsselwort &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; gekennzeichnet werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;650&amp;quot; height=&amp;quot;140&amp;quot; viewBox=&amp;quot;0 0 650 140&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(10, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;100&amp;quot; ry=&amp;quot;35&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Bestellung aufgeben&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;210&amp;quot; y1=&amp;quot;70&amp;quot; x2=&amp;quot;420&amp;quot; y2=&amp;quot;70&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;430,70 415,63 415,77&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;320&amp;quot; y=&amp;quot;55&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;«include»&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(430, 30)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;40&amp;quot; rx=&amp;quot;100&amp;quot; ry=&amp;quot;35&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;44&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Identität prüfen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 4. Extend-Beziehungen (Erweiterungen) ===&lt;br /&gt;
Die &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt;-Beziehung modelliert ein &#039;&#039;&#039;optionales&#039;&#039;&#039; Verhalten. Der erweiternde Use Case wird nur unter präzise definierten Rahmenbedingungen ausgeführt.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Pfeilrichtung:&#039;&#039;&#039; Der gestrichelte Pfeil verhält sich umgekehrt zur Include-Beziehung: Er startet beim &#039;&#039;erweiternden (optionalen) Use Case&#039;&#039; und zeigt &#039;&#039;&#039;auf den Basis-Use-Case&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Stereotyp:&#039;&#039;&#039; Kennzeichnung erfolgt über das Schlüsselwort &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt;.&lt;br /&gt;
* &#039;&#039;&#039;Erweiterungspunkte (Extension Points):&#039;&#039;&#039; Im Basis-Use-Case wird unter einer horizontalen Trennlinie via &amp;lt;code&amp;gt;extension points&amp;lt;/code&amp;gt; definiert, an welcher Stelle die Erweiterung eingreift.&lt;br /&gt;
* &#039;&#039;&#039;Bedingung (Condition):&#039;&#039;&#039; Ein umschließendes Notizfeld (als Notizzettel dargestellt) definiert die logische Bedingung. Es wird mit einer fein gestrichelten Linie an die Extend-Beziehung geheftet.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;700&amp;quot; height=&amp;quot;300&amp;quot; viewBox=&amp;quot;0 0 700 300&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(20, 100)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;120&amp;quot; cy=&amp;quot;50&amp;quot; rx=&amp;quot;110&amp;quot; ry=&amp;quot;45&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;120&amp;quot; y=&amp;quot;40&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Konto einrichten&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;52&amp;quot; x2=&amp;quot;210&amp;quot; y2=&amp;quot;52&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;120&amp;quot; y=&amp;quot;68&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-style=&amp;quot;italic&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;extension points:&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;120&amp;quot; y=&amp;quot;82&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Premium-Option&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;440&amp;quot; y1=&amp;quot;150&amp;quot; x2=&amp;quot;255&amp;quot; y2=&amp;quot;150&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; stroke-dasharray=&amp;quot;6,6&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;245,150 260,143 260,157&amp;quot; fill=&amp;quot;#222222&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;350&amp;quot; y=&amp;quot;135&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;«extend»&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(450, 100)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;110&amp;quot; cy=&amp;quot;50&amp;quot; rx=&amp;quot;100&amp;quot; ry=&amp;quot;45&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;48&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Premium-Features&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;110&amp;quot; y=&amp;quot;64&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;auswählen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(250, 10)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;0,0 170,0 190,20 190,60 0,60&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;170,0 170,20 190,20&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;20&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Condition: {Nutzer wählt&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;35&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; font-weight=&amp;quot;bold&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Premium-Abonnement}&amp;lt;/text&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;10&amp;quot; y=&amp;quot;50&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;11&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;Extension Point: Premium-Option&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
  &amp;lt;line x1=&amp;quot;345&amp;quot; y1=&amp;quot;70&amp;quot; x2=&amp;quot;345&amp;quot; y2=&amp;quot;150&amp;quot; stroke=&amp;quot;#555555&amp;quot; stroke-width=&amp;quot;1&amp;quot; stroke-dasharray=&amp;quot;3,3&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== 5. Generalisierung (Vererbung / Spezialisierung) ===&lt;br /&gt;
Eine Generalisierungsbeziehung spiegelt das klassische Konzept der Vererbung (OOP) wider. Sie kann sowohl zwischen zwei Akteuren als auch zwischen zwei Anwendungsfällen existieren. Das spezialisierte Element erbt alle Eigenschaften, Attribute und Verhaltensweisen des allgemeinen Elements und konkretisiert diese.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Darstellung:&#039;&#039;&#039; Eine durchgehende Linie mit einer &#039;&#039;&#039;großen, leeren und geschlossenen Pfeilspitze&#039;&#039;&#039;.&lt;br /&gt;
* &#039;&#039;&#039;Pfeilrichtung:&#039;&#039;&#039; Der Pfeil zeigt immer &#039;&#039;&#039;vom spezifischen (Unterklasse) zum allgemeinen (Oberklasse)&#039;&#039;&#039; Element.&lt;br /&gt;
&lt;br /&gt;
==== Praxisbeispiel: Nutzerhierarchie ====&lt;br /&gt;
Ein &#039;&#039;Fahrer&#039;&#039; ist eine explizite Spezialisierung des allgemeinen &#039;&#039;Anwenders&#039;&#039;. Der Fahrer besitzt implizit jede Eigenschaft des Standard-Anwenders (wie Stammdaten: Vorname, Nachname, Username) und erbt dessen Fähigkeit, den Use Case &#039;&#039;Login durchführen&#039;&#039; aufzurufen, ohne dass dies redundant gezeichnet werden muss.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;svg width=&amp;quot;400&amp;quot; height=&amp;quot;320&amp;quot; viewBox=&amp;quot;0 0 400 320&amp;quot; xmlns=&amp;quot;http://www.w3.org/2000/svg&amp;quot; style=&amp;quot;background-color: transparent;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(40, 20)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Anwender&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(200, 45)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;ellipse cx=&amp;quot;80&amp;quot; cy=&amp;quot;35&amp;quot; rx=&amp;quot;70&amp;quot; ry=&amp;quot;30&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;80&amp;quot; y=&amp;quot;39&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;13&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Login durchführen&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
  &amp;lt;line x1=&amp;quot;100&amp;quot; y1=&amp;quot;80&amp;quot; x2=&amp;quot;200&amp;quot; y2=&amp;quot;80&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;70&amp;quot; y1=&amp;quot;195&amp;quot; x2=&amp;quot;70&amp;quot; y2=&amp;quot;165&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;polygon points=&amp;quot;70,150 60,165 80,165&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;85&amp;quot; y=&amp;quot;185&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;12&amp;quot; font-style=&amp;quot;italic&amp;quot; fill=&amp;quot;#555555&amp;quot;&amp;gt;Generalisierung&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;g transform=&amp;quot;translate(40, 180)&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;circle cx=&amp;quot;30&amp;quot; cy=&amp;quot;20&amp;quot; r=&amp;quot;15&amp;quot; fill=&amp;quot;#ffffff&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;35&amp;quot; x2=&amp;quot;30&amp;quot; y2=&amp;quot;75&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;10&amp;quot; y1=&amp;quot;50&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;50&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;10&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;line x1=&amp;quot;30&amp;quot; y1=&amp;quot;75&amp;quot; x2=&amp;quot;50&amp;quot; y2=&amp;quot;105&amp;quot; stroke=&amp;quot;#222222&amp;quot; stroke-width=&amp;quot;2&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;text x=&amp;quot;30&amp;quot; y=&amp;quot;125&amp;quot; font-family=&amp;quot;Arial, sans-serif&amp;quot; font-size=&amp;quot;14&amp;quot; font-weight=&amp;quot;bold&amp;quot; text-anchor=&amp;quot;middle&amp;quot; fill=&amp;quot;#222222&amp;quot;&amp;gt;Fahrer&amp;lt;/text&amp;gt;&lt;br /&gt;
  &amp;lt;/g&amp;gt;&lt;br /&gt;
&amp;lt;/svg&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassende Gegenüberstellung für die Klausur / Praxis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;width:100%; border:1px solid #aaa;&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#eeeeee;&amp;quot;&lt;br /&gt;
! Beziehungstyp !! Notation im Diagramm !! Semantik (Bedeutung) !! Typischer Anwendungsfall&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Assoziation&#039;&#039;&#039; || Durchgehende Linie || Kommunikationspfad || Verknüpft primäre Akteure mit Kernfunktionen.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Include&#039;&#039;&#039; || Gestrichelte Linie + Pfeil zum Ziel + &amp;lt;code&amp;gt;«include»&amp;lt;/code&amp;gt; || Zwingende Ausführung (100% Pflicht) || Auslagerung von wiederkehrenden Funktionen wie Login oder Validierung.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Extend&#039;&#039;&#039; || Gestrichelte Linie + Pfeil zur Basis + &amp;lt;code&amp;gt;«extend»&amp;lt;/code&amp;gt; || Optionale Ausführung (0-100% je nach Bedingung) || Modellierung von Ausnahmefällen, Fehlermeldungen oder optionalen Zusatzfunktionen.&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Generalisierung&#039;&#039;&#039; || Linie + geschlossene, leere Pfeilspitze || &amp;quot;Ist-ein&amp;quot;-Beziehung (Vererbung) || Abbildung von Benutzer-Rollenstrukturen (Rechtehierarchien).&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Modellierung]]&lt;br /&gt;
[[Kategorie:FI_I_SDM]]&lt;br /&gt;
[[Kategorie:AHR_I_Informatik LK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
	<entry>
		<id>https://wiki.flbk-hamm.de/index.php?title=Grenzkostenminimum&amp;diff=2860</id>
		<title>Grenzkostenminimum</title>
		<link rel="alternate" type="text/html" href="https://wiki.flbk-hamm.de/index.php?title=Grenzkostenminimum&amp;diff=2860"/>
		<updated>2026-05-21T08:51:22Z</updated>

		<summary type="html">&lt;p&gt;Flbkwikiadmin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Die [[Extremwert|Extremstelle]] zum Grenzkostenminimum gibt an, für welche Produktionsmenge der Kostenzuwachs minimal ist. Dieser Kostenzuwachs ist das Grenzkostenminimum.&lt;br /&gt;
&lt;br /&gt;
==Definition==&lt;br /&gt;
Es sei &amp;lt;math&amp;gt;K:\mathbb{D}_{ök} \rightarrow \mathbb{W}_K&amp;lt;/math&amp;gt; eine [[Kostenfunktion]], &amp;lt;math&amp;gt;K&#039;&amp;lt;/math&amp;gt; die dazugehörige [[Grenzkostenfunktion]] und &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; die [[Extremwert|Extremstelle]] zum Tiefpunkt von &amp;lt;math&amp;gt;K&#039;&amp;lt;/math&amp;gt;, dann nennen wir &amp;lt;math&amp;gt;K&#039;(x_0)&amp;lt;/math&amp;gt; &#039;&#039;&#039;Grenzkostenminimum&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&amp;lt;iframe width=&amp;quot;280&amp;quot; height=&amp;quot;157.5&amp;quot; src=&amp;quot;https://www.youtube.com/embed/zH8wOu7ienk?si=Vv8doT6rvfVEAUw-&amp;quot; title=&amp;quot;YouTube video player&amp;quot; frameborder=&amp;quot;0&amp;quot; allow=&amp;quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&amp;quot; allowfullscreen&amp;gt;&amp;lt;/iframe&amp;gt;&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Zusammenhang zwischen Grenzkostenminimum und [[Wendepunkt]]==&lt;br /&gt;
Ist &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; die [[Extremwert|Extremstelle]] zum Grenzkostenminimum &amp;lt;math&amp;gt;K&#039;(x_0)&amp;lt;/math&amp;gt; für eine Kostenfunktion &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;, dann ist &amp;lt;math&amp;gt;x_0&amp;lt;/math&amp;gt; eine [[Wendepunkt|Wendestelle]] von &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==Beispiele==&lt;br /&gt;
===Grenzkostenminimum berechnen===&lt;br /&gt;
Wir betrachten die Kostenfunktion &amp;lt;math&amp;gt;K(x)=3x^3-45x^2+300x+192&amp;lt;/math&amp;gt; mit &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; in ME und &amp;lt;math&amp;gt;K(x)&amp;lt;/math&amp;gt; in GE. Es gilt&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;(x)=9x^2-90x+300&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&#039;(x)=18x-90&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&#039;&#039;(x)=18&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1. Notwendige Bedingung:&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&#039;(x)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;18x-90=0~|~+90&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;18x=90~|~:18&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;x=5&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2. Hinreichende Bedingung:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&#039;&#039;(5)=18 &amp;gt; 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;&amp;lt;/math&amp;gt; hat bei &amp;lt;math&amp;gt;x=5&amp;lt;/math&amp;gt; ein Minimum.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3. Funktionswert berechnen:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;K&#039;(5)=9 \cdot 5^2-90 \cdot 5+300=75&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das Grenzkostenminimum beträgt 75 &amp;lt;math&amp;gt;\frac{GE}{ME}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===[[Wendepunkt]] der Kostenfunktion mit Hilfe des Grenzkostenminimums ermitteln===&lt;br /&gt;
Bei der Berechnung des Wendepunkts &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; von sind die Schritte 1 und 2 identisch zur oberen Rechnung. Der Funktionswert zum [[Wendepunkt]] ist jedoch &amp;lt;math&amp;gt;K(5)=3 \cdot 5^3-45 \cdot 5^2+300 \cdot 5+192=942&amp;lt;/math&amp;gt;. Der Wendepunkt von &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; ist also &amp;lt;math&amp;gt;W(5|942)&amp;lt;/math&amp;gt;. &amp;lt;math&amp;gt;K&amp;lt;/math&amp;gt; hat wegen Schritt 2 eine Rechts-Linkskrümmung bei &amp;lt;math&amp;gt;W&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Differentialrechnung]]&lt;br /&gt;
[[Kategorie:Gewinnanalyse]]&lt;br /&gt;
[[Kategorie:FHR_WuV_Mathe]]&lt;br /&gt;
[[Kategorie:AHR_WuV_Mathe_GK]]&lt;/div&gt;</summary>
		<author><name>Flbkwikiadmin</name></author>
	</entry>
</feed>