<?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: What is Abstraction?</title>
	<atom:link href="http://blog.stannard.net.au/2007/11/16/what-is-abstraction/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/</link>
	<description></description>
	<lastBuildDate>Sun, 08 Jan 2012 15:53:25 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: Kevan Stannard</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1582</link>
		<dc:creator>Kevan Stannard</dc:creator>
		<pubDate>Sat, 06 Aug 2011 02:11:18 +0000</pubDate>
		<guid isPermaLink="false">#comment-1582</guid>
		<description>Hi Suma, thanks for taking the time to comment.

RE: Easy to revise the implementation. Yes, it might be better to say &#039;Easy to *replace* the implementation&#039;. As you&#039;ve indicated, if something is abstracted well then the underlying implementation can often be replaced without changing the client code that uses it (as is the case with the QueryFileWriter)

RE: Same interface, different behaviour. What you&#039;ve said here is pretty much what I was trying to get at. The QueryFileWriter&#039;s interface is just a write(query,filename) method, so as long as an object has this available then the client will generally be indifferent to it&#039;s implementation. 

RE: Reduce Complexity. You are right, I think that in most cases the abstract approach would be more complex to write than the less abstract approach. Here I was really intending that it reduces complexity for the client.

Your last note raises a good point - should we use abstraction at all? I believe that in some cases it&#039;s not a good idea. If some area of code is unlikely to change then developing an abstraction may take more time and make the code unnecessarily complex.</description>
		<content:encoded><![CDATA[<p>Hi Suma, thanks for taking the time to comment.</p>
<p>RE: Easy to revise the implementation. Yes, it might be better to say &#8216;Easy to *replace* the implementation&#8217;. As you&#8217;ve indicated, if something is abstracted well then the underlying implementation can often be replaced without changing the client code that uses it (as is the case with the QueryFileWriter)</p>
<p>RE: Same interface, different behaviour. What you&#8217;ve said here is pretty much what I was trying to get at. The QueryFileWriter&#8217;s interface is just a write(query,filename) method, so as long as an object has this available then the client will generally be indifferent to it&#8217;s implementation. </p>
<p>RE: Reduce Complexity. You are right, I think that in most cases the abstract approach would be more complex to write than the less abstract approach. Here I was really intending that it reduces complexity for the client.</p>
<p>Your last note raises a good point &#8211; should we use abstraction at all? I believe that in some cases it&#8217;s not a good idea. If some area of code is unlikely to change then developing an abstraction may take more time and make the code unnecessarily complex.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Suma</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1580</link>
		<dc:creator>Suma</dc:creator>
		<pubDate>Fri, 05 Aug 2011 11:45:11 +0000</pubDate>
		<guid isPermaLink="false">#comment-1580</guid>
		<description>Reduce Complexity -&gt; In what way it reduces complexity?.  For me Tony&#039;s version is not complex at all.  The logic is in one place.  Client just happy to use this class without bothering how Tony has implemented it.
Jennifer&#039;s design has more classes.  It also has a factory. 

For me, this may not be the reason to use Abstraction at all.</description>
		<content:encoded><![CDATA[<p>Reduce Complexity -&gt; In what way it reduces complexity?.  For me Tony&#8217;s version is not complex at all.  The logic is in one place.  Client just happy to use this class without bothering how Tony has implemented it.<br />
Jennifer&#8217;s design has more classes.  It also has a factory. </p>
<p>For me, this may not be the reason to use Abstraction at all.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Suma</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1579</link>
		<dc:creator>Suma</dc:creator>
		<pubDate>Fri, 05 Aug 2011 11:29:20 +0000</pubDate>
		<guid isPermaLink="false">#comment-1579</guid>
		<description>Continuation from my previous post...

Same interface, different behaviour-&gt; Your explanation is not convincing enough to use abstraction.  But I think the real advantage with Jennifer design is,  if someone else writes a better version of the XmlQueryFileWriter, then it is easy to replace the Jennifers class with the better version.  This is offcourse assuming the new version also implements the QueryFileWriter.  In this case, the factory creates this new version and the client of the class is unaware that it is using the new version. Thereby eliminating the testing of the client class.</description>
		<content:encoded><![CDATA[<p>Continuation from my previous post&#8230;</p>
<p>Same interface, different behaviour-&gt; Your explanation is not convincing enough to use abstraction.  But I think the real advantage with Jennifer design is,  if someone else writes a better version of the XmlQueryFileWriter, then it is easy to replace the Jennifers class with the better version.  This is offcourse assuming the new version also implements the QueryFileWriter.  In this case, the factory creates this new version and the client of the class is unaware that it is using the new version. Thereby eliminating the testing of the client class.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Suma</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1578</link>
		<dc:creator>Suma</dc:creator>
		<pubDate>Fri, 05 Aug 2011 11:15:35 +0000</pubDate>
		<guid isPermaLink="false">#comment-1578</guid>
		<description>It is a nice explanation of the concept of abstraction.   But your explanation of the advantages of abstraction are not convincing and I don&#039;t agree with.  

&quot;Easy to revise the implementation&quot; -&gt; Your explanation doesn&#039;t convince me why it is easy to revise Jennifer&#039;s classes?.   I think it is easy revise  Tony&#039;s version too.  But there is one advantage with Jennifer.  When you revise Jennifer&#039;s class, you are limiting the testing to that particular class and you don&#039;t need to test all other functionality. But in Tony&#039;s class, though you are making changes to a specific function,  you will have to test all other functionality too.</description>
		<content:encoded><![CDATA[<p>It is a nice explanation of the concept of abstraction.   But your explanation of the advantages of abstraction are not convincing and I don&#8217;t agree with.  </p>
<p>&#8220;Easy to revise the implementation&#8221; -&gt; Your explanation doesn&#8217;t convince me why it is easy to revise Jennifer&#8217;s classes?.   I think it is easy revise  Tony&#8217;s version too.  But there is one advantage with Jennifer.  When you revise Jennifer&#8217;s class, you are limiting the testing to that particular class and you don&#8217;t need to test all other functionality. But in Tony&#8217;s class, though you are making changes to a specific function,  you will have to test all other functionality too.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: George</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1558</link>
		<dc:creator>George</dc:creator>
		<pubDate>Sat, 02 Jul 2011 14:49:53 +0000</pubDate>
		<guid isPermaLink="false">#comment-1558</guid>
		<description>You have given an excellent abstract about abstraction, which is crisp and clear. Thank you for posting this marvellous article.</description>
		<content:encoded><![CDATA[<p>You have given an excellent abstract about abstraction, which is crisp and clear. Thank you for posting this marvellous article.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SAM SHKRELI</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1547</link>
		<dc:creator>SAM SHKRELI</dc:creator>
		<pubDate>Fri, 13 May 2011 07:49:25 +0000</pubDate>
		<guid isPermaLink="false">#comment-1547</guid>
		<description>Thanks for sharing great facts.I had carried out a exploration around the challenge and learnt most people will agree with your level.</description>
		<content:encoded><![CDATA[<p>Thanks for sharing great facts.I had carried out a exploration around the challenge and learnt most people will agree with your level.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: avdhut</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1545</link>
		<dc:creator>avdhut</dc:creator>
		<pubDate>Wed, 20 Apr 2011 09:40:13 +0000</pubDate>
		<guid isPermaLink="false">#comment-1545</guid>
		<description>Hey this is really great article.</description>
		<content:encoded><![CDATA[<p>Hey this is really great article.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Karthikeyan K</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1212</link>
		<dc:creator>Karthikeyan K</dc:creator>
		<pubDate>Mon, 29 Nov 2010 10:43:24 +0000</pubDate>
		<guid isPermaLink="false">#comment-1212</guid>
		<description>This is the best article on abstraction that i have ever read.

Keep posting like this

thanks</description>
		<content:encoded><![CDATA[<p>This is the best article on abstraction that i have ever read.</p>
<p>Keep posting like this</p>
<p>thanks</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Renuka</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1110</link>
		<dc:creator>Renuka</dc:creator>
		<pubDate>Tue, 05 Oct 2010 04:43:13 +0000</pubDate>
		<guid isPermaLink="false">#comment-1110</guid>
		<description>Great post. It was very helpful. Thanks..</description>
		<content:encoded><![CDATA[<p>Great post. It was very helpful. Thanks..</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: visitor</title>
		<link>http://blog.stannard.net.au/2007/11/16/what-is-abstraction/comment-page-1/#comment-1093</link>
		<dc:creator>visitor</dc:creator>
		<pubDate>Tue, 24 Aug 2010 05:58:29 +0000</pubDate>
		<guid isPermaLink="false">#comment-1093</guid>
		<description>wow !!! awesome explanation. I was never clear about abstraction until i found this article. Great job. Thanks.</description>
		<content:encoded><![CDATA[<p>wow !!! awesome explanation. I was never clear about abstraction until i found this article. Great job. Thanks.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

