<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Kommentare zu: Abstrakte Klassen vs. Interfaces &#8211; 0:1</title>
	<atom:link href="http://www.phphatesme.com/blog/softwaretechnik/abstrakte-klassen-vs-interfaces-01/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.phphatesme.com/blog/softwaretechnik/abstrakte-klassen-vs-interfaces-01/</link>
	<description>PhpHatesMe, but that&#039;s ok!</description>
	<lastBuildDate>Mon, 06 Feb 2012 20:59:49 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Von: zvz</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/abstrakte-klassen-vs-interfaces-01/comment-page-1/#comment-64119</link>
		<dc:creator>zvz</dc:creator>
		<pubDate>Wed, 01 Jun 2011 15:55:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2766#comment-64119</guid>
		<description>Gibt es Performance-Unterschied zwischen Verwendung von abstrakten Klassen und Verlängerung normale Klasse?</description>
		<content:encoded><![CDATA[<p>Gibt es Performance-Unterschied zwischen Verwendung von abstrakten Klassen und Verlängerung normale Klasse?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Nick</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/abstrakte-klassen-vs-interfaces-01/comment-page-1/#comment-45637</link>
		<dc:creator>Nick</dc:creator>
		<pubDate>Tue, 06 Jul 2010 12:43:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2766#comment-45637</guid>
		<description>Halli Hallo,
bin gerade durch Zufall drüber gestolpert.
Danke für den Artikel. Ich muß mich dem Thomas anschließen, auch auf die Gefahr hinaus ein Haar zu spalten: Interfaces werden implementiert und nicht vererbt. 

Ich würde Jederzeit ein Interface einer abstrakten Klasse vorziehen, solange in der Klasse nur Methoden ohne Implementierung vorgesehen sind. Sobald es aber an Felder und vollständig implementierte Methoden geht, warum nicht die abstrakte Klasse verwenden? Sie hat durchaus ihren Anwendungsfall und diese Linie zu ziehen: wann verwende ich was ist das eigentlich Interessante.</description>
		<content:encoded><![CDATA[<p>Halli Hallo,<br />
bin gerade durch Zufall drüber gestolpert.<br />
Danke für den Artikel. Ich muß mich dem Thomas anschließen, auch auf die Gefahr hinaus ein Haar zu spalten: Interfaces werden implementiert und nicht vererbt. </p>
<p>Ich würde Jederzeit ein Interface einer abstrakten Klasse vorziehen, solange in der Klasse nur Methoden ohne Implementierung vorgesehen sind. Sobald es aber an Felder und vollständig implementierte Methoden geht, warum nicht die abstrakte Klasse verwenden? Sie hat durchaus ihren Anwendungsfall und diese Linie zu ziehen: wann verwende ich was ist das eigentlich Interessante.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Luis</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/abstrakte-klassen-vs-interfaces-01/comment-page-1/#comment-32971</link>
		<dc:creator>Luis</dc:creator>
		<pubDate>Thu, 25 Jun 2009 21:26:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2766#comment-32971</guid>
		<description>Hallo Nils und Thomas,
ich finde der Einwand von Thomas richtig. Prinzipiell sind Schnittstellen in weitere Sinne Verträge zur Benutzung von Modulen, Bibliotheken ... etc. Solche Schnittstellen gewährleisten die Unabhängigkeit der Software von der Umgebung, bestehen vorwiegend aus Spezifikationen und können auf viele verschiedene weisen implementiert werden (selbst ohne interfaces in den Sprachen, die nicht darüber verfügen). Nun manche Sprachen bieten das Konstrukt der interface, mit dem man solche Benutzungsverträge gut implementieren kann. 
 
Den Ergebnis hat Thomas bereits sehr schön ausgedruckt:

&quot;Wenn ich (als Entwickler) Klassen eines Moduls eines Anderen verwenden will/muss, schaue ich mir lediglich die Dokumentationen seiner Interfaces an. Wie seine konkreten Klassen, die ich letztendlich benutze, funktionieren, braucht mich nicht zu interessieren.&quot;</description>
		<content:encoded><![CDATA[<p>Hallo Nils und Thomas,<br />
ich finde der Einwand von Thomas richtig. Prinzipiell sind Schnittstellen in weitere Sinne Verträge zur Benutzung von Modulen, Bibliotheken &#8230; etc. Solche Schnittstellen gewährleisten die Unabhängigkeit der Software von der Umgebung, bestehen vorwiegend aus Spezifikationen und können auf viele verschiedene weisen implementiert werden (selbst ohne interfaces in den Sprachen, die nicht darüber verfügen). Nun manche Sprachen bieten das Konstrukt der interface, mit dem man solche Benutzungsverträge gut implementieren kann. </p>
<p>Den Ergebnis hat Thomas bereits sehr schön ausgedruckt:</p>
<p>&#8220;Wenn ich (als Entwickler) Klassen eines Moduls eines Anderen verwenden will/muss, schaue ich mir lediglich die Dokumentationen seiner Interfaces an. Wie seine konkreten Klassen, die ich letztendlich benutze, funktionieren, braucht mich nicht zu interessieren.&#8221;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: Thomas</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/abstrakte-klassen-vs-interfaces-01/comment-page-1/#comment-31569</link>
		<dc:creator>Thomas</dc:creator>
		<pubDate>Mon, 18 May 2009 13:56:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2766#comment-31569</guid>
		<description>Hallo Nils,

Du schreibst:

&quot;Interfaces haben die wunderbare Eigenschaft, dass hier “Mehrfachvererbung” geht, was bei Klassen nicht funktioniert.&quot; 

Ich finde, &quot;Mehrfachvererbung&quot; ist hier die so ziemlich unpassendste Formulierung. #7 und #11 treffen&#039;s wohl am Besten:

Erbt man von einer abstrakten Klasse, so hat die erbende Klasse (erstmal) automatisch alle Eigenschaften der abstrakten Klasse. Die Eigenschaften und Fähigkeiten können unter Umständen nicht einmal überschrieben werden.

Ein Interface hingegen gibt tatsächlich lediglich vor, dass eine implementierende Klasse die im Interface definierten Eigenschaften und Fähigkeiten besitzen muss. Hier sehe ich insbesondere bei großen Projekten einen weiteren Nutzen: 

Wenn ich (als Entwickler) Klassen eines Moduls eines Anderen verwenden will/muss, schaue ich mir lediglich die Dokumentationen seiner Interfaces an. Wie seine konkreten Klassen, die ich letztendlich benutze, funktionieren, braucht mich nicht zu interessieren.</description>
		<content:encoded><![CDATA[<p>Hallo Nils,</p>
<p>Du schreibst:</p>
<p>&#8220;Interfaces haben die wunderbare Eigenschaft, dass hier “Mehrfachvererbung” geht, was bei Klassen nicht funktioniert.&#8221; </p>
<p>Ich finde, &#8220;Mehrfachvererbung&#8221; ist hier die so ziemlich unpassendste Formulierung. #7 und #11 treffen&#8217;s wohl am Besten:</p>
<p>Erbt man von einer abstrakten Klasse, so hat die erbende Klasse (erstmal) automatisch alle Eigenschaften der abstrakten Klasse. Die Eigenschaften und Fähigkeiten können unter Umständen nicht einmal überschrieben werden.</p>
<p>Ein Interface hingegen gibt tatsächlich lediglich vor, dass eine implementierende Klasse die im Interface definierten Eigenschaften und Fähigkeiten besitzen muss. Hier sehe ich insbesondere bei großen Projekten einen weiteren Nutzen: </p>
<p>Wenn ich (als Entwickler) Klassen eines Moduls eines Anderen verwenden will/muss, schaue ich mir lediglich die Dokumentationen seiner Interfaces an. Wie seine konkreten Klassen, die ich letztendlich benutze, funktionieren, braucht mich nicht zu interessieren.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: rniederer</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/abstrakte-klassen-vs-interfaces-01/comment-page-1/#comment-31434</link>
		<dc:creator>rniederer</dc:creator>
		<pubDate>Sat, 16 May 2009 07:56:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2766#comment-31434</guid>
		<description>Nun, ich bin programmiere nun noch nicht sooo lange Objekt orientiert und in der Schule kann uns der Lehrer keine genauen Beisipiele geben...

-&gt; Kann mir jemand ein Beispiel aufzeigen, bei dem man abstrakte Klassen oder Interfaces braucht...</description>
		<content:encoded><![CDATA[<p>Nun, ich bin programmiere nun noch nicht sooo lange Objekt orientiert und in der Schule kann uns der Lehrer keine genauen Beisipiele geben&#8230;</p>
<p>-&gt; Kann mir jemand ein Beispiel aufzeigen, bei dem man abstrakte Klassen oder Interfaces braucht&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: straffi</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/abstrakte-klassen-vs-interfaces-01/comment-page-1/#comment-31397</link>
		<dc:creator>straffi</dc:creator>
		<pubDate>Fri, 15 May 2009 19:14:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2766#comment-31397</guid>
		<description>Moin Gemeinde,

Joe -
hats voll getroffen. So ähnlich siehts bei mir auch meistens aus.
Eine abstrakte Klasse, die 90% der Standardfunktionalität implementiert, und ein passendes Interface dazu, das die 
benutzenden Klassen von genau dieser Implementierung löst.

Das gibt dem Entwickler die Möglichkeiten, die Standardmethoden (geerbt von der abstrakten Klasse) anzupassen, oder eine komplett eigenständige Implementierung  - eventuell sogar mit einer neuen abstrakten Klasse - drüberzubügeln.

Johannes -
hat genau die Denkweise erkannt, die ich (leider) immer wieder -und gehäuft bei Sprachen die OOP erst im Nachhinein bekamen (PHP/VB/Delpi/Perl...) - antreffe.

Es gab halt irgendwann mal ein Tutorial über Klassen und eine Beispielimplementierung (MySQL oder Mail oder FTP...), die genau diese eine Möglichkeit der Vererbung nutzt.
Als Fazit bleibt dem Neuling das Gefühl, jetzt endlich auch mal dass Schlüsselwort &quot;class&quot; benutzt zu haben und somit ein OO-Design zu haben.
Ich nenne das PWO (Programming-With-Objects), anstatt OOP, da die Objekte im Endeffekt nur als erweiterte includes benutzt werden.

mfg
    straffi

denic-ergebnis diese posts:
    - Die Domain &quot;drueberzubuegeln.de&quot; ist nicht registriert
    - Die Domain &quot;programming-with-objects.de&quot; ist nicht registriert.</description>
		<content:encoded><![CDATA[<p>Moin Gemeinde,</p>
<p>Joe -<br />
hats voll getroffen. So ähnlich siehts bei mir auch meistens aus.<br />
Eine abstrakte Klasse, die 90% der Standardfunktionalität implementiert, und ein passendes Interface dazu, das die<br />
benutzenden Klassen von genau dieser Implementierung löst.</p>
<p>Das gibt dem Entwickler die Möglichkeiten, die Standardmethoden (geerbt von der abstrakten Klasse) anzupassen, oder eine komplett eigenständige Implementierung  &#8211; eventuell sogar mit einer neuen abstrakten Klasse &#8211; drüberzubügeln.</p>
<p>Johannes -<br />
hat genau die Denkweise erkannt, die ich (leider) immer wieder -und gehäuft bei Sprachen die OOP erst im Nachhinein bekamen (PHP/VB/Delpi/Perl&#8230;) &#8211; antreffe.</p>
<p>Es gab halt irgendwann mal ein Tutorial über Klassen und eine Beispielimplementierung (MySQL oder Mail oder <a href="http://FTP.." rel="nofollow">http://FTP..</a>.), die genau diese eine Möglichkeit der Vererbung nutzt.<br />
Als Fazit bleibt dem Neuling das Gefühl, jetzt endlich auch mal dass Schlüsselwort &#8220;class&#8221; benutzt zu haben und somit ein OO-Design zu haben.<br />
Ich nenne das PWO (Programming-With-Objects), anstatt OOP, da die Objekte im Endeffekt nur als erweiterte includes benutzt werden.</p>
<p>mfg<br />
    straffi</p>
<p>denic-ergebnis diese posts:<br />
    &#8211; Die Domain &#8220;drueberzubuegeln.de&#8221; ist nicht registriert<br />
    &#8211; Die Domain &#8220;programming-with-objects.de&#8221; ist nicht registriert.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Von: PHPDave</title>
		<link>http://www.phphatesme.com/blog/softwaretechnik/abstrakte-klassen-vs-interfaces-01/comment-page-1/#comment-31392</link>
		<dc:creator>PHPDave</dc:creator>
		<pubDate>Fri, 15 May 2009 18:57:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=2766#comment-31392</guid>
		<description>Ein 1:1 oder sogar 2:1 (wenn dein Artikel zu 1:1 geschrieben ist) dürfte aber die Implementierung von Attributen bei abstrakten Klassen liefern :) (was in Interfaces nicht möglich ist)</description>
		<content:encoded><![CDATA[<p>Ein 1:1 oder sogar 2:1 (wenn dein Artikel zu 1:1 geschrieben ist) dürfte aber die Implementierung von Attributen bei abstrakten Klassen liefern <img src='http://www.phphatesme.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  (was in Interfaces nicht möglich ist)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

