Classes should be provided their dependencies.States essentially that if X is a subtype of Y, then X may be used in substitution of Y without concern for correctness or task performed.The concept states that classes should be open for extension but closed for modification.