<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Global Nerdy &#187; object-oriented design</title>
	<atom:link href="http://www.globalnerdy.com/tag/object-oriented-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.globalnerdy.com</link>
	<description>Tech Evangelist Joey deVilla on Shopify, startups, software development, tech news and other nerdy stuff</description>
	<lastBuildDate>Thu, 09 Feb 2012 18:30:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Thursday&#8217;s &#8220;Ignite Your Coding&#8221; Webcast: &#8220;Composable Applications FTW&#8221; with Glenn Block</title>
		<link>http://www.globalnerdy.com/2010/03/09/thursdays-ignite-your-coding-webcast-composable-applications-ftw-with-glenn-block/</link>
		<comments>http://www.globalnerdy.com/2010/03/09/thursdays-ignite-your-coding-webcast-composable-applications-ftw-with-glenn-block/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 15:37:09 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Interviews]]></category>
		<category><![CDATA[People]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Glenn Block]]></category>
		<category><![CDATA[Ignite Your Coding]]></category>
		<category><![CDATA[object-oriented design]]></category>
		<category><![CDATA[object-oriented programming]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2010/03/09/thursdays-ignite-your-coding-webcast-composable-applications-ftw-with-glenn-block/</guid>
		<description><![CDATA[This Thursday, my fellow Developer Evangelist John Bristowe and I will host another live Ignite Your Coding webcast, where we’ll interview another high-profile software developer and pass along some of your questions. This week’s guest is Glenn Block, a Program Manager for .NET FX at Microsoft. Glenn’s one of the go-to guys on Prism, Unity, [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://msdn.microsoft.com/en-ca/ff182908.aspx"><img style="border-right-width: 0px; margin: 0px 15px 10px 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Ignite Your Coding" align="left" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2010/02/image1.png" /></a>This Thursday, my fellow Developer Evangelist <strong><a href="http://www.bristowe.com/">John Bristowe</a></strong> and I will host another live <strong><em><a href="http://msdn.microsoft.com/en-ca/ff182908.aspx">Ignite Your Coding</a></em></strong> webcast, where we’ll interview another high-profile software developer and pass along some of your questions.</p>
<p><strong>This week’s guest is </strong><a href="http://blogs.msdn.com/gblock/archive/2010/03/08/speaking-on-ignite-your-coding.aspx"><strong>Glenn Block</strong></a>, a Program Manager for .NET FX at Microsoft. Glenn’s one of the go-to guys on <a href="http://www.infoq.com/interviews/Prism-Glenn-Block">Prism</a>, <a href="http://msdn.microsoft.com/en-ca/library/dd203101.aspx">Unity</a>, <a href="http://www.codeplex.com/MEF">MEF</a> and ways of building maintainable and reconfigurable applications out of pieces that you can assemble and rearrange in general. We’ll talk with him about building composite applications, design patterns, the “alphabet soup” of SOLID, DI and IoC and whatever questions you ask him.</p>
<p><img style="border-right-width: 0px; margin: 0px 0px 10px 15px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="blocks.png" align="right" src="http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=MEF&amp;DownloadId=42484" />(We don’t have a photo of Glenn Block, but we <em>do </em>have the image to the right, which is the symbol for MEF – that’s <a href="http://www.codeplex.com/MEF">Managed Extensibility Framework</a> – which is one of Glenn’s projects. It’s a lucky coincidence that Glenn’s last name is also featured prominently in the image.)</p>
<h3>If You Want to Catch the Live Webcast on Thursday and/or Ask Glenn Questions…</h3>
<p>You’ll need:</p>
<ul>
<li>A Windows machine </li>
<li>Live Meeting (you can <a href="http://office.microsoft.com/en-ca/help/HA101733831033.aspx">get a free version of Live Meeting here</a>), which will let you see visuals, hear the audio and type in questions to ask Glenn </li>
<li>To <a href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032439322&amp;Culture=en-CA">register for the webcast (it’s free) here</a><strong></strong>, where you’ll get the link for the webcast </li>
<li>To catch the webcast on Thursday at 2:00 p.m.! </li>
</ul>
<h3>If You Want to Listen to a Recording of the Webcast Later…</h3>
<p>We’ll make it available in MP3 format soon. Watch this site for details!</p>
<h3>What’s <em>Ignite Your Coding</em> All About, Anyway?</h3>
<p><strong>It’s all about helping you, the software developer, find ways to stay on top of the technological, economic and social changes that affect you and your work every day.</strong> We got our hands on some of the biggest thinkers and doers in our field and asked them if they’d like to chat about the industry, how they got started, where they see the opportunities are, how they deal with change and how to be generally awesome. We got some big names from the Microsoft/.NET world, but we also went farther afield and got some people from beyond that world as well, because a different perspective is often helpful.</p>
</p>
<p class="alert"><a href="http://www.globalnerdy.com/2010/03/09/thursdays-ignite-your-coding-webcast-composable-applications-ftw-with-glenn-block/">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2010/03/09/thursdays-ignite-your-coding-webcast-composable-applications-ftw-with-glenn-block/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>DimeCast.Net&#8217;s SOLID Screencasts</title>
		<link>http://www.globalnerdy.com/2009/07/17/dimecast-nets-solid-screencasts/</link>
		<comments>http://www.globalnerdy.com/2009/07/17/dimecast-nets-solid-screencasts/#comments</comments>
		<pubDate>Fri, 17 Jul 2009 11:35:13 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[object-oriented design]]></category>
		<category><![CDATA[object-oriented programming]]></category>
		<category><![CDATA[OOD]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[screencasts]]></category>
		<category><![CDATA[SOLID]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/07/17/dimecast-nets-solid-screencasts/</guid>
		<description><![CDATA[This article also appears in Canadian Developer Connection. Following up on the previous article about the SOLID principles for object-oriented design, Steve Bohlen pointed me to a series of screencasts on DimeCasts.net covering each SOLID principle: S – Single Responsibility Principle O – Open-Closed Principle L – Liskov Substitution Principle I – Interface Segregation Principle [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/07/17/dimecast-net-s-solid-screencasts.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="Brick with the word &quot;SOLID&quot; beneath it" border="0" alt="Brick with the word &quot;SOLID&quot; beneath it" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/solid_brick.jpg" width="400" height="470" /> </p>
<p>Following up on <a href="http://www.globalnerdy.com/2009/07/15/the-solid-principles-explained-with-motivational-posters/">the previous article about the SOLID principles for object-oriented design</a>, <strong>Steve Bohlen pointed me to <a href="http://www.dimecasts.net/Casts/ByTag/SOLID%20Principle">a series of screencasts on DimeCasts.net covering each SOLID principle:</a></strong></p>
<ul>
<li><a href="http://www.dimecasts.net/Casts/CastDetails/88"><strong>S</strong> – Single Responsibility Principle</a> </li>
<li><a href="http://www.dimecasts.net/Casts/CastDetails/90"><strong>O</strong> – Open-Closed Principle</a> </li>
<li><a href="http://www.dimecasts.net/Casts/CastDetails/92"><strong>L</strong> – Liskov Substitution Principle</a> </li>
<li><a href="http://www.dimecasts.net/Casts/CastDetails/94"><strong>I</strong> – Interface Segregation Principle</a> </li>
<li><a href="http://www.dimecasts.net/Casts/CastDetails/96"><strong>D</strong> – Dependency Inversion Principle</a> </li>
<li><a href="http://www.dimecasts.net/Casts/CastDetails/99">Refactoring Dependency Inversion to use StructureMap</a> </li>
</ul>
<p>The screencasts are each about 12 minutes long, a perfect length for a “learning snack”.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/07/17/dimecast-nets-solid-screencasts/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The SOLID Principles, Explained with Motivational Posters</title>
		<link>http://www.globalnerdy.com/2009/07/15/the-solid-principles-explained-with-motivational-posters/</link>
		<comments>http://www.globalnerdy.com/2009/07/15/the-solid-principles-explained-with-motivational-posters/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 03:20:51 +0000</pubDate>
		<dc:creator>Joey deVilla</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[object-oriented design]]></category>
		<category><![CDATA[object-oriented programming]]></category>
		<category><![CDATA[OOD]]></category>
		<category><![CDATA[OOP]]></category>
		<category><![CDATA[SOLID]]></category>

		<guid isPermaLink="false">http://www.globalnerdy.com/2009/07/15/the-solid-principles-explained-with-motivational-posters/</guid>
		<description><![CDATA[This article also appears in Canadian Developer Connection. SOLID Seems to be Everywhere These Days Robert C. “Uncle Bob” Martin first gathered the object-oriented design principles that would eventually go under the acronym SOLID almost fifteen years ago, but the SOLID principles have been making the rounds lately. Before I talk about the SOLID principles, [...]]]></description>
			<content:encoded><![CDATA[<p></p><p class="alert"><a href="http://blogs.msdn.com/cdndevs/archive/2009/07/15/the-solid-principles-explained-with-motivational-posters.aspx">This article also appears in <em>Canadian Developer Connection</em>.</a></p>
<h3>SOLID Seems to be Everywhere These Days</h3>
<p><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="solid" border="0" alt="solid" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/solid_thumb.jpg" width="600" height="450" /></p>
<p><a href="http://en.wikipedia.org/wiki/Robert_Cecil_Martin"><strong>Robert C. “Uncle Bob” Martin</strong></a><strong> first gathered </strong><a href="http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod"><strong>the object-oriented design principles that would eventually go under the acronym <em>SOLID</em></strong></a><strong> almost fifteen years ago,</strong> but the SOLID principles have been making the rounds lately.</p>
<p>Before I talk about the SOLID principles, let me show you where the concept has been popping up in the past few months…</p>
<h4>SOLID at Conferences</h4>
<p>At the <a href="http://www.microsoft.com/events/teched2009/default.aspx">Microsoft TechEd conference in May</a>, Steve Smith gave <a href="http://stevesmithblog.com/blog/teched-2009-session-aftermath/">a presentation on applying the SOLID principles to developing applications with the ASP.NET MVC framework</a>. At around the same time, the <a href="http://www.geecon.org/">GeeCon</a> conference in Krakow, Poland had a couple of presentations on SOLID: <a href="http://www.slideshare.net/bbossola/geecon09-solid">Bruno Bossola gave a talk on the SOLID principles</a> and&#160; <a href="http://www.slideshare.net/leebrandt/solid-principles-in-the-wild">Lee Brandt gave a talk on spotting SOLID code “in the wild”</a>.</p>
<h4>SOLID at User Groups</h4>
<p>A number of user groups have had recently presentations on SOLID, such as: </p>
<ul>
<li><a href="http://www.developerfusion.com/event/13495/atl-altnet-may-26-solid-principles-the-10-commandments-of-programming/">ATL ALT.NET group (Atlanta</a>) </li>
<li><a href="http://www.lostechies.com/blogs/derickbailey/archive/2008/10/14/thanks-adnug-attendees-slides-and-code-available.aspx">Austin .NET User Group</a> </li>
<li><a href="http://nddnug.net/meetings/july-meeting-derick-bailey-on-the-s-o-l-i-d-design-principle/">North Dalls .NET User Group</a> </li>
<li><a href="http://pivotallabs.com/users/miked/blog/articles/876-solid-object-oriented-design-sandi-metz-">Pivotal Labs (San Francisco)</a> </li>
<li><a href="http://geekswithblogs.net/gpro/archive/2009/04/08/regina-events.aspx">Regina .NET User Group</a> </li>
<li><a href="http://stevesmithblog.com/blog/space-coast-asp-net-mvc-and-solid-principles-talk/">Space Coast .NET User Group</a> </li>
<li><a href="http://wi-ineta.org/DesktopDefault.aspx?tabid=58">Wisconsin .NET Users Group</a> </li>
<li>and there’ll be a talk on SOLID at the <a href="http://fuzzelogicsolutions.com/wordpress/index.php/2009/07/13/dev-g-round-3-solid-start/">Isle of Man Dev Group</a> tomorrow (the 17th) </li>
</ul>
<h4>Stack Overflow on SOLID</h4>
<p>SOLID was the topic of a recent argument that took place over a series of podcasts earlier this year: </p>
<ul>
<li>In <em>Stack Overflow</em> podcast 38, <a href="http://www.joelonsoftware.com/items/2009/01/31.html">Joel “Joel on Software / Stack Overflow” Spolsky expressed his doubts about the real-world usefulness of SOLID</a> (among other things he also considers to be stuff that <a href="http://www.joelonsoftware.com/articles/fog0000000018.html">“Architecture Astronauts”</a> like)… </li>
<li><a href="http://blog.objectmentor.com/articles/2009/02/06/on-open-letter-to-joel-spolsky-and-jeff-atwood">So naturally “Uncle Bob” responded…</a> </li>
<li>and then <a href="https://stackoverflow.fogbugz.com/default.asp?W29030">Joel and Jeff had him as a guest of <em>Stack Overflow</em> podcast 41</a> </li>
<li><a href="http://www.infoq.com/news/2009/02/spolsky-vs-uncle-bob">the SOLID scuffle was covered at <em>InfoQ</em>,</a> </li>
<li>and after that, <a href="http://hanselminutes.com/default.aspx?showID=168">he was a guest on <em>Hanselminutes</em> podcast 150.</a> </li>
</ul>
<h4>SOLID in Blogs</h4>
<p>SOLID has also been spotted in a number of blogs: </p>
<ul>
<li><a href="http://www.davesquared.net/2009/01/introduction-to-solid-principles-of-oo.html">Dave Tchepak blogged about SOLID in January</a> </li>
<li><a href="http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start">“Uncle Bob” himself posted an article on getting started with SOLID in February</a> </li>
<li><a href="http://www.lostechies.com/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx"><em>LosTechies.com</em> made SOLID their Topic of the Month in March</a> </li>
<li><a href="http://sandimetz.com/2009/03/solid-design-principles-dependency.html">Sandi Metz blogged about SOLID in March as well</a> </li>
<li><a href="http://unhandled-exceptions.com/blog/index.php/2009/07/13/why-i-dont-listen-to-the-stackoverflow-podcast-any-more/">Steve Bohlen seems to have sworn off <em>Stack Overflow’s</em> podcast as a result of the SOLID scuffle</a> </li>
</ul>
<h4>Will There be a Presentation on SOLID at TechDays Canada 2009?</h4>
<p><em>Mmmmmmmaybe…</em></p>
<h3>And Now, The Principles and Posters</h3>
<p><strong><a href="http://www.lostechies.com/blogs/derickbailey/archive/2009/02/11/solid-development-principles-in-motivational-pictures.aspx">The folks at LosTechies.com have created a series of Creative Commons-licenced posters that illustrate the SOLID principles.</a></strong> I took the posters, cleaned up the typography a little and posted them below under the same Creative Commons licence. Below each poster is an explanation of the corresponding SOLID principle. Enjoy!</p>
<h3>Single Responsibility Principle</h3>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/single_responsibility_principle.jpg"><font color="#990000"></font><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="single_responsibility_principle" border="0" alt="single_responsibility_principle" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/single_responsibility_principle_thumb.jpg" width="600" height="450" /></a></p>
<p><strong>The “S” in SOLID is for <em>Single Responsibility Principle</em>,</strong> which states that every object should have a single responsibility and that all of its services should be aligned with that responsibility. “Responsibility” is defined as “a reason to change”, and <em><a href="http://en.wikipedia.org/wiki/Single_responsibility_principle">Wikipedia does a pretty good job of explaining it</a></em>:</p>
<blockquote><p>As an example, consider a module that compiles and prints a report. Such a module can be changed for two reasons. First, the content of the report can change. Second, the format of the report can change. These two things change for very different causes; one substantive, and one cosmetic. The single responsibility principle says that these two aspects of the problem are really two separate responsibilities, and should therefore be in separate classes or modules. It would be a bad design to couple two things that change for different reasons at different times.</p>
</blockquote>
<h3>Open-Closed Principle</h3>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/openclosed_principle.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="open-closed_principle" border="0" alt="open-closed_principle" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/openclosed_principle_thumb.jpg" width="600" height="450" /></a></p>
<p></a><strong>The “O” in SOLID is for <em>Open-Closed Principle</em>,</strong> which states that software entities – such as classes, modules, functions and so on – should be open for extension but closed for modification. The idea is that it’s often better to make changes to things like classes by adding to or building on top of them (using mechanisms like subclassing or polymorphism) rather than modifying their code.</p>
<h3>Liskov Substitution Principle</h3>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/liskov_substitution_principle.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="liskov_substitution_principle" border="0" alt="liskov_substitution_principle" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/liskov_substitution_principle_thumb.jpg" width="600" height="450" /></a></p>
<p><strong>The “L” in SOLID is for <em>Liskov Substitution Principle</em>,</strong> which states that subclases should be substitutable for the classes from which they were derived. For example, if MySubclass is a subclass of MyClass, you should be able to replace MyClass with MySubclass without bunging up the program.</p>
<h3>Interface Segregation Principle</h3>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/interface_segregation_principle.jpg"><font color="#990000"></font><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="interface_segregation_principle" border="0" alt="interface_segregation_principle" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/interface_segregation_principle_thumb.jpg" width="600" height="450" /></a></p>
<p><strong>The “I” in SOLID is for <em>Interface Segregation Principle</em>,</strong> which states that clients should not be forced to depend on methods they don’t use. If a class exposes so many members that those members can be broken down into groups that serve different clients that don’t use members from the other groups, you should think about exposing those member groups as separate interfaces.</p>
<p><a href="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/dependency_inversion_principle.jpg"><img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="dependency_inversion_principle" border="0" alt="dependency_inversion_principle" src="http://www.globalnerdy.com/wordpress/wp-content/uploads/2009/07/dependency_inversion_principle_thumb.jpg" width="600" height="450" /></a></p>
<p><strong>The “D” in SOLID is for <em>Dependency Inversion Principle</em>,</strong> which states that high-level modules shouldn’t depend on low-level modules, but both should depend on shared abstractions. In addition, abstractions should not depend on details – instead, details should depend on abstractions.</p>
<h3>Bonus Reading Material on SOLID</h3>
<p>In addition to the <em>LosTechies.com</em> posters, they’ve also produced a book covering the SOLID principles in detail. Go and download <a href="http://cdn.cloudfiles.mosso.com/c82752/pablos_solid_ebook.pdf"><strong><em>Pablo’’s Solid Software Development</em></strong></a><strong><em>&#160;</em></strong>[1.4 MB PDF] now!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.globalnerdy.com/2009/07/15/the-solid-principles-explained-with-motivational-posters/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

