Two Tool
- Data Abstraction
- “Design for change”(Modularize, changes on every piece will not affect rest of system):
- Organize program around object.
- Let objects decide how things are done.
- Hide information others don’t need.
Module
A set of methods that work together as a whole to perform some task or set of related tasks.
A module is said to be encapsulated if its implementation is completely hidden, and it can be accessed only through a documented interface.

Java is a great language for enforcing abstraction barriers with syntax.
So when we write tests, we usually just need to act as users, considering how to interact with interface and if they are logical.