Теоретические сведения для студентов специальностей «Экономика и организация производства», страница 7

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

Что должно представляться в программе в виде объектов? Окончательный ответ на этот вопрос может дать только ваше воображение, однако приведем несколько примеров, которые могут оказаться полезными [4]:

♦        Физические объекты.

·  Автомобили при моделировании уличного движения.

·  Схемные элементы при моделировании цепи электрического тока.

·  Страны при создании экономической модели.

·  Самолеты при моделировании диспетчерской системы.

♦        Элементы интерфейса.

·  Окна.

·  Меню.

·  Графические объекты (линии, прямоугольники, круги).

·  Мышь, клавиатура, дисковые устройства, принтеры.

♦        Структуры данных.

·  Массивы.

·  Стеки.

·  Связанные списки.

·  Бинарные деревья.

♦        Группы людей.

·  Сотрудники.

·  Студенты.

·  Покупатели.

·  Продавцы.

♦        Хранилища данных.

·  Описи инвентаря.

·  Списки сотрудников.

·  Словари.

·  Географические координаты городов мира.

♦        Пользовательские типы данных.

·  Время.

·  Величины углов.

·  Комплексные числа.

·  Точки на плоскости.

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

АБСТРАКТНЫЕ ТИПЫ ДАННЫХ

Концепция абстрактных типов и абстрактных типов дaнных является ключевой в проrраммировании. Абстракция подразумевает разделение и независимое рассмотрение интерфейса и реализации.

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

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

Различают процедурную абстракцию (procedиral abstraction) и абстракцию данных (data abstraction).

Процедурная абстракция требует раздельноrо рассмотренияния цели процедуры и внутренней реализации процедуры.

Под процедурой здесь понимается некоторая проrраммная единица, например, функция в языках С/С++.

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

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

Абстракция данных предполаrает определение абстрактных типов данных (АТД) - новых типов данных, введенных пользователем.

АТД  -  это совокупность данных вместе с множеством операций, которые можно выполнять над этими данными.