Today I attended a session on SOLID Object Oriented Principles at Indianapolis JUG(Indy JUG), the talk was by Matt Stine.
The talk was a very good aggregation of material available on SOLID from Bob Martin's(Uncle Bob) site, along with some "effective" examples thrown in from Effective Java Book. Matt was engaging throughout the almost 2 hour session, and I personally got a good deal of information. Just to summarize:
S - Single Responsibility Principle - An Object should have only one reason to change.
O - Open/Closed Principle - A software entity(module, library, routine) should be closed to any modification but be open to extension
L - Liskov Substitution Principle - Derived classes should be substitutable for the base classes
I - Interface Segregation Principle - Having more fine grained interfaces over fat interfaces
D - Dependency Inversion Principle - Depending on abstractions, not concrete implementations.