Five basic principles of object-oriented design. Not the only five, but five which are, well, SOLID.
Single responsibility – A class should have only a single responsibility.
Open/closed – Open for extension; Closed to modification.
Liskov substitution – Objects can be replaced by instances of their sub-types without breakage or surprise.
Dependency inversion – Depend upon the abstraction. (Not upon the specific concretion.)