модификации. • Расширение производится без изменения исходного кода уже существующих модулей. • Если это невозможно, то вводится абстракция, которая позволит реализовать необходимое.
О2 типа Т, причем S является подтипом Т. Для всех программ Р, определенных на основе Т, поведение Р не меняется при замене О1 на О2 ». • Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом.