<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Design</title>
        <link>http://nimblecoder.com/blog/category/15.aspx</link>
        <description>Design patterns</description>
        <language>en-US</language>
        <copyright>Ryan Van Slooten</copyright>
        <generator>Subtext Version 2.1.1.1</generator>
        <item>
            <title>Object-oriented focus compared to design structure</title>
            <link>http://nimblecoder.com/blog/archive/2007/11/28/object-oriented-focus-compared-to-design-structure.aspx</link>
            <description>&lt;p&gt;&lt;img height="240" alt="The Chevelle" src="http://static.flickr.com/2136/2069606547_44347b16d4.jpg" width="180" align="right" border="0" /&gt;I just read a blog complaining about the &lt;a href="http://blogs.techrepublic.com.com/programming-and-development/?p=553" target="_blank"&gt;systematic abuse of object-oriented programming&lt;/a&gt; and it reminds me of my complaint about the teaching of object-oriented programming. The typical object-oriented tutorial will define a vehicle class then create two or three derived classes such as a car, truck, and/or motorcycle (&lt;a href="http://www.faqs.org/docs/javap/c5/s4.html" target="_blank"&gt;example 1&lt;/a&gt; and &lt;a href="http://www.cs.usfca.edu/~parrt/course/652/lectures/polymorphism.html" target="_blank"&gt;example 2&lt;/a&gt;). This instruction is useful purely on the theoretical level but fails to actually teach the student how to use polymorphism, inheritance, and encapsulation.&lt;/p&gt; &lt;p&gt;The issue is far more than object-oriented programming, but rather code structure and layout and design patterns. The most useful exercises in learning how to structure software design in my opinion is the classic "undo" implementation and an automation interface. Unfortunately these in today's web-based focus, these real-world examples are normally only relevant to traditional applications. The key to the exercise is figuring out how to design the controller to store the actions and then undo the actions when necessary. It is a related exercise to design the controller to automate the actions. These exercises can be tricky (especially the first time the developer implements them) but they are not necessarily difficult. They are simply great learning experiences that should a part of the programming learning process.&lt;/p&gt;&lt;img src="http://nimblecoder.com/blog/aggbug/51.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Ryan Van Slooten</dc:creator>
            <guid>http://nimblecoder.com/blog/archive/2007/11/28/object-oriented-focus-compared-to-design-structure.aspx</guid>
            <pubDate>Wed, 28 Nov 2007 06:06:58 GMT</pubDate>
            <wfw:comment>http://nimblecoder.com/blog/comments/51.aspx</wfw:comment>
            <comments>http://nimblecoder.com/blog/archive/2007/11/28/object-oriented-focus-compared-to-design-structure.aspx#feedback</comments>
            <wfw:commentRss>http://nimblecoder.com/blog/comments/commentRss/51.aspx</wfw:commentRss>
            <trackback:ping>http://nimblecoder.com/blog/services/trackbacks/51.aspx</trackback:ping>
        </item>
    </channel>
</rss>