Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GOS.pdf
Скачиваний:
172
Добавлен:
11.03.2015
Размер:
6.59 Mб
Скачать

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

1Стили программирования. Программные продукты как сложные системы. Признаки сложных систем. Декомпозиция. Преимущества и недостатки объектноориентированного подхода в программировании.

Кнастоящему моменту выделяют несколько концепций или стилей программирования:

1.структурное программирование (в основе понятия алгоритма, Pascal);

2.логическое программирование (в основе исчисление предикатов, Prolog);

3.функциональное программирование (в основе понятие функции, Lisp);

4.объектно-ориентированное программирование (в основе понятие объекта,

класса,C++, Object Pascal).

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

Признаки объектно-ориентированного языка:

1.Поддерживаются объекты, т. е. структуры ,включающие и данные, и подпрограммы их обработки

2.Объекты относятся к соответствующим типам или. классам.

3.Классы могут быть организованы в иерархию наследования

Основные свойства объектно-ориентированного языка:

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

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

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

3.Полиморфизм - производный класс может перегружать наследуемые методы в том случае, когда их работа в базовом классе не подходит потомку.

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

Признаки сложных систем:

1.Сложные системы являются иерархическими, т. е. состоят из взаимосвязанных подсистем, которые в свою очередь могут быть разделены на подсистемы и т. д. в плоть до самого низкого уровня.

2.Выбор какие компоненты в данной системе являются элементарными относительно произволен и в большей степени оставляется на усмотрение исследователя.

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

4.Иерархические системы обычно состоят из небольшого количества одинаковых структурных частей, т. е. система обычно состоит из различных подсистем по – разному скомбинированных и организованных.

5.Любая работающая сложная система является результатом развития работающей более простой системы. В процессе развития системы объекты первоначально рассматривающиеся как сложные становятся элементарными из них строят более сложные системы.

Декомпозиция – разбиение на составляющие.

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

§алгоритмическая;

§объектно-ориентированная.

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

Объектно–ориентированная декомпозиция. Обеспечивает разбиение по объектам,

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

Преимущества объектно-ориентированного подхода:

1.уменьшается размер программных систем за счѐт повторного исполнения общих механизмов.

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

3. объектная декомпозиция снижает риск при создании сложных программных систем, т. к. она развивается из меньших систем, в которых мы уже уверены.

4. помогает разобраться в сложной программной системе.

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

Недостатки объектно-ориентированного подхода:

1)некоторое снижение производительности функционирования ПО

2)высокие начальные затраты.

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

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

2Этапы разработки программ с использованием объектно-ориентированного подхода. Объектно-ориентированные языки программирования.

4этапа:

1.Анализ – выполняется максимально полное описание задачи, выполняется объектная декомпозиция

2.Проектирование – разрабатывается структура классов, их физическая расположенность в модулях

3.Реализация – выполняется поэтапная реализация классов и их подключение к проекту

4.Модификация – процесс добавления новых функциональных возможностей и их подключение к проекту

Язык является объектно-ориентированным, если в нѐм реализуются основные принципы ООП, а именно:

1.Поддерживаются объекты, т. е. структуры ,включающие и данные, и подпрограммы их обработки

2.Объекты относятся к соответствующим типам или. классам.

3.Классы могут быть организованы в иерархию наследования

3Принципы объектно-ориентированного программирования.

1.Абстрагирование

2.Ограничение доступа

3.Модульность

4.Иерархичность

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

абстрактный класс.

Принцип ограничения доступа. Ограничение доступа – сокрытие отдельных элементов реализации абстракции, не затрагивающих еѐ существенных характеристик как целого. Необходимость ограничения доступа предполагает выделение 2х частей в описании любой абстракции: интерфейс и реализация. Интерфейс – совокупность доступных извне элементов абстракции, а именно это основные характеристики состояния и поведения абстракции. Реализация –

совокупность недоступных извне элементов, а именно еѐ внутренняя организация и механизмы реализации еѐ поведения. ОД позволяет разработчику:

1) Выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализации использования абстракций

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

Что следует скрывать:

1.Источники вероятных изменений, например форматы файлов

2.Реализация типов данных

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

Принцип иерархичности предполагает использование иерархий при разработке программных систем. Иерархия – это упорядоченная система абстракций. Иерархия бывает 2х видов : «часть-целое» и «общее-частное». «Часть-целое» показывает, что некоторые абстракции включены в другую абстракцию как еѐ части. Например, автомобиль состоит из колѐс, кузова, двигателя. Этот вид иерархии используется в процессе анализа системы на ранних этапах проектирования, например при декомпозиции предметной области на объекты.«Общее-частное» показывает, что некоторая абстракция является частным случаем другой абстракции. Например, обеденный стол и компьютерный стол это частный вид стола вообще. Признаком иерархии «общее-частное» является возможность применения глагола «является» при движении снизу вверх по иерархии. В ООП иерархия «общее-частное» используется для построения структуры наследования. Наследование – такое отношение между абстракциями, когда одна из них использует структурную и функциональную часть одной другой

(единичное) или нескольких других (множественное) абстракций. Иерархия «общее-частное» используется при разработке структуры классов, когда сложные классы строятся на базе простых путѐм добавления к ним новых характеристик или уточнения имеющихся.

4Общая характеристика объектов в объектно-ориентированном программировании. Объектная декомпозиция. Виды отношений между объектами.

Объект – сущность, способная сохранять своѐ состояние и обеспечивающая набор операций для проверки и изменения этого состояния. Объект представляет собой конкретное представление абстракции.

Объект обладает 3мя характеристиками:

·Индивидуальность

·Состояние

·Поведение

Индивидуальность – совокупность характеристик объекта, которые отличают его от всех других объектов(поля).

Состояние – совокупность его свойств с их текущими значениями.

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

Объекты взаимодействуют между собой с помощью сообщений; принимая сообщении. Объект выполняет соответствующие действия. Эти действия представляют собой операции (методы).

Виды операций:

·Модификатор – изменяет состояние объекта.

·Селектор – предоставляет доступ к состоянию, не изменяя его.

·Итератор – предоставляет доступ к содержанию объекта по частям, в строго определѐнном порядке.

·Конструктор - создаѐт объект и инициализирует его состояние.

·Деструктор – разрушает объект.

Отношения между объектами бывают 2х видов: связь и агрегация.

Связь – физическое или понятийное соединение между объектами. Связь представляет собой соединение, при помощи которого:

1)Объект-Клиент вызывает операции объекта-поставщика

2)Один объект изменяет данные другого объекта

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

-Актѐр – объект, который может воздействовать на другие объекты, но никогда не подвержен воздействию со стороны других объектов

-Сервер – объект, который никогда не воздействует на другие объекты, а только используется ими

-Агент – и воздействует, и подвергается воздействию

Для того, чтобы между объектами было возможно отношение связи, они должны быть видимы друг другу в одной из форм видимости:

1.Объект-поставщик (сервер) глобален для клиента

2.Объект-поставщик (сервер) является параметром операции клиента

3.Объект-поставщик(сервер) является частью клиента

4.Объект-поставщик(сервер) является локально объявленным объектом в операции клиента

Агрегация – отношение между объектами в иерархии «часть-целое» . При этом отношении в объект-целое включается несколько объектов-частей. Агрегация бывает 2х видом: физическое включение(композиция: когда время жизни объектов совпадает(авто-кузов)) и включение по ссылке(время жизни объектов не совпадает: ВУЗ и студент).

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

Методы выявления объектов:

1) Подчѐркивание существительных

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

2) Выявление по этапам разработки

А) анализ. В нѐм выявл-ся объекты, выводимые непоследственно из предметной области

Б) проектирование. Выявл-ся объекты, описывающие архитектуру программы

В) реализация. Выявл-ся объекты, выводимые, исходя из внутренних потребностей реализации программы

3) По источникам объектов

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]