Здавалка
Главная | Обратная связь

Лекция 3. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД В РАЗРАБОТКЕ



ПРОГРАММ

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

Объектно-ориентированное программирование (ООП) родилось и

получило широкое распространение ввиду осознания трех важнейших

проблем программирования= Достоинства ООП.

1. Развитие языков и методов программирования не успевало за

растущими с большей скоростью потребностями в программах. Единственным

методом ускорения разработки ПО оставался метод многократного

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

2. Второй проблемой являлась необходимость упрощения

сопровождения и модификации разработанных систем, которые требуют не

меньших усилий, чем собственно разработка. Требовалось радикально

изменить способ построения программных систем, чтобы локальные

модификации не могли нарушать работоспособность всей системы и было бы

легче производить изменения поведения системы.

3. Далеко не все задачи поддаются алгоритмическому описанию и

алгоритмической декомпозиции, как того требует структурное

программирование. Требовалось приблизить структуру программ к структуре

решаемых задач и сократить семантический разрыв между структурой

решаемой задачи и структурой программы (т.е. понятия, лежащие в основе

языка задачи и средств ее решения различны).

ОСНОВНЫЕ ПОНЯТИЯ ООП

ООП - результат естественной эволюции более ранних методологий программирования: оно более

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

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

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

интеллектом (теория фреймов) позволили лучше осознать механизмы абстракции, развитие философии и теории познания, концепция образцов и шаблонов теории архитектуры и строительства).

Семь основных признаков характеризуют объектно-ориентировaнную

технологию программирования:

1. ОБЪЕКТЫ. Базовым понятием в объектном подходе является понятие КЛАССА объектов - такого множества предметов реального мира, что все предметы в нем имеют одни и те же характеристики (данные) и правила поведения (методы обработки данных). Тогда ОБЪЕКТ - это типичный

2. ИНКАПСУЛЯЦИЯ. Данные скомбинированы и объединены с процедурами и функциями, которые манипулируют этими данными, в единую целостную структуру для получения нового типа данных - объекта.

3. НАСЛЕДОВАНИЕ. Это определение объекта и затем использование его для построения иерархии производных объектов, причем каждый производный объект ("потомок") наследует доступ к коду и данным всех своих "прародителей". Создать новые классы можно наследуя уже существующие (иерархическое наследование)

4. ОГРАНИЧЕНИЕ ДОСТУПА. При наследовании свойств базовых классов часть методов и характеристик можно спрятать внутри реализации класса, так что обратиться к этим характеристикам и методам можно будет только из методов данного или производных от него классов.

5. ПОЛИМОРФИЗМ. Некоторому действию придается одно имя, которое совместно используется объектами всей иерархии, причем каждый объект иерархии реализует это действие своим собственным, подходящим

для него, образом.

6. АБСТРАГИРОВАНИЕ - создание абстрактных классов, имеющих не реализованные методы, которые используют в качестве базовых классов для образования других, имеющих тот же набор методов, но уже

переопределенных.

7. УСТОЙЧИВОСТЬ. Под устойчивостью понимают продолжительное время существования объектов в системе. Это свойство реализуется восновном в языках объектно-ориентированных баз данных.

В ООП предпринимается попытка смоделировать компоненты проблемы

в едином целом, а не в качестве отдельных логических абстракций. Все

элементы, которые наполняют нашу жизнь, от тостеров и цветов, до

махровых полотенец, имеют свойства (данные или атрибуты) и типы

поведения (правила). Свойства тостера могут включать требуемое для его

работы напряжение, количество ломтиков, которое он зажаривает,

расположение кнопок на нем, цвет тостера, его марку и т.п. Типы его

поведения включают закладку ломтиков хлеба, поджаривание ломтиков

хлеба и выталкивание поджаренных кусочков.

Если мы хотим написать программу, имитирующую функционирование

кухни, то самым лучшим способом это сделать было бы моделирование

различных кухонных приспособлений в качестве объектов, чьи свойства и

типы поведения были бы закодированы в поля данных и правила. Так в

действительности и было сделано: самый первый объектно-ориентировaнный

язык (Simula-67) был создан для написания подобных прогрaмм-имитaторов.

Первым «настоящим» объектно-ориентированным языком

программирования принято считать Смолтолк, разработанный в лаборатории

компании Ксерокс. Затем появились и другие ОО языки (Си++, Паскаль,

CLOS, Эйффель, Java и др.).

В качестве критерия применимости ООП можно использовать

количество выделенных абстрактных типов с общими свойствами таких, что

эта общность может быть использована в механизме наследования свойств.

Однако поиск общих свойств среди типов далеко не тривиальный процесс.

Он требует от разработчика системного склада мышления. Во время

проектирования системы общность должна быть все время перед глазами,

как при спецификации классов, так и при анализе того, обладают ли классы

общими свойствами. Если общих свойств не находится, абстракция данных

теряет смысл. Снижается эффективность и применения ООП.

 

