пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Замещение методов и принцип подстановки.

  1. Основная трудность при использовании замещения методов в качестве фундаментальной модели наследования— предположение, что подклассы являются подтипами. Вспомните, что основой принципа подстановки является то, что представители подкласса ведут себя во всех существенных отношениях подобно представителям родительского класса. Но если подклассы могут переопределять методы, то где гарантии того, что поведение дочернего класса будет иметь хоть какое-то отношение к родительскому классу?

    В только что упомянутом примере методы в обоих классах— Float и Number— были связаны только их концептуальными отношениями к абстрактному понятию «квадратный корень». Может возникнуть большой беспорядок, если подкласс поменяет поведение унаследованного метода слишком радикально— например, изменяя sqrt так, чтобы он вычислял логарифм.

    В языках программирования можно встретить несколько возможных путей решения конфликта между замещением методов и принципом подстановки:

    1. Просто игнорировать эту проблему и предоставить программисту заботиться о том, чтобы подклассы делали правильные вещи во всех важных ситуациях. Этот подход принят на вооружение во всех рассматриваемых нами языках программирования:Object Pascal, C++, Objective-C, Java и Smalltalk.

    2. В языке Eiffel [Meyer 1988a, Rist 1995], еще одном хорошо известном объектно-ориентированном языке, программист может присоединить к методу утверждения.Они являются логическими выражениями, которые проверяют состояние объекта во время исполнения, обеспечивая тем самым выполнение определенных условий. Утверждения автоматически наследуются подклассами в прежней форме, даже когда текущие методы переопределяются методами подкласса. Таким образом, утверждения могут использоваться для того, чтобы удостовериться, что дочерний класс ведет себя допустимым образом.

    3. Разделить понятия подкласса и подтипа, как это частично сделано в Java. Подклассы затем могут использовать семантику замещения в качестве техники реализации, при этом не обязательно подразумевая, что результирующий класс будет подтипом первоначального класса.

    4. Совершенно отбросить семантику замещения, а использовать уточнение. Эта возможность рассматривается в следующем разделе.

    Принцип подстановки утверждает, что если есть два класса A и B такие, что класс B является подклассом класса A (возможно, отстоя в иерархии на несколько ступеней), то мы должны иметь возможность подставить представителя класса B вместо представителя класса A в любой ситуации, причем без видимого эффекта 


19.06.2014; 15:02
хиты: 93
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь