Стек, ограниченный стек и свойство подстановки Лискова - PullRequest
2 голосов
/ 01 июня 2011

Может ли структура данных ограниченного стека (стек с верхним пределом) быть реализована как подтип традиционного стека без нарушения свойства подстановки Лискова?

Вместо ограниченного может использоваться обычный стекстек, но ограниченный стек может использоваться только вместо обычного стека, если он имеет достаточно большой предел.Правильно ли я согласен с этой идеей?

Является ли свойство liskov обратно истинным?

Спасибо.

Ответы [ 3 ]

1 голос
/ 01 июня 2011

Принцип замены Лискова определяется как

Пусть q (x) - свойство, доказуемое для объектов x типа T. Тогда q (y) должно быть истинным для объектов y типа S, где Sявляется подтипом T.

Допустим, T является типом Stack, а S является подтипом T типа BoundedStack.

Теперь давайте определим q (x) какемкость стека х.

Если x является экземпляром T, то емкость бесконечна / безгранична.Если x является экземпляром S, то это не выполняется, поскольку емкость теперь ограничена.

Следовательно, принцип не выполняется.

0 голосов
/ 13 сентября 2011

Если бы действительно существовала такая вещь, как неограниченный стек, ограниченный стек не был бы его подтипом.С другой стороны, семантика «обычного» стека, вероятно, больше похожа на «Если количество выдвигаемых объектов не превышает некоторого неопределенного, непознаваемого и произвольно изменяемого предела, нажмите на объект, иначе произойдет сбой в некоторых произвольных и неопределенныхмода «.Если обычный стек предоставляет свойство Count и обещает, что любой стек, чей счет равен 1000 или меньше, сможет принять другой элемент, то ограниченный стек емкостью 1000 или больше будет полностью заменен «обычным».Если он не дает какого-то конкретного обещания емкости, ограниченный стек с любой емкостью будет заменяем.

0 голосов
/ 01 июня 2011

очевидно, что ограниченный стек создаст новый тип исключения для метода push. Так что не соответствует LSP.

...