Tuesday, November 21, 2006 at 6:00pm CST
Guest Speaker
Doug Turnure is a Developer Evangelist with Microsoft Corporation, focusing on NET technologies. He serves numerous enterprise clients as a developer, author, trainer, and occasional conference speaker. His specialties include NET internals, memory management, and distributed communication, although he enjoys anything pertaining to .NET. Prior to joining Microsoft, he spent five years as an instructor and course author with DevelopMentor and Aggelos, Inc. His primary topics of instruction include VB.NET, C#, and ASP.NET. Doug is currently based inAtlanta, Georgia.
Meeting Topic
So often, I talk to developers who know how to do interfaces and inheritance in .NET, yet don't seem to have consistent rules around when to use which. I could probably term this as extensible OO design.
It's been my experience that when you get into the trenches with developers, there is a huge disconnect between the theoretical tenets of OO (encapsulation, abstraction, polymorphism, and inheritance) and the day to day coding of applications. Developers can usually spout definitions for each of these concepts, but when you ask them to point out where they do this in code, there is often confusion. Furthermore, if you try to ask a developer whether an interface or base class is best suited for a particular boundary, the answers can be all over the map.
There really is a reason to choose one over the other. If you want to hear the bloody details, come to the talk. If not, the quick and rough answer is this: Interfaces are better for those places where extensibility is the highest requirement. Inheritance is better for those places where reusability is the highest requirement.
You can screw up your software by doing too much of either one, or by neglecting either one. I've heard people say that inheritance is bad. If misapplied, I agree. However, inheritance is very good when applied properly. Can you imagine how much code you would need to write to display a simple Winforms window, if you couldn't inherit from the base class?
On the other hand, the corporate graveyards of America are littered with the bytes of non-extensible software, where interfaces could have easily saved the day.
There is much to be said for understanding how to balance the use of interfaces and inheritance.
Please RSVP Matthew Hughes (mat_hues@hotmail.com) and let him know if you're coming.
Meeting Location
SouthEast Technical (SET) Solutions
273 Azalea Rd.
Office Park Three
Suite 200
Mobile, Alabama 36609