<?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>Comments on: O abstrakcji klas i interfejsów</title>
	<atom:link href="http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/</link>
	<description>Pragmatyzm kontrolowany</description>
	<lastBuildDate>Wed, 28 Dec 2011 11:54:05 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
	<item>
		<title>By: Lojciec devBlog &#187; Blog Archive &#187; klasy abstrakcyjne a interfejsy</title>
		<link>http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/comment-page-1/#comment-44957</link>
		<dc:creator>Lojciec devBlog &#187; Blog Archive &#187; klasy abstrakcyjne a interfejsy</dc:creator>
		<pubDate>Sun, 07 Feb 2010 17:14:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/#comment-44957</guid>
		<description>[...] właściwie są klasa abstrakcyjna i interfejs. Pozwolę sobie tutaj zacytować fragment podobnego artykułu z blogu Splatch&#8217;a. (&#8230;) trzeba potrafić rozróżnić interfejs od klasy abstrakcyjnej, [...]</description>
		<content:encoded><![CDATA[<p>[...] właściwie są klasa abstrakcyjna i interfejs. Pozwolę sobie tutaj zacytować fragment podobnego artykułu z blogu Splatch&#8217;a. (&#8230;) trzeba potrafić rozróżnić interfejs od klasy abstrakcyjnej, [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: ActiveY</title>
		<link>http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/comment-page-1/#comment-5303</link>
		<dc:creator>ActiveY</dc:creator>
		<pubDate>Tue, 17 Apr 2007 10:03:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/#comment-5303</guid>
		<description>To ja sie przyczepie ...
Nie wymieniles kilku istotnych roli obu konstruktow. Jezeli chodzi o klasy abstrakcyjne:

Moga zachowywac sie zupelnie tak samo jak interfejsy - definiujac wylacznie metody abstrakcyjne - moga takze definiowac zwykle metody plubliczne, ktore to beda wykonywaly jakas logike operujac na implementacjach metod abstrakcyjnych.  Sytuacja: istnieje sobie klasa abstrakcyjna, definiujaca dwie metody: pierwsza metoda jest oznaczona jako &quot;abstract&quot; co powoduje, ze implementacja klasy bedzie pociagala za soba koniecznosc implementacji tejze metody. Druga metoda, publiczna, bedzie wykonywana bezposrednio przez mechanizmy naszej aplikacji/systemu/biblioteki. Ona to bedzie decydowala kiedy i w jaki sposob wykonac metode abstrakcyjna (jakie parametry do niej przekazac) - mozna dlugo wymieniac zastosowania i powody uzycia... Poslugiwanie sie tylko interfejsami niczego nie zalatwia, ba, czasem moze bardzo komplikowac zycie - interfejs moze byc zaimplementowany przez dowolna klase, mozna sie pogubic z separacja odpowiedzialnosci ... Ale co ja tam wiem ;)</description>
		<content:encoded><![CDATA[<p>To ja sie przyczepie &#8230;<br />
Nie wymieniles kilku istotnych roli obu konstruktow. Jezeli chodzi o klasy abstrakcyjne:</p>
<p>Moga zachowywac sie zupelnie tak samo jak interfejsy &#8211; definiujac wylacznie metody abstrakcyjne &#8211; moga takze definiowac zwykle metody plubliczne, ktore to beda wykonywaly jakas logike operujac na implementacjach metod abstrakcyjnych.  Sytuacja: istnieje sobie klasa abstrakcyjna, definiujaca dwie metody: pierwsza metoda jest oznaczona jako &#8220;abstract&#8221; co powoduje, ze implementacja klasy bedzie pociagala za soba koniecznosc implementacji tejze metody. Druga metoda, publiczna, bedzie wykonywana bezposrednio przez mechanizmy naszej aplikacji/systemu/biblioteki. Ona to bedzie decydowala kiedy i w jaki sposob wykonac metode abstrakcyjna (jakie parametry do niej przekazac) &#8211; mozna dlugo wymieniac zastosowania i powody uzycia&#8230; Poslugiwanie sie tylko interfejsami niczego nie zalatwia, ba, czasem moze bardzo komplikowac zycie &#8211; interfejs moze byc zaimplementowany przez dowolna klase, mozna sie pogubic z separacja odpowiedzialnosci &#8230; Ale co ja tam wiem ;)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: TeMPOraL</title>
		<link>http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/comment-page-1/#comment-5023</link>
		<dc:creator>TeMPOraL</dc:creator>
		<pubDate>Thu, 12 Apr 2007 09:48:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/#comment-5023</guid>
		<description>Bardzo dobry tekst. Ja od pewnego czasu praktycznie nie tworzę kodu bez interfejsów. Szczególną ich przydatność znalazłem przy pisaniu silnika gry w C++. Design oparty na interfejsach jest tu po prostu magiczny. Raz, pozwala zupełnie oddzielić silnik od platformy - najważniejsze podsystemy (grafika, VFS, dźwięk) implementuje się za interfejsem i nic, poza samą implementacją podsystemu (i punktem ich tworzenia) nie wie o tej implementacji. Dwa, można oddzielić kod silnika od kodu stawianego na niej gry - ponieważ silnik stanowi już zamknięte API, można w ogóle nie przejmować się systemem.

Sposób, w jaki takie podejście czyści i porządkuje kod jest wręcz zaskakujący. A debugowanie błędów to sama przyjemność.

Język C++ nie robi akurat żadnej różnicy semantycznej między klasą abstrakcyjną a interfejsem - to drugie jest tylko umownym terminem na czysto wirtualną klasę zawierającą jedynie funkcje publiczne. Niemniej różnice w użyciu są ogromne :)

Co ciekawe, interfejsy są dostępne nie tylko w językach tak wysokiego poziomu jak C++, Java, PHP. W jakimś artykule na GameDev.NET czytałem kiedyś stwierdzenie - to, że język nie jest Object-Oriented nie powoduje, że kod nie może być Object-Oriented. Osobiście widziałem próby fabrykowania funkcjonalności interfejsów w języku C w kodzie źródłowym gry Quake II - strukturka zawierająca tylko wskaźniki na funkcje (co w praktyce podrabiało mechanizm funkcji wirtualnych) była tworzona w jednym miejscu programu, a następnie przekazywana do innego (głównie między DLL&#039;ami a samym silnikiem).
Pozdrawiam!</description>
		<content:encoded><![CDATA[<p>Bardzo dobry tekst. Ja od pewnego czasu praktycznie nie tworzę kodu bez interfejsów. Szczególną ich przydatność znalazłem przy pisaniu silnika gry w C++. Design oparty na interfejsach jest tu po prostu magiczny. Raz, pozwala zupełnie oddzielić silnik od platformy &#8211; najważniejsze podsystemy (grafika, VFS, dźwięk) implementuje się za interfejsem i nic, poza samą implementacją podsystemu (i punktem ich tworzenia) nie wie o tej implementacji. Dwa, można oddzielić kod silnika od kodu stawianego na niej gry &#8211; ponieważ silnik stanowi już zamknięte <acronym title="Application Programming Interface">API</acronym>, można w ogóle nie przejmować się systemem.</p>
<p>Sposób, w jaki takie podejście czyści i porządkuje kod jest wręcz zaskakujący. A debugowanie błędów to sama przyjemność.</p>
<p>Język C++ nie robi akurat żadnej różnicy semantycznej między klasą abstrakcyjną a interfejsem &#8211; to drugie jest tylko umownym terminem na czysto wirtualną klasę zawierającą jedynie funkcje publiczne. Niemniej różnice w użyciu są ogromne :)</p>
<p>Co ciekawe, interfejsy są dostępne nie tylko w językach tak wysokiego poziomu jak C++, Java, <acronym title="Pre-Hypertext Processing">PHP</acronym>. W jakimś artykule na GameDev.NET czytałem kiedyś stwierdzenie &#8211; to, że język nie jest Object-Oriented nie powoduje, że kod nie może być Object-Oriented. Osobiście widziałem próby fabrykowania funkcjonalności interfejsów w języku C w kodzie źródłowym gry Quake II &#8211; strukturka zawierająca tylko wskaźniki na funkcje (co w praktyce podrabiało mechanizm funkcji wirtualnych) była tworzona w jednym miejscu programu, a następnie przekazywana do innego (głównie między DLL&#8217;ami a samym silnikiem).<br />
Pozdrawiam!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yacoos^</title>
		<link>http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/comment-page-1/#comment-4989</link>
		<dc:creator>Yacoos^</dc:creator>
		<pubDate>Wed, 11 Apr 2007 11:00:22 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/#comment-4989</guid>
		<description>Niewspominając juz o tym, ze jedna klasa moze wygodnie implementowac wiele interfejsow, a chcac zrealizowac to samo na klasach abstrakcyjnych trzeba tworzyc wielopoziomowe dziedziczenie.

Pozdro!</description>
		<content:encoded><![CDATA[<p>Niewspominając juz o tym, ze jedna klasa moze wygodnie implementowac wiele interfejsow, a chcac zrealizowac to samo na klasach abstrakcyjnych trzeba tworzyc wielopoziomowe dziedziczenie.</p>
<p>Pozdro!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: kwiateusz</title>
		<link>http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/comment-page-1/#comment-4794</link>
		<dc:creator>kwiateusz</dc:creator>
		<pubDate>Fri, 06 Apr 2007 10:31:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/#comment-4794</guid>
		<description>W kodzie na phpfi.com jest błąd w nazwie klasy po której dziedziczy Mysql ;) ale ogólnie dzięki za tą notkę, rozjaśniło mi bardziej sprawę różnicy klas abstrakcyjnych od interfejsów :)</description>
		<content:encoded><![CDATA[<p>W kodzie na phpfi.com jest błąd w nazwie klasy po której dziedziczy Mysql ;) ale ogólnie dzięki za tą notkę, rozjaśniło mi bardziej sprawę różnicy klas abstrakcyjnych od interfejsów :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: x^k</title>
		<link>http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/comment-page-1/#comment-4744</link>
		<dc:creator>x^k</dc:creator>
		<pubDate>Thu, 05 Apr 2007 06:28:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/#comment-4744</guid>
		<description>Splatch jasne :) ja wiem o tym, ale to nie zmienia faktu, że jednak ktoś tak zrobił m.in. w tej księdze. I to mnie meczy... Czyżby aż tak wielki błąd popełnili ? Postaram się odnaleźć e-booka, żeby nie pozostać gołosłownym :)

PS. Tytuł jednak pomyliłem... To chodziło o tą książkę: http://helion.pl/ksiazki/php5ob.htm</description>
		<content:encoded><![CDATA[<p>Splatch jasne :) ja wiem o tym, ale to nie zmienia faktu, że jednak ktoś tak zrobił m.in. w tej księdze. I to mnie meczy&#8230; Czyżby aż tak wielki błąd popełnili ? Postaram się odnaleźć e-booka, żeby nie pozostać gołosłownym :)</p>
<p>PS. Tytuł jednak pomyliłem&#8230; To chodziło o tą książkę: <a href="http://helion.pl/ksiazki/php5ob.htm" rel="nofollow">http://helion.pl/ksiazki/php5ob.htm</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Łukasz Dywicki</title>
		<link>http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/comment-page-1/#comment-4716</link>
		<dc:creator>Łukasz Dywicki</dc:creator>
		<pubDate>Wed, 04 Apr 2007 18:00:05 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/#comment-4716</guid>
		<description>Interfejs nie może pełnić roli klasy abstrakcyjnej a tym bardziej klasa abstrakcyjna roli interfejsu. To nie to samo! Być może język sprowadza to do podobnej postaci, ale nie zmienia to faktu iż zamienne stosowanie jednego i drugiego to pomyłka. Interfejs to definicja, klasa abstrakcyjna to początek implementacji i w taki sposób powinno to być wykorzystywane. Nie inny.

&lt;b&gt;@x^k&lt;/b&gt; - widzisz różnicę &lt;a href=&quot;http://phpfi.com/223327&quot; rel=&quot;nofollow&quot;&gt;http://phpfi.com/223327&lt;/a&gt;?</description>
		<content:encoded><![CDATA[<p>Interfejs nie może pełnić roli klasy abstrakcyjnej a tym bardziej klasa abstrakcyjna roli interfejsu. To nie to samo! Być może język sprowadza to do podobnej postaci, ale nie zmienia to faktu iż zamienne stosowanie jednego i drugiego to pomyłka. Interfejs to definicja, klasa abstrakcyjna to początek implementacji i w taki sposób powinno to być wykorzystywane. Nie inny.</p>
<p><b>@x^k</b> &#8211; widzisz różnicę <a href="http://phpfi.com/223327" rel="nofollow">http://phpfi.com/223327</a>?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: x^k</title>
		<link>http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/comment-page-1/#comment-4699</link>
		<dc:creator>x^k</dc:creator>
		<pubDate>Wed, 04 Apr 2007 11:23:10 +0000</pubDate>
		<guid isPermaLink="false">http://blog.dywicki.pl/2007/04/04/o-abstrakcji-klas-i-interfejsow/#comment-4699</guid>
		<description>Splatch, a co z takim rozwiązaniem ?  http://playme.2adv.pl/?f=inter.php

Już kiedyś chwilke o tym rozmawialiśmy... Nawet błąd przez php jest zwracany w sposób indentyczny. Tak jak by php traktowało interfejs jak klase abstrakcyjną :&#124; Coś w tym chyba musi być bo już spotkałem się (AFAIR PHP5: power programming, ale ręki nie dam sobie uciąć) z takim podejściem do tematu.

Zaczynam się zastanawiać czy czasami w PHP reprezentacja interfejsów za pomocą _takich_ klas abstrakcyjnych nie będzie w pewnych przypadkach wygodniejsza ?

...kawyyy :)</description>
		<content:encoded><![CDATA[<p>Splatch, a co z takim rozwiązaniem ?  <a href="http://playme.2adv.pl/?f=inter.php" rel="nofollow">http://playme.2adv.pl/?f=inter.php</a></p>
<p>Już kiedyś chwilke o tym rozmawialiśmy&#8230; Nawet błąd przez php jest zwracany w sposób indentyczny. Tak jak by php traktowało interfejs jak klase abstrakcyjną :| Coś w tym chyba musi być bo już spotkałem się (AFAIR PHP5: power programming, ale ręki nie dam sobie uciąć) z takim podejściem do tematu.</p>
<p>Zaczynam się zastanawiać czy czasami w <acronym title="Pre-Hypertext Processing">PHP</acronym> reprezentacja interfejsów za pomocą _takich_ klas abstrakcyjnych nie będzie w pewnych przypadkach wygodniejsza ?</p>
<p>&#8230;kawyyy :)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

