LINUX.ORG.RU

История изменений

Исправление svyatozar, (текущая версия) :

Я привёл пример с квадратом только для того, чтобы показать что логика наследования в ООП весьма неочевидна и неоднозначна. И так понятно что квадрат не может наследовать прямоугольник.

И причина тому - тот факт что изменение ширины квадрата должно давать побочный эффект - изменение его длины, что недопустимо с точки зрения пользователя интерфейса «прямоугольник».

И это просто пример, на практике всё гораздо сложнее и вырвиглазнее: добавляют переменную «сторона» и методы, которые с ней работают. Переменные «длина» и «ширина» в квадрате уже ни на что не влияют. И так далее. Я насмотрелся такого безобразия в коде игры Unreal Tournament.

Исправление svyatozar, :

Я привёл пример с квадратом только для того, чтобы показать что логика наследования в ООП весьма неочевидна. И так понятно что квадрат не может наследовать прямоугольник.

И причина тому - тот факт что изменение ширины квадрата должно давать побочный эффект - изменение его длины, что недопустимо с точки зрения пользователя интерфейса «прямоугольник».

И это просто пример, на практике всё гораздо сложнее и вырвиглазнее: добавляют переменную «сторона» и методы, которые с ней работают. Переменные «длина» и «ширина» в квадрате уже ни на что не влияют. И так далее. Я насмотрелся такого безобразия в коде игры Unreal Tournament.

Исходная версия svyatozar, :

Я привёл пример с квадратом только для того, чтобы показать что логика наследования весьма не очевидна. И так понятно что квадрат не может наследовать прямоугольник.

И причина тому - тот факт что изменение ширины квадрата должно давать побочный эффект - изменение его длины, что недопустимо с точки зрения пользователя интерфейса «прямоугольник».

И это просто пример, на практике всё гораздо сложнее и вырвиглазнее: добавляют переменную «сторона» и методы, которые с ней работают. Переменные «длина» и «ширина» в квадрате уже ни на что не влияют. И так далее. Я насмотрелся такого безобразия в коде игры Unreal Tournament.