Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




End Function

Next

End Function

 

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

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

 

Function factorial(N As Integer) As Long

factorial=1

For Счётчик= 1 To N

factorial=factorial* Счётчик

 

 

 

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

В начале 80-х годов ХХ века в программировании возникло новое направление, основанное на понятии объекта. Реальные объекты окружающего мира обладают тремя базовыми характеристиками: они имеют набор свойств, способны разными методами изменять эти свойства и реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта.

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

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

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

В объектно-ориентированном программировании (ООП) используются следующие базовые понятия:

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

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

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

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

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

Формат записи для работы с объектами следующий: Имя_Объекта.Имя_Метода; или Имя_Объекта.Имя_Свойства. При этом вызов метода по сути аналогичен вызову процедуры, а работа со свойствами объектов практически не отличается от работы с переменными, однако отдельные свойства (например, имя объекта) могут быть доступны только для чтения.

Отметим, что мы уже познакомились с некоторыми возможностями ООП в среде VBA. Так, в рассмотренных ранее Примерах 2 и 3 с помощью свойства.Value текстового поля осуществлялся и ввод, и вывод данных. А в Примерах 4 и 5 использовался метод.AddItem для вывода текстовых строк в поле списка.

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

Форма.Цвет = "белый"

Форма.Кнопка.Цвет = "чёрный"

 

Существуют различные объектно-ориентированные технологии и методики проектирования программных продуктов, которые основываются на следующих принципах ООП – «китах»:

· инкапсуляция (встраивание, сокрытие);

· наследование (иерархия, агрегация);

· полиморфизм (изменчивость).

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

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

Полиморфизм (от греч. «многоликость») – способность объекта реагировать на запрос (вызов метода) сообразно своему типу, при этом одно и то же имя метода может использоваться для различных классов объектов.

Суть объектной декомпозиции * состоит в выделении в предметной области классов и объектов, а также связей между ними, и лишь потом – данных и алгоритмов, которыми характеризуется каждый класс. Таким образом, именно классы становятся основными «кирпичиками» в ООП, тогда как ранее таковыми блоками являлись алгоритмы.

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

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

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

 

 




Поделиться с друзьями:


Дата добавления: 2014-10-22; Просмотров: 463; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.