Object-oriented languages have opinions about how best to arrange code. These opinions lead OO to naturally offer certain _affordances_. Just as round doorknobs expect to be grasped and rotated, OO expects messages, polymorphism, loose-coupling and factories. The key to creating intuitive and maintainable OO applications is to understand and embrace these built-in affordances.
![Polly Want A Message (DeconstructConf)](https://cdn-ak-scissors.b.st-hatena.com/image/square/5a05b539f1dded8e28e1cc63be9199517a0da697/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2F0596bd641e1647bca3f73c95fa6e7596%2Fslide_0.jpg%3F10069193)