
F01134H
25.06.2017
21:14:22
lsp - допустим есть тип Птица и есть подтипы: орёл, цапля, воробей. Все птицы умеют летать и во всех местах программы вместо птицы можно будет подставить три эти реализации и всё будет работать.
Substitutability is a principle in object-oriented programming stating that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S (i.e. an object of type T may be substituted with any object of a subtype S) without altering any of the desirable properties of T (correctness, task performed, etc.). More formally, the Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called (strong) behavioral subtyping,
Но есть ещё пингвин, который летать не умеет но он ЯВЛЯЕТСЯ птицей, добавляем пингвина в нашу программу и опять говорим всем птицам лететь, все выполняют команду, пингвин бросает UnsupportedOperationException. Или пингвин должен летать, т.к. он ЯВЛЯЕТСЯ птицей или он не должен быть птицей. Пингвин это нарушение lsp, пример из реального мира: java collection framework.