34. • Which web framework should I use?
• Why are there so many persistence API’s?
• Which is better: Scala or Clojure (or
Erlang)?
• How should I use design patterns?
• How do I build a good architecture?
56. Concurrent System
• Automated “Needs Service” Notification
System
• Thread 1: Update mileage and “ready for
service indicators”
• Thread 2: Harvest cars ready for service
and send notifications
70. Let’s do design!
• OO language (Java)
• We want to use the OCP
• We’ll create one or more inheritance
hierarchies!
• Well...
71. Inheritance
Hierarchies?
• What do good ones look like?
• Are there rules we can follow (best
practices even)?
• Are there traps we can fall in to?
72. The Liskov
Substitution Principle
Barbara Liskov
73. What is wanted here is something like the following
substitution property: If for each object o1 of type S there is
an object o2 of type T such that for all programs P defined
in terms of T, the behavior of P is unchanged when o1 is
substituted for o2, then S is a subtype of T.