Practical object-oriented design (Chapter 1 notes)
medium.com