Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatica / Лекция_6.DOC
Скачиваний:
25
Добавлен:
12.03.2015
Размер:
41.47 Кб
Скачать
  1. Инкапсуляция

Понятие инкапсуляции означает, что в качестве единого целого, называемого объектом, рассматривается некоторая структура данных, определяющая его свойства или атрибуты и некоторая группа функций. Например, в Borlaud C ++ свойства объектов хранятся в структурах данных, а поведение объектов реализуется в виде функций, называемых «функции-члены». Это представляет программисту широкие возможности в области управления доступом к атрибутам объектов и их функциям-членам. Например, если какие-либо атрибуты и функции объекта объявлены приватными, то к ним нет доступа извне, за исключением функций, объявленных дружественными данному объекту. Атрибуты и функции, объявленные общими, доступны любому внешнему объекту, а к тем которые объявлены защищенными, доступ имеют лишь некоторые из остальных объектов. Это особенность ООП называется ограничением доступа; она позволяет делать данные «невидимыми», и за счет этого добиваться, чтобы все манипуляции с данными выполнялись только через общие функции-члены.

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

  1. Наследование

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

Аналогией может служить схема, которой пользуются зоологи и ботаники для классификации живых организмов (Рис. 2).

Типы

... ... Классы

... ... Отряд

...

Семейство

Рис. 2. Соотношение основных понятий

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

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

Программные объекты выстраиваются в иерархию примерно таким же образом. Например, объект высокого уровня - Окно. Любое окно на экране компьютера имеет определенное положение по координатам Х и У, а также высоту, ширину, стиль рамки и цвет фона. Если рассматривать меню, то можно отметить, что объект Меню обладает всеми свойствами объекта окна, но вдобавок имеет и ряд собственных - например, строки позиций меню и, возможно линейку прокрутки. Ниже Окна можно было бы поместить и Редактор, обладающий всеми характеристиками окна и, кроме того, способностью принимать символы с клавиатуры и манипулировать ими. Заметим, что как Меню так и Редактор можно с полным правом назвать Окнами, т.к. оба они имеют ширину, высоту и т.д., но при этом они различаются между собой по виду и способу функционирования.

Такая иерархия объектов может иметь много уровней. К примеру, при дальнейшей конкретизации объекта Редактор мы могли бы ввести нечто под названием Поле приглашений, которое наследует все черты Редактора, но ограничено одной строкой текста, перед которой стоит цепочка символов, образующих приглашение.

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

В нашем примере мы рассмотрели атрибуты Окна и его производных классов, но было сказано, что объекты наследуют и поведение.

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

Кроме того, все такие объекты будут двигаться по экрану одинаково, а это большое преимущество для пользователя: весь создаваемый пакет в целом станет более согласованным и лучше увязанным.

Соседние файлы в папке Informatica