Шаг 20.
Унифицированный язык моделирования UML.
Инкапсуляция

    На этом шаге рассмотрим инкапсуляцию.

    Абстракция объекта должна предшествовать решению о ее реализации. Как только решение о реализации принято, оно должно рассматриваться как секрет абстракции и скрываться от большинства клиентов.

    Абстракция и инкапсуляция дополняют друг друга. В центре внимания абстракции находится наблюдаемое поведение объекта, а инкапсуляция сосредоточена на реализации, обеспечивающей заданное поведение. Как правило, инкапсуляция осуществляется с помощью сокрытия информации (а не просто сокрытия данных), т.е. утаивания всех несущественных деталей объекта.

    Инкапсуляция определяет четкие границы между разными абстракциями и позволяет, таким образом, провести ясные различия между понятиями. Рассмотрим, например, структуру растения. Для того чтобы изучить механизм фотосинтеза, оставаясь на верхнем уровне абстракции, можно игнорировать такие детали, как функции корней растения или химические свойства стенок клеток.

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

    Для того чтобы абстракция работала, ее реализация должна быть инкапсулирована. На практике это означает, что каждый класс должен состоять из двух частей: интерфейса и реализации. Интерфейс класса фиксирует лишь внешнее представление объекта, описывая абстракцию поведения всех объектов данного класса. Реализация класса содержит как представление абстракции, так и механизмы достижения требуемого поведения объекта. Интерфейс класса содержит все предположения, которые клиент может сформулировать относительно объектов класса, а реализация скрывает от других объектов все детали, не имеющие отношения к процессу — все, что не касается предположений клиента.

    Инкапсуляция — это процесс разделения элементов абстракции, определяющих ее структуру и поведение; инкапсуляция предназначена для изоляции контрактных обязательств абстракции от их реализации.

    На следующем шаге рассмотрим пример инкапсуляции.




Предыдущий шаг Содержание Следующий шаг