The key issues
Functional and object-oriented programming are styles of abstraction that address similar problems
- How do we partition a program?
- What information flows between the parts of the program?
- What do authors of one part have to know about other parts?
They come to very different conclusions