Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Методология объектно-ориентированного программирования




Лекция

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

Основные понятия

Методология объектно-ориентированного программирования

Фундаментальными понятиями в программировании являются: технология программирования, методология, метод. Технология программирования (programming technology, sofware engineering) - это совокупность методов, способов и приемов разработки, сопровождения и применения программ, а также описание методов программирования. Метод - это совокупность приемов и операций практического и теоретического освоения действительно­сти, в том числе программирования.

Любая технология программирования базируется на некоторой методоло­гии разработки программ. Методология - это система принципов и способов организации и построения теоретической и практической деятельности, а также учение об этой системе.

Целью методологии программирования является изучение и внедрение та­ких методов проектирования и реализации программ, которые облегчают задачу сопровождения программы. Легкость сопровождения - это одно из тех качеств программы, которые нельзя добавить к программе после ее разработки.

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

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

 

Изначально понятие технологии как таковой — это 60-е годы прошлого столетия — это период "стихийного" программирования. В этот период отсутствовало понятие структуры программы, типов данных и т.д. Вследствие этого код получался запутанным, противоречивым. Программирование тех лет считалось искусством. Конец 60-х — кризис в программирование.

 

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

 

Другим базовым принципом структурного программирования является использование при составлении программ только базовых алгоритмических структур (см. билет 4), запрет на использование оператора GOTO.

 

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

 

Поддержка принципов структурного программирования была заложена в основу так называемых процедурных языков программирования. Как правило, они включали основные "структурные" операторы передачи управления, поддерживали вложение подпрограмм, локализацию и ограничение области "видимости" данных. Среди наиболее известных языков этой группы стоит назвать PL/1, ALGOL-68, Pascal, С.

 

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

 

Модульное программирование предполагает выделение групп подпрограмм, использующих одни и те же глобальные данные, в отдельно компилируемые модули (библиотеки подпрограмм), например, модуль графических ресурсов. Связи между модулями при использовании данной технологии осуществляются через специальный интерфейс, в то время как доступ к реализации модуля (телам подпрограмм и некоторым "внутренним" переменным) запрещен. Эту технологию поддерживают современные версии языков Pascal и С (C++), языки Ада и Modula.

 

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

 

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

 

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

Программа - это средство, для которого в результате опытного внедрения и дополнительных испытаний определена наиболее эффективная область применения, отработана методика внедрения и использования. Программное обеспечение (ПО, software) - это совокупность программ системы определен­ной обработки данных и программных документов, необходимых для эксплуа­тации этих программ.

Эволюция языков программирования для разработки программ - естествен­ный процесс. Две важные тенденции эволюции:

1) создание надежного ПО: за счет контроля типов и успешности выполнения
определенных действий;

2) в языки программирования все больше проникают средства разработки
программ, самого процесса их создания.

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

Модульное и ООП - современные направления развития программирова­ния. ООП - это новый этап развития современных концепций построения языков и систем программирования. В нем получили дальнейшее развитие принципы структурного программирования: структуризация программ и дан­ных, модульность и пр. Традиционный подход к разработке программ не теря­ет своего значения. Но введение объектных типов достаточно радикально из­меняет подход к программированию.

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

ООП характеризуется тремя основными свойствами: инкапсуляцией (encapsulation), наследованием (inheritance) и полиморфизмом (polymorphism).

Инкапсуляция означает объединение в одном объекте данных и действий над ними.

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

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

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










Последнее изменение этой страницы: 2018-05-10; просмотров: 220.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...