Most of my object oriented (OO) knowledge up to this point has been purely theoretical. A few years ago I decided to go to grad school to get a double masters in Information Systems and Library Science. Unfortunately I haven't completed it yet because I found a FT job, but I fully intend to complete my degree.
I signed up for my first quarter of classes late and ended up taking an advanced class called 'Information Systems Analysis & Design'. From the description, I could not tell what the class was about. It turned out to be a UML (Unified Modeling Language) modeling class. This was the textbook:
| Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development by Craig Larman
When I first looked at the book I had no idea what UML or Patterns were and no idea why neither of the pictures on the cover are not sailboats. The class and the text assumed I had basic knowledge of OO and Java. Needless to say, the text was difficult to get through sometimes.
One evening as I was feeling particuarly lost with the reading assignment, I came upon p. 237.
I had to do a double-take! Did my homework really just tell me to drink beer? Yes, yes it did. Best. Class. Ever.
Well, to make a long story short, things started to click and my final project was to model a shopping cart for a music store. Seeing as I've re-written my spagetti code shopping cart/CMS system around 4 times by this point, I passed the class with flying colors.
But what did I really learn from the class? I came out with a basic understanding of what an object is and how to make pretty pictures to represent them in UML. I also am now a big fan of the Use Case and iterative design.
What I didn't have any idea about was how to apply these diagrams to ColdFusion. I was not yet using CFCs so the connection between components and objects wasn't there. I also had no idea what a pattern was. Which I find funny seeing how the book title has the word 'Patterns' in it. That would come later, and is the subject of a future blog post.