Glossary
Abstraction
An interface or base type that hides implementation details.
Cohesion
How strongly related the responsibilities of a module are. High cohesion is preferred.
Coupling
The degree of dependency between modules. Lower coupling is preferred.
Composition
Building behavior by combining objects rather than inheriting.
Dependency injection
Supplying dependencies from the outside rather than creating them inside a class.
Encapsulation
Hiding internal state and exposing controlled access through methods.
Polymorphism
Using a common interface to work with different implementations.