Лекция 3. ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД В РАЗРАБОТКЕ

ПРОГРАММ

2. Объекты.

Предположим, нам надо описать яблоко в терминах программирования.

Надо думать как художник. Он видит

яблоко и рисует его. Рисунок яблока - это не яблоко, а символ, графическая

модель яблока на плоской поверхности. Но он не абстрагирован до

нескольких чисел, каждое из которых стоит отдельно и независимо в кaком-

либо сегменте данных. Его компоненты связаны в единое целое,

воспринимаемое нашим мозгом как яблоко.

Объекты моделируют свойства и поведение компонентов мира, в

котором мы живем. Они являются и конечной абстракцией данных. Объекты

связывают в единое целое свои свойства и поведение и обладают

спецификой целого. Яблоко может быть разломлено, но после этого оно

перестает быть яблоком. Отношения частей к целому и к другим частям

более ясны, когда все связано вместе в одной оболочке. Это называется

инкапсуляцией и представляет собой очень важное явление. Объекты -

части мира, они же и конечные абстракции в ООП. Объектно-

ориентированный подход предлагает описывать реальность в виде

взаимодействия объектов (например, «клиент Иванов», «банкомат

Агробанка», «счет № 1111», «корабль Геркулес», «автомобиль Петрова»).

Гради Буч дает такое определение: «объект – это что-то, с чем можно

оперировать. У объекта есть состояние, поведение и возможность отличить

его от других объектов». Якобсон пишет: « Объект – это сущность, способная сохранять свое

состояние (информацию) и обеспечивающая набор операций для проверки и

изменения этого состояния».

Можно сказать, что объект – это модель или абстракция реальной

сущности в программной системе. Предмет моделирования при построении

объекта может быть различным. Можно выделить несколько типов

абстракций, используемых при построении объекта:

абстракция понятия: объект – это модель какого-то понятия

предметной области;

абстракция действия: объект – это набор операций для

выполнения какой-либо функции;

абстракция виртуальной машины: объект объединяет операции,

которые используются другими, более высокими уровнями абстракции;

случайная абстракция: объект объединяет не связанные между

собой операции.

Таким образом, объект может быть получен из чего угодно. Однако

можно выделить следующие часто встречающиеся категории объектов:

1. РЕАЛЬНЫЕ ОБЪЕКТЫ - абстракции фактического существования

некоторых предметов в физическом мире (Труба, Насос, Бак, Самолет).

2. РОЛИ - абстракции цели или назначения человека, части

оборудования или организации (Студент, Изоляционный клапан,

Налогоплательщик, Избиратель)

3. ИНЦИДЕНТЫ - абстракция чего-то происшедшего или

случившегося (Несчастный случай, Землетрясение, Выборы, Поставка).

4. ВЗАИМОДЕЙСТВИЯ - объекты, получаемые из отношений между

другими объектами (Соединение, Контракт, Перекресток).

5. СПЕЦИФИКАЦИИ - используются для представления правил,

стандартов или критериев качества (например, Рецепт - правило для

приготовления определенного количества определенной пищи, в отличие от

порции этой самой пищи).

Не менее значимым является и тот факт, что объекты могут

наследовать свойства и поведение от того, что называют "объектами -

прародителями".

Объекты идентифицируются уникальным и значимым именем,

При создании любого нового объекта ему присваивается уникальный

идентификатор, отличающийся от всех остальных имеющихся в системе

идентификаторов.

Каждый объект характеризуется своим состоянием. Состояние объекта

определяется текущими значениями его атрибутов. Атрибутами могут быть

не только простые величины (числа, логические значения и т.п.), но и

сложные величины, объекты. Часть атрибутов объекта может изменяться,

часть – хранить неизменяемые значения.

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

собой с помощью сообщений. Принимая сообщение. Объект выполняет

соответствующее действие. Эти действия называются методами.

Интерфейс – это внешнее описание объекта. При разработке объекта

мы решаем вопрос, является ли данный атрибут информацией, необходимой

другим объектам- Если да, то необходимо объекту добавить метод, который

сообщает значение данного атрибута другим объектам. Этот метод и будет

составлять интерфейс объекта. Аналогично решается вопрос и с другими

атрибутами. Однако сами атрибуты могут не являться непосредственно

частью интерфейса. Тогда другие объекты могут обратиться к ним только

опосредованно, с помощью соответствующих методов.

Помимо интерфейса у объекта могут быть методы или атрибуты,

предназначенные только для использования в самом объекте. В этом случае

внутренняя структура объекта скрыта (свойство инкапсуляции данных).

Поэтому внутреннюю структуру объекта становится возможным изменять

независимо от других взаимодействующих с ним объектов.

Объектно-ориентированная программа состоит из набора объектов, у

каждого из которых есть свои атрибуты и методы. Объекты взаимодействуют

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

объекты нужны программе и какими свойствами и методами они должны

обладать.

 

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.