S - Single responsibility principle - Принцип единственной обязанности:
На каждый класс должна быть возложена одна-единственная обязанность.
O - Open/closed principle - Принцип открытости/закрытости:
Программные сущности должны быть открыты для расширения, но закрыты для изменения.