<?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[Schnittstelle]]></title><description><![CDATA[<p>Was ist denn eine Schnittstelle bezüglich Klassen?</p>
<p>Mir gefallen die Definitionen im Internet nicht.</p>
<p>Was bedeutet das konkret? Ich brauch keine präzise technische Erklärung.<br />
Mir reicht ein grundsätzliches Verständnis von dem Begriff.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/322651/schnittstelle</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 19:40:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/322651.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Jan 2014 10:26:24 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Schnittstelle on Thu, 02 Jan 2014 10:26:24 GMT]]></title><description><![CDATA[<p>Was ist denn eine Schnittstelle bezüglich Klassen?</p>
<p>Mir gefallen die Definitionen im Internet nicht.</p>
<p>Was bedeutet das konkret? Ich brauch keine präzise technische Erklärung.<br />
Mir reicht ein grundsätzliches Verständnis von dem Begriff.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374554</guid><dc:creator><![CDATA[Ravend]]></dc:creator><pubDate>Thu, 02 Jan 2014 10:26:24 GMT</pubDate></item><item><title><![CDATA[Reply to Schnittstelle on Thu, 02 Jan 2014 10:37:45 GMT]]></title><description><![CDATA[<p>Hallo Ravend,</p>
<p>Ravend schrieb:</p>
<blockquote>
<p>Was ist denn eine Schnittstelle bezüglich Klassen?</p>
</blockquote>
<p>Ich versehe darunter Klassenfunktionen, die dir erlauben auf das Innenleben einer Klasse zuzugreifen, da diese z.B. <code>private</code> sind, siehe folgendes Minimalbeispiel:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

class foo
{
	public:
		foo():_i(0){}
		void set(int i){ _i = i; }
		void show(){ std::cout &lt;&lt; _i &lt;&lt; std::endl; }
		int get(){ return _i; }
	private:
		int _i;
};

int main()
{
	foo f;
	f.show();

	f.set(2);

	f.show();

	int a = f.get();

	std::cout &lt;&lt; a &lt;&lt; std::endl;

	return 0;
}
</code></pre>
<p>An <code>_i</code> kommst du nicht heran, aber dafür hast du die <code>public</code> Funktionen - also Schnittstellen - <code>set</code> , <code>show</code> und <code>get</code> , um <code>_i</code> bearbeiten zu können.</p>
<p>Gruß,<br />
-- Klaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374558</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374558</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Thu, 02 Jan 2014 10:37:45 GMT</pubDate></item><item><title><![CDATA[Reply to Schnittstelle on Thu, 02 Jan 2014 10:45:40 GMT]]></title><description><![CDATA[<p>für mich sind schnittstellen (abstrakte) basisklassen, die beschreiben WAS die klassen die von ihr erben anbieten müssen aber nicht bestimmen WIE sie das tun müssen.</p>
<p>beispiel aus sfml:<br />
sf::drawable ist eine schnittstelle, sie bestimmt dass alle klassen, die von ihr erben, darstellbar sein müssen, sagt aber nicht wie sie es sein müssen.</p>
<p>anders als in gewissen anderen sprachen bieten schnittstellen in c++ auch default-implementierungen mit sich.</p>
<p>beispiel aus der stl:<br />
std::numpunct bietet einige methoden an die man auch tatsächlich benutzen kann, dennoch ist es eine schnittstelle. möchte man nun seine eigene numpunct-facette machen, kann man einfach die betroffenen virtuellen methoden überschreiben.</p>
<p><a href="http://de.wikipedia.org/wiki/Schnittstelle_(Objektorientierung)" rel="nofollow">http://de.wikipedia.org/wiki/Schnittstelle_(Objektorientierung)</a></p>
<p>edit: link gefixt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374560</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374560</guid><dc:creator><![CDATA[Fytch]]></dc:creator><pubDate>Thu, 02 Jan 2014 10:45:40 GMT</pubDate></item><item><title><![CDATA[Reply to Schnittstelle on Fri, 03 Jan 2014 01:11:37 GMT]]></title><description><![CDATA[<p>Ravend schrieb:</p>
<blockquote>
<p>Was ist denn eine Schnittstelle bezüglich Klassen?</p>
</blockquote>
<p>Das Wort Schnittstelle wird - ebenso wie das Englische Wort Interface - in der Programmierung für zumindest zwei unterschiedliche Dinge verwendet.<br />
(Drei wenn man Dinge wie RS232 der USB Schnittstellen mitzählt.)</p>
<p>Bedeutung #1:</p>
<p>Die Schnittstelle einer Klasse ist die Summe ihrer public und protected Member.<br />
Und zwar ohne die &quot;Implementierungsdetails&quot;, aber inklusive Semantik, Preconditions/Postconditions etc.</p>
<p>Die Schnittstelle einer Klasse setzt sich aus allen Möglichkeiten zusammen, die man &quot;von aussen&quot; hat um mit der Klasse zu arbeiten. Also alles was man mit einer Klasse machen kann, ohne den Code der Klasse zu verändern. Sozusagen die &quot;Grenze&quot; zwischen der Klasse und dem Rest der Welt.</p>
<p>Vererbung oder das Keyword &quot;interface&quot; (Java, C#, ...) müssen dabei nicht im Spiel sein. Falls doch, dann schliesst die Schnittstelle einer Kindklasse natürlich die Schnittstelle der Basisklasse mit ein, sofern public oder protected abgeleitet wird.</p>
<p>Ein konkretes Beispiel: Die Schnittstelle (#1) der Klasse <code>System.Collections.ArrayList</code> (.NET Framework) umfasst die Interfaces (#2) <code>IList</code> , <code>ICollection</code> , <code>IEnumerable</code> und <code>ICloneable</code> sowie zusätzlich alle public und protected Member der Klasse die nicht Teil eines dieser Interfaces (#2) sind.<br />
Die Schnittstelle (#1) von <code>ArrayList</code> umfasst z.B. auch die Information dass Sort mit durchschnittlich O(N log N) arbeitet, worst case aber O(N^2) brauchen kann. Der zu verwendende Algorithmus ist nicht definiert, und daher auch nicht Teil der Schnittstelle. (Wäre der Algorithmus allerdings dokumentiert, dann wäre diese Information auch Teil der Schnittstelle.)</p>
<p>Diese Variante ist natürlich nicht auf Klassen beschränkt. Man kann genau so über die Schnittstelle einer ganzen Library sprechen, eines Moduls - manchmal ist sogar nur eine einzige Funktion z.B. einer DLL gemeint.</p>
<p>Bedeutung #2:</p>
<p>Siehe Wikipedia-Link von asfdlol, das Keyword &quot;interface&quot; der Sprachen Java oder C#, COM Interfaces etc.</p>
<p>Wenn man &quot;die Schnittstelle der Klasse X&quot; sagt/schreibt, meint man üblicherweise #1.<br />
Wenn man #2 meint sagt man eher nur &quot;die Schnittstelle Y&quot; - die Schnittstellen im Sinne von #2 &quot;gehören&quot; ja nicht einer Klasse, sondern sind eigenständige Konstrukte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374611</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Fri, 03 Jan 2014 01:11:37 GMT</pubDate></item><item><title><![CDATA[Reply to Schnittstelle on Thu, 02 Jan 2014 14:58:55 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/27708">@Klaus82</a><br />
Deine Erklärung ist mir viel zu konkret. Über private Membervariablen macht man sich dabei eher keine Gedanken.<br />
Das Wort Schnittstelle ist viel abstrakter. Und umfasst vor allem auch wirklich alles was man definierterweise mit einer Klasse machen kann/darf.</p>
<p>Teil der Schnittstelle deiner Beispielklasse sind also z.B. auch der Konsturktor sowie die drei implizit definierten Memberfunktionen (Destruktor, Copy-Konstruktor und Assignment-Operator).</p>
<p>Und eben das was asfdlol (und ich) auch schon geschrieben haben: es geht darum was die Funktionen machen, aber nicht wie sie es genau machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374615</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Thu, 02 Jan 2014 14:58:55 GMT</pubDate></item><item><title><![CDATA[Reply to Schnittstelle on Thu, 02 Jan 2014 17:34:14 GMT]]></title><description><![CDATA[<p>@hustbear,</p>
<p>hustbaer schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/27708">@Klaus82</a><br />
Deine Erklärung ist mir viel zu konkret. Über private Membervariablen macht man sich dabei eher keine Gedanken.<br />
Das Wort Schnittstelle ist viel abstrakter. Und umfasst vor allem auch wirklich alles was man definierterweise mit einer Klasse machen kann/darf.</p>
</blockquote>
<p>Dass ich mal <em>viel-zu-konkret</em> als Kritikpunkt an den Kopf geworfen kriege finde ich interessant. <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>Aber mal im Ernst, ich habe extra auf meine bescheidenen C++ Kenntnisse hingewiesen und schätze, dass Ravend auch erst gerade die Grundlagen lernt, wie z.B. seine <a href="http://www.c-plusplus.net/forum/p2374254#2374254" rel="nofollow">Frage hier</a> zeigt.</p>
<p>So lehne ich mich mal aus dem Fenster und behaupte, dass deine und asfdlols Antwort viel weitreichender sind als meine, sie Ravend allerdings nichts nützen.</p>
<p>Gruß,<br />
-- Klaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2374647</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2374647</guid><dc:creator><![CDATA[Klaus82]]></dc:creator><pubDate>Thu, 02 Jan 2014 17:34:14 GMT</pubDate></item></channel></rss>