For those of you who are interested in the .NET platform but are already familiar with OOP principles, you can skip the next few blog entries. For those of you coming into coding pretty much cold (or perhaps from effectively scripting objects in VB, VBA or similar without any OOP context), you'll see some introductory terminology wheeled out over the coming week or two. In these entries I'll be introducing (from waaaaaaay up at 50,000 feet) the basic building blocks of object oriented programming:
- The mission statement of object orientation
- Simple vs Complex Types
- Structs vs Classes vs Interfaces
- An introduction to classes, properties, member variables and methods.
- Static, Abstract and Virtual modifiers and their meanings
- Object/variable scope - both declarative and implicit
- Constructors and the "new" keyword
- Destructors, IDispose and the finalize() method
- Inheritance, Polymorphism and Operator Overloading
I'll be trying to deliver this material in a fairly succinct and accessible fashion, so the hard core OOP crowd should excuse me if I'm not 100% complete with the textbook definitions. My focus on this site is going to be on application, not theory. However, in a few weeks' time I will be talking about some more advanced OOP principles and patterns. Once again, the focus will be on application, not theory, but for people coming out of the infrastructure world like myself, they're useful concepts to grok. I'll definitely be including links to more advanced content as I go.
You might be wondering "Where's the C# and .NET coding at?" - well... understanding the terminology and concepts I'm going to spell out in the next week is going to make it easier for you to understand material delivered further in subsequent entries. For example, learning how to declare a property in a C# class makes much more sense when you know what a property and a class are, and why you'd bother to build classes rather than simply writing procedural code. As I get into more advanced patterns and practices, I'll probably revisit some of the earlier examples and refactor them with the more advanced principles in mind.
I'm hoping to be able to write 1-2 blog entries a day for the next week, so check back regularly!
In the meantime: Code well, code often!