Встречается на собеседованиях • сегодня

Приведи пример использования Liskov Substitution Principle

LSP гласит, что подтипы должны быть заменяемыми для своих базовых типов. В Node.js это означает, что дочерние классы должны корректно работать там, где ожидается родительский класс.

Пример нарушения:

javascript
class Rectangle {
  constructor(width, height) {
    this.width = width;
    this.height = height;
  }
  setWidth(width) { this.width = width; }
  setHeight(height) { this.height = height; }
}

class Square extends Rectangle {
setWidth(width) {
this.width = width;
this.height = width; // Нарушение LSP - изменяет и высоту
}
setHeight(height) {
this.height = height;
this.width = height; // Нарушение LSP - изменяет и ширину
}
}

function testRectangle(rectangle) {
rectangle.setWidth(5);
rectangle.setHeight(4);
console.assert(rectangle.width * rectangle.height === 20); // Упадет для Square
}

text

Исправленный вариант - не наследовать Square от Rectangle, а создать общий интерфейс:
```javascript
class Shape {
  area() { throw new Error('Not implemented'); }
}

class Rectangle extends Shape {
  // ... 
}

class Square extends Shape {
  // ...
}
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы