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

Реферат Курсовая Конспект

ОСНОВНЫЕ ПРИНЦИПЫ И ЭТАПЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

ОСНОВНЫЕ ПРИНЦИПЫ И ЭТАПЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ - раздел Программирование, ВЫСОКОУРОВНЕВЫЕ МЕТОДЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ   В Теории Программирования Ооп Определяется Технология Создани...

 

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

Такое представление программы впервые было использовано в языке имитационного моделирования сложных систем Simula, появившемся еще в 60-х годах. Естественный для языков моделирования способ представления программы получил развитие в другом специализированном языке моделирования – языке Smalltalk (70-е годы), а затем был использован в новых версиях универсальных языков программирования, таких как Pascal, C++, Ада, Modula.

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

 

 

Рис. 6 − Архитектура программы при ООП

 

 

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

Основной недостаток ООП − некоторое снижение быстродействия за счет более сложной организации программной системы.

В основу ООП положены следующие принципы:

- абстрагирование,

- ограничение доступа,

- модульность,

- иерархичность,

- типизация,

- параллелизм,

- устойчивость.

Рассмотрим, что представляет собой каждый принцип.

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

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

Необходимость ограничения доступа предполагает разграничение двух частей в описании абстракции: 1) интерфейс – совокупность доступных извне элементов реализации абстракции (основные характеристики состояния и поведения); 2) реализация – совокупность недоступных извне элементов реализации абстракции (внутренняя организация абстракции и механизмы реализации ее поведения).

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

- выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализаций используемых абстракций;

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

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

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

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

В ООП используются два вида иерархии.

- Иерархия «целое/часть» − показывает, что некоторые абстракции включены в рассматриваемую абстракцию как ее части, например, лампа состоит из цоколя, нити накаливания и колбы. Этот вариант иерархии используется в процессе разбиения системы на разных этапах проектирования (на логическом уровне − при декомпозиции предметной области на объекты, на физическом уровне − при декомпозиции системы на модули и при выделении отдельных процессов в мультипроцессной системе).

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

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

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

Использование принципа типизации обеспечивает:

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

- упрощение документирования;

- возможность генерации более эффективного кода.

Тип может связываться с программным объектом статически (тип объекта определен на этапе компиляции − раннее связывание) и динамически (тип объекта определяется только во время выполнения программы − позднее связывание). Реализация позднего связывания в языке программирования позволяет создавать переменные − указатели на объекты, принадлежащие различным классам (полиморфные объекты), что существенно расширяет возможности языка.

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

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

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

Так как меню перерисовывается иначе, чем поле или редактор, то каждый объект в оконной иерархии должен знать, как перерисовать себя. Таким образом, в каждом классе будет своя функция - член, которая перерисовывает данный объект на экране. Следовательно, если требуется перерисовать объект, то программе не нужно анализировать, к какому типу окна он относится (как это требовалось при раннем связывании). Она просто вызывает функцию - член данного объекта ”ПЕРЕРИСОВКА ”. Объект исполняет эту свою функцию и корректно перерисовывает себя на экране.

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

Реальный параллелизм достигается только при реализации задач такого типа на многопроцессорных системах, когда имеется возможность выполнения каждого процесса отдельным процессором. Системы с одним процессором имитируют параллелизм за счет разделения времени процессора между задачами управления различными процессами. В зависимости от типа используемой операционной системы (одно- или мультипрограммной) разделение времени может выполняться либо разрабатываемой системой (как в MS DOS), либо используемой ОС (как в системах Windows).

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

Различают:

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

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

- глобальные объекты, существующие пока программа загружена в память;

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

 

Все указанные выше принципы в той или иной степени реализованы в различных версиях объектно-ориентированных языков.

– Конец работы –

Эта тема принадлежит разделу:

ВЫСОКОУРОВНЕВЫЕ МЕТОДЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ

На сайте allrefs.net читайте: "ВЫСОКОУРОВНЕВЫЕ МЕТОДЫ ИНФОРМАТИКИ И ПРОГРАММИРОВАНИЯ"...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: ОСНОВНЫЕ ПРИНЦИПЫ И ЭТАПЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

ВЫРАЖЕНИЯ
  Выражения состоят из операторов и операндов. Большинство операторов в Конструкторе являются бинарными, то есть содержат два операнда. Остальные операторы являются унарными и содержа

КОММЕНТАРИИ
  Часто бывает полезно вставлять в программу текст, который предназначается в качестве комментария только для читающего программу человека и игнорируется компилятором в программе. В C

ВЕТВЯЩИЕСЯ АЛГОРИТМЫ
Циклические и рекурсивные алгоритмы. Операторы циклов for, do, while. В процессе программирования часто возникает необходимость повторять многократно выполнять многократно один и тот же фрагмент пр

МАССИВЫ И РАБОТА С ФАЙЛАМИ
Объявления массивов и указателей. Массив представляет собой набор данных одного типа. Формат определения массива следующий: тип_данных имя_массива[размер_массива];  

УКАЗАТЕЛИ
  Указатель является переменной, которая содержит адрес другой переменной или функции. Описание указателя определяет тип данных, на которые ссылается указатель, оно имеет вид:

ОСВОБОЖДЕНИЕ ПАМЯТИ
При компиляции программы память компьютера разбивается на четыре области, содержащие код программы, глобальные данные, стек и динамически распределяемую память ( иногда ее называют heap – куча). He

СТРУКТУРЫ
  В отличие от массива, структура позволяет иметь смешанные атрибуты различных типов данных. Структура создается при помощи ключевого слова struct, за которым следует имя_типа (имя ст

ПЕРЕДАЧА СТРУКТУР В ФУНКЦИИ
В функцию информация о структуре может передаваться как по значению, так и по ссылке. В первом случае в функцию передается копия структуры, что может снизить эффективность программы. При передаче п

ОБЪЕДИНЕНИЯ
  Объединения – еще один тип данных, которые можно использовать различным образом. К примеру, некоторые данные в одном случае могут рассматриваться как целые, а в другом – как числа с

ИНКАПСУЛЯЦИЯ ИЛИ СКРЫТИЕ ДАННЫХ
  Понятие инкапсуляция означает, что функции элементы и структуры данных, определяющие некоторые свойства данного класса, рассматриваются в качестве единого целого. Это подразумевает

СКРЫТИЕ ДАННЫХ В ПОТОМКАХ
  При порождении потомка класса у вас есть выбор в определении типа элементов. По умолчанию элементы базового класса автоматически получают приватный тип, если только вы не захотите и

ТЕОРЕТИЧЕСКИЕ ОСНОВЫ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ
В первой главе был дан краткий экскурс в основы программирования на языке С++. Далее будет рассмотрено детальное описание объектно-ориентированных свойств языка. ООП появилось в результате

ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ
  В программировании существуют различные парадигмы, представляющие собой разные подходы к написанию программ. Большинство программистов знакомы лишь с немногими из них, это визуально

ПРОГРАММИРОВАНИЯ
Язык считается объектно-ориентированным, если в нем реализованы первые четыре из рассмотренных выше семи принципов. Кроме этого, в теории программирования принято различать объектно-ориентированные

ИСПОЛЬЗОВАНИЕМ ООП
  Процесс разработки программного обеспечения с использованием ООП включает четыре этапа: анализ; проектирование; эволюция; модификация.

ОБЪЕКТНАЯ ДЕКОМПОЗИЦИЯ
  Как уже упоминалось выше, при использовании технологии ООП решение представляется в виде результата взаимодействия отдельных функциональных элементов некоторой системы, имитирующей

ОБЪЕКТЫ И СООБЩЕНИЯ
  В предыдущем разделе было показано, что под объектом применительно к ООП понимается отдельно реализуемая часть предметной области задачи. Разрабатываемая программа, таким образом, с

Конец описания.
  Создавая объекты типа Окно, инициализируя их в соответствии с условием и посылая им сообщение «Нарисовать окно», получим разные окна на экране, причем параметры этих окон будут хран

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

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

Конец описания.
  Класс Окно_меняющее_цвет содержит все поля родительского класса и все его методы. Дополнительно объекты типа Окно_меняющее_цвет могут менять цвет окна на указанный в сообщении «Изме

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

СОЗДАНИЕ ПОЛИМОРФНЫХ ОБЪЕКТОВ
  Полиморфными объектами или полиморфными переменными называются переменные, которым в процессе выполнения программы может быть присвоено значение, тип которого отличается от типа пер

КОМПОЗИЦИЯ
  Ранее было указано, что в результате объектной декомпозиции второго и более уровней могут быть получены объекты, находящиеся между собой в отношении включения (см. рис. 12). Классы

Конец описания.
  Метод Инициализировать, класса-потомок, при этом должен получить двойной список параметров по сравнению с методом Инициализировать класса-родитель. Первым набором инициализируются р

НАПОЛНЕНИЕ
  Включение объектов в некоторый класс можно реализовать и с использованием указателей на эти объекты. В отличие от объектного поля, которое включает в класс точно указанное количеств

ТЕХНОЛОГИЯ ООП ПРОГРАММИРОВАНИЯ
  В соответствии с обычным значением слова «технология» под технологией программирования будем понимать совокупность производственных процессов, приводящую к созданию требуемог

ПРОГРАММНЫХ СРЕДСТВ
Окружающий нас мир состоит из объектов и отношений между ними. Согласно данным словаря В. Даля объект (предмет) - это все, что представляется чувствам (объект вещественный) или уму (объект умственн

К РАЗРАБОТКЕ ПРОГРАММНОГО СРЕДСТВА
При объектном подходе этап внешнего описания ПС оказывается существенно более емким и содержательным по сравнению с реляционным подходом. Определение требований заключается в неформальном описании

МЕТОДЫ КОНТРОЛЯ КАЧЕСТВА
  Как контролировать качество системы? Как точно узнать, что программа делает именно то, что нужно, и ничего другого? Как определить, что она достаточно надежна, переносима, удобна в

ОШИБКИ В ПО
  Ошибками в ПО, вообще говоря, являются все возможные несоответствия между демонстрируемыми характеристиками его качества и предписанными требованиями и, иногда, ожиданиями по

К главе 1
  1.1 Какие типы данных поддерживает С++? 1.2 Из каких компонент состоит выражение С++? 1.3 Какие виды арифметических операторов вы знаете?

К главе 2
  2.1 Какие парадигмы программирования вы знаете? 2.2 Поясните архитектуру процедурного программирования. 2.3 Поясните архитектуру модульного програ

К главе 3
  3.1 Что такое программная инженерия? 3.2 Что такое программное средство (ПС)? 3.3 Что такое ошибка в ПС? 3.4 Что такое надежность

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги