Объектно-ориентированные технологии проектирования прикладных программных систем




Обобщение и наследование - часть 3


  • расширение: новая операция расширяет унаследованную операцию, учитывая влияние атрибутов подкласса;
  • ограничение: новая операция ограничивается выполнением лишь части действий унаследованной операции, используя специфику объектов подкласса;
  • оптимизация: использование специфики объектов подкласса позволяет упростить и ускорить соответствующий метод (например, переопределяя операцию max класса IntegerSet в его подклассе SortedIntegerSet, мы можем резко упростить ее, используя специфические свойства упорядоченных множеств);
  • удобство.

    Целесообразно придерживаться следующих семантических правил наследования:

    • все операции-запросы (операции, которые используют значения атрибутов, но не изменяют их) должны наследоваться всеми подклассами;
    • все операции, изменяющие значения атрибутов, должны наследоваться во всех их расширениях;
    • все операции, изменяющие значения ограниченных атрибутов, или атрибутов, определяющих зависимости, должны блокироваться во всех их расширениях (например, операция размер_по_оси_x естественна для класса эллипс, но должна быть заблокирована (заменена пустой операцией) в его подклассе круг);
    • операции не следует переопределять коренным образом; все методы, реализующие одну и ту же операцию, должны осуществлять сходное преобразование атрибутов;
    • унаследованные операции можно уточнять, добавляя дополнительные действия.

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

    | |

    Comments:

    Copyright ©




    Содержание  Назад  Вперед