<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Kommunikation von Klassen]]></title><description><![CDATA[<p>Hallo,</p>
<p>eine klasse Messdaten möchte Daten an die Klasse Diagramm senden.</p>
<p>Wie würden die Klassen ausschauen, welche Methoden haben sie ?</p>
<pre><code class="language-cpp">class Diagramm
{

private:

Messdaten* ptr;

}

class Messdaten
{

private:

int messungen[10];
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/270375/kommunikation-von-klassen</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 17:34:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/270375.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 Jul 2010 13:02:51 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 13:03:17 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>eine klasse Messdaten möchte Daten an die Klasse Diagramm senden.</p>
<p>Wie würden die Klassen ausschauen, welche Methoden haben sie ?</p>
<pre><code class="language-cpp">class Diagramm
{

private:

Messdaten* ptr;

}

class Messdaten
{

private:

int messungen[10];
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1924626</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924626</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 11 Jul 2010 13:03:17 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 13:07:15 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct Diagramm
{
    void doIt() { Diagramm d; d.gimmeDaData(ptr); }

private:
    Messdaten* ptr;
};

struct Messdaten
{
    void gimmeDaData(Messdaten*);

private:
    int messungen[10];
};
</code></pre>
<p>Im Ernst: Was willst du hören?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924628</guid><dc:creator><![CDATA[Michael E.]]></dc:creator><pubDate>Sun, 11 Jul 2010 13:07:15 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 13:14:32 GMT]]></title><description><![CDATA[<p>kann man schon so weit gehn , wenn sich die messdaten geändert haben,<br />
und da der Zeiger ja drauf zeigt, wurde dadurch eine Nachricht an<br />
Diagramm von Messdaten gesendet ? drückt das ein Kommunikationsdiagramm aus ?</p>
<p>du wolltest bestimmt folgendes oder.</p>
<pre><code class="language-cpp">struct Diagramm 
{ 
    void doIt() { Messdaten d; d.gimmeDaData(ptr); } 

private: 
    Messdaten* ptr; 
}; 

struct Messdaten 
{ 
    void gimmeDaData(Messdaten*); 

private: 
    int messungen[10]; 
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1924629</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924629</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 11 Jul 2010 13:14:32 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 14:02:55 GMT]]></title><description><![CDATA[<p>Ich glaub du suchst etwas wie Listener...</p>
<p><a href="http://de.wikipedia.org/wiki/Listener" rel="nofollow">http://de.wikipedia.org/wiki/Listener</a></p>
<p>Nach dem Schema (ungetestet):</p>
<pre><code class="language-cpp">class MeasuringData;

class MeasuringDataListener{
public:
	virtual ~MeasuringDataListener(){}
	virtual void measuringDataChanged(const MeasuringData&amp;, int pos, double value) = 0;

};

class MeasuringData{

public:
	void setData(int pos, double value){
		for(std::vector&lt;MeasuringDataListener&gt;::const_iterator = listeners.begin(); it!=listeners.end(); ++it){
			(*it)-&gt;measuringDataChanged(*this, poa, value);
		}
	}

	void addListener(MeasunringDataListener&amp; listener){
		listeners.push_back(&amp;listsner);
	}

private:
	std::vector&lt;MeasuringDataListener*&gt; listeners;
};

class Diagramm : public MeasuringDataListener{
public:
	Diagramm(MeasuringData&amp; data){
		data.addListener(*this);
	}

	virtual void measuringDataChanged(const MeasuringData&amp;, int pos, double value){
		// update diagramm
	}

}
</code></pre>
<p>EDIT: Naja... Man sollte den Listener spätestens im Destruktor wieder entfernen... (zusätzliches Feld auf MeasuringData notwendig)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924638</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924638</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 11 Jul 2010 14:02:55 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 14:26:53 GMT]]></title><description><![CDATA[<p>aha.</p>
<p>noch eine Frage.</p>
<p>Was ist design by contract.</p>
<p>Zwischen wem wird hier ein Vertrag geschlossen ?<br />
Den Entwicklern ? Den Klassen ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924646</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 11 Jul 2010 14:26:53 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 14:34:18 GMT]]></title><description><![CDATA[<p><a href="http://de.wikipedia.org/wiki/Design_by_contract" rel="nofollow">http://de.wikipedia.org/wiki/Design_by_contract</a></p>
<p>Grob gesagt:<br />
Pre/Postconditions und Invarianten genau definieren.</p>
<p>Was das mit einem Vertrag zu tun hat: Als Benutzer einer Schnittstelle ist man verpflichtet die Precondition einzuhalten und kriegt dafür die Postcondition garantiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924648</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 11 Jul 2010 14:34:18 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 14:56:53 GMT]]></title><description><![CDATA[<p>Soll das heissen man prüft falsche Eingaben nicht und verlässt sich<br />
auf den Benutzer ?</p>
<p>Noch eine fRage zum unified process.<br />
ER wird doch in Unternehmen heutzutage verwendet. Da der Wasserfall bei großen<br />
Projekten zu statisch ist. Es muss ja jede Phase abgeschlossen sein.</p>
<p>Was bedeuten diese humps also Hügel im Diagramm. Was bedeutet die Y-Achse<br />
also z.B. IMplementation , test, deploment. DAs hab ich doch in der Phase<br />
inception gar nicht dort werden doch erst nur die Anforderungen erarbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924655</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924655</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 11 Jul 2010 14:56:53 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 15:07:58 GMT]]></title><description><![CDATA[<p>blurry333 schrieb:</p>
<blockquote>
<p>Soll das heissen man prüft falsche Eingaben nicht und verlässt sich<br />
auf den Benutzer ?</p>
</blockquote>
<p>Ganz einfach:<br />
Wenn du deine Bedingungen einhälst, garantiert dir dein Programm ein gewisses<br />
Verhalten.</p>
<p>Dabei ist der Benutzer der Entwickler!!! Nicht der Endbenutzer!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924660</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924660</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 11 Jul 2010 15:07:58 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 15:12:14 GMT]]></title><description><![CDATA[<p>Ganz einfaches Beispiel:</p>
<p>Du hast eine Methode, die dir alle Primzahlen bis zu einer Zahl ausgibt.</p>
<p>Diese verlangt von dir, dass die übergebene Zahl größer als 0 ist.</p>
<p>Wenn der Entwickler jetzt eine Zahl dafür von der Tastatur einliest, muss<br />
er vorher selber checken, damit die Bedingung erfüllt ist.</p>
<p>Falls die Logik des Programm es allerdings verbietet, dass diese Zahl<br />
(sie kommt jetzt woanders her) &lt;= 0 ist, dann braucht er sich um nichts zu kümmern.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924662</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924662</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 11 Jul 2010 15:12:14 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 15:24:36 GMT]]></title><description><![CDATA[<p>Um mal CSpille in (Eiffel)-Code zu demonstrieren<br />
(Kommentare kommen nach '--' )</p>
<pre><code>my_function (in: INTEGER) : INTEGER
 local                              -- lokale Variablen definieren
   temp: INTEGER
 require                            -- hier fängt der Block mit Preconditions an
   in_greater_zero: in &gt;= 0         -- in muss grösser 0 sein, ansonsten gibts einen Runtime Fehler, wo das Tag 'in_greater_zero' angezeigt wird
 do
   -- do some stuff
   Result := temp                   -- Result enthält den Rückgabewert
 ensure                             -- Block mit Postconditions
   greater_10: Result &gt; 10          -- Rückgabewert muss Grösser 10 sein, ansonsten wieder Runtime Fehler.
 end
</code></pre>
<p>Der Vertrag (Contract) kommt hier zwischen dem Anwender der Funktion und dem Programmierer der Funktion zustande. Wenn der Anwender einen Integer Grösser/Gleich 0 übergibt, dann kann er sich darauf verlassen, dass die Funktion korrekt funktioniert und der Rückgabewert Grösser 0 ist.</p>
<p>Eiffel ermöglicht es 1:1 solche Contracts in Code abzubilden, was auch kein Wunder ist, denn der Entwickler von &quot;Contract by Design&quot; ist auch der Gründer dieser Sprache.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924666</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 11 Jul 2010 15:24:36 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 15:58:16 GMT]]></title><description><![CDATA[<p>Noch eine fRage zum unified process.<br />
ER wird doch in Unternehmen heutzutage verwendet. Da der Wasserfall bei großen<br />
Projekten zu statisch ist. Es muss ja jede Phase abgeschlossen sein.</p>
<p>Was bedeuten diese humps also Hügel im Diagramm. Was bedeutet die Y-Achse<br />
also z.B. IMplementation , test, deploment. DAs hab ich doch in der Phase<br />
inception gar nicht dort werden doch erst nur die Anforderungen erarbeitet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924676</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924676</guid><dc:creator><![CDATA[blurry333]]></dc:creator><pubDate>Sun, 11 Jul 2010 15:58:16 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 16:00:52 GMT]]></title><description><![CDATA[<p>Schöner Beispielcode!</p>
<p>drakon schrieb:</p>
<blockquote>
<pre><code>ensure                             -- Block mit Postconditions
   greater_10: Result &gt; 10          -- Rückgabewert muss Grösser 10 sein, ansonsten wieder Runtime Fehler.
</code></pre>
</blockquote>
<p>Als zusätzliche Anmerkung an blurry333:<br />
wobei in C++ Runtime-Fehler i.d.R. != Exception...<br />
Wird in Eiffel ne Exception geworfen? (Ich hab 0 Plan von Eiffel)<br />
Nicht Erfüllen der Preconditions kann z. B.</p>
<ul>
<li>falsches Ergebnis</li>
<li>Endlosschleife</li>
<li>undefiniertes Verhalten (z. B. Programmabsturz)</li>
</ul>
<p>zur Folge haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924677</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Sun, 11 Jul 2010 16:00:52 GMT</pubDate></item><item><title><![CDATA[Reply to Kommunikation von Klassen on Sun, 11 Jul 2010 16:07:47 GMT]]></title><description><![CDATA[<p>In Eiffel gibt es so etwas, wie Exceptions nicht. Das würde komplett gegen die Mentalität von Eiffel/Meyers gehen. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Ein verletzen einer Condition hat einen Laufzeitfehler zur Folge (ausser mal stellt die naütrlich aus), wie bei C/C++ Programmen assertions (also mit <code>assert</code> ).</p>
<p>Wenn die Conditions aber ausgeschaltet sind (das kann man sehr selektiv machen mit EiffelStudio), dann tauchen natürlich die genannten Sachen auf.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1924684</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1924684</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 11 Jul 2010 16:07:47 GMT</pubDate></item></channel></rss>