Объектно-ориентированное программирование
С дальнейшим ростом сложности программных продуктов выяснилось, что возможности структурного и модульного программирования ограничены и зачастую уже не позволяют добиваться желаемого результата (либо ничего не работает, либо проект не укладывается в сроки, либо в бюджет, либо через год после написания программы выясняется, что ее невозможно модифицировать и т.д.). Эти ограничения в основном вызваны разобщённостью в программе данных и методов их обработки.
В начале 80-х годов ХХ века в программировании возникло новое направление, основанное на понятии объекта. Реальные объекты окружающего мира обладают тремя базовыми характеристиками: они имеют набор свойств, способны разными методами изменять эти свойства и реагировать на события, возникающие как в окружающем мире, так и внутри самого объекта.
Именно в таком виде в языках программирования и реализовано понятие объектакак совокупностисвойств(структур данных, характерных для этого объекта),методових обработки (подпрограмм изменения свойств) исобытий, на которые данный объект может реагировать и которые приводят, как правило, к изменению свойств объекта.
Объектно-ориентированное программирование в некоторой степени решило большинство вышеописанных проблем. Появление возможности создания объектов в программах качественно повлияло на производительность труда программистов. Максимальный объем приложений, которые стали доступны для создания группой программистов из десяти человек, за несколько лет увеличился до миллионов строк кода. При этом одновременно удалось добиться высокой надежности программ и, что немаловажно, повторно использовать ранее созданные объекты в других задачах.
В отличие от рассмотренных ранее методологий, объектно-ориентированный подход работает уже на начальных стадиях программирования – анализа и проектирования. Объекты представляют собою упрощенное, идеализированное описание реальных сущностей предметной области. Если соответствующие модели адекватны решаемой задаче, то работать с ними оказывается намного удобнее, чем с низкоуровневым описанием всех возможных свойств и реакций объекта.
В объектно-ориентированном программировании (ООП) используются следующие базовые понятия:
Объект– совокупность свойств (параметров) определенных сущностей и методов их обработки (программных средств). То есть объект способен как хранить информацию, так и преобразовывать. Практически всё может быть представлено объектом, и очень часто одни объекты состоят из других. Приведём примеры стандартных объектов оконного интерфейса: формы, вкладки, надписи, текстовые поля, кнопки и др.
Свойство– характеристика объекта, его параметр. Все объекты наделены определенными свойствами, которые в совокупности выделяют объект из множества других объектов. Набор свойств стандартных элементов графического интерфейса включает в себя размеры объекта, его положение на экране, эффекты отображения и др.
Метод– связанный с определенным объектом программный код, определяющий его возможное поведение или преобразование свойств. Объект может обладать набором заранее определенных встроенных методов обработки, либо созданных пользователем (а точнее – программистом) или заимствованных встандартныхбиблиотеках (аналогично стандартным подпрограммам обработки данных при структурном подходе).
Объекты могут объединяться вклассы(группы, наборы, коллекции – в различных программных системах возможна другая терминология).Класс– совокупность объектов, характеризующихся общностью применяемых методов обработки или свойств. По сути, класс представляет собой описание структуры данных, в которую включено описание методов. Класс есть шаблон, на основе которого может быть создан конкретный программный объект – экземпляр. Объявление класса есть логическая абстракция, определяющая новый тип объекта, а определение объекта как экземпляра класса создает этот объект физически, т.е. размещает объект в памяти.
Программный продукт, созданный с помощью инструментальных средств объектно-ориентированного программирования, содержит объекты с их характерными свойствами, для которых разработан графический интерфейс пользователя. Как правило, работа с программным продуктом осуществляется с помощью экранной формы, с объектами управления, которые содержат методы обработки, вызываемые при наступлении определенных событий. Экранные формы также используются для выполнения заданий и перехода от одного компонента программного продукта к другому. Каждый объект управления обладает определенными свойствами, значения которых могут изменяться.
Формат записи для работы с объектами следующий: Имя_Объекта.Имя_Метода; илиИмя_Объекта.Имя_Свойства. При этом вызов метода по сути аналогичен вызову процедуры, а работа со свойствами объектов практически не отличается от работы с переменными, однако отдельные свойства (например, имя объекта) могут быть доступны только для чтения.
Отметим, что мы уже познакомились с некоторыми возможностями ООП в среде VBA. Так, в рассмотренных ранее Примерах 2 и 3 с помощью свойства.Valueтекстового поля осуществлялся и ввод, и вывод данных. А в Примерах 4 и 5 использовался метод.AddItemдля вывода текстовых строк в поле списка.
Один объект может выступать объединением вложенных в него по иерархии других объектов. И это может отражаться в тексте программы перечислением вложенных объектов через точку. Например, следующий фрагмент программы задаёт цвет формы «белый», а расположенной на ней кнопке – «чёрный»:
Форма.Цвет = "белый"
Форма.Кнопка.Цвет = "чёрный"
Существуют различные объектно-ориентированные технологии и методики проектирования программных продуктов, которые основываются на следующих принципах ООП – «китах»:
инкапсуляция(встраивание, сокрытие);
наследование(иерархия, агрегация);
полиморфизм(изменчивость).
Инкапсуляцияозначает сочетание в одном объекте структур данных с методами их обработки, детальная реализация которых остается скрытой от пользователей.
Наследованиепозволяет создавать на основе существующих классов новые –подклассы. При построении подклассов осуществляетсянаследованиеданных и методов обработки объектов исходного родительского класса. Механизм наследования позволяет переопределить или добавить новые данные и методы их обработки, создать иерархию классов.
Полиморфизм(от греч. «многоликость») – способность объекта реагировать на запрос (вызов метода) сообразно своему типу, при этом одно и то же имя метода может использоваться для различных классов объектов.
Суть объектной декомпозиции* состоит в выделении в предметной области классов и объектов, а также связей между ними, и лишь потом – данных и алгоритмов, которыми характеризуется каждый класс. Таким образом, именно классы становятся основными «кирпичиками» в ООП, тогда как ранее таковыми блоками являлись алгоритмы.
С объектно-ориентированным программированием часто связывают событийно-ориентированноепрограммирование, поскольку концепция объекта идеально подходит для работы с событиями. Событийно-ориентированное программирование является развитием идей нисходящего проектирования, когда постепенно определяются и детализируются реакции программ на различныесобытия.Пользовательскиесобытия возникают в результате действий пользователя (нажатие клавиш, кнопок, выбор пунктов меню).Системныесобытия возникают в операционной системе (сообщение от таймера, сигнал внешнего устройства).Программныесобытия генерируются самой программой (например, получено ошибочное значение, и его нужно обработать). Структура главной части событийно-ориентированной программы представляет собой бесконечный цикл, следящий за появлением событий и вызывающий соответствующую программуобработки (пока не будет получена команда завершения работы).
Компонентное программирование* представляет собой развитие объектно-ориентированной технологии. В отличие от ООП введен следующий уровень абстракции, на котором классы объединяются в компоненты.Компонент– программный код в виде самостоятельного модуля, который может быть использован в неизменном виде, обладает поведением (функциональностью) и может допускать настройку.
Основной принцип компонентного программирования – сборка приложения из готовых компонентов, в общем случае написанных на разных языках. Компонентная программа – совокупность независимых компонентов, связанных друг с другом посредством интерфейсов.
- Информатика
- Режим доступа к электронному аналогу печатного издания: http://www.Libdb.Sssu.Ru
- Содержание
- Предисловие
- Основные понятия информатики
- Понятие информации
- Свойства информации
- Понятие количества информации
- Предмет и задачи информатики
- Информационное общество
- Вопросы и тестовые задания для самоконтроля
- Системы счисления и представление информации в эвм
- Представление (кодирование) данных
- Понятие об основных системах счисления
- Перевод чисел из одной системы счисления в другую
- Представление чисел в различных системах счисления
- Двоичная арифметика
- Арифметические действия над двоичными числами
- Представление чисел в эвм
- Примеры представления целых чисел в шестнадцатиразрядных двоичных кодах
- Представление десятичных чисел в четырёхразрядном коде Грея
- Кодирование информации в эвм
- Базовая таблица кодировки ascii
- Вопросы и тестовые задания для самоконтроля
- Логические основы построения эвм
- Основы алгебры логики
- Операции сравнения
- Примеры операторов сравнения в разных языках программирования
- Логические операции
- Основные логические операторы
- Результаты, возвращаемые логическими операциями
- Основы элементной базы эвм
- Условные обозначения и диаграммы работы логических элементов
- Rs-триггер
- Элементы теории множеств
- Элементы теории графов
- Типы вершин блок-схем алгоритмов
- Вопросы и тестовые задания для самоконтроля
- Технические средства реализации информационных процессов
- История развития эвм
- Классификация эвм
- Архитектура эвм
- Состав персонального компьютера
- Внешние устройства
- Вопросы и тестовые задания для самоконтроля
- Системное программное обеспечение эвм
- Базовые понятия ос
- Классификация операционных систем
- Файловая структура эвм
- Примеры общепринятых расширений для популярных типов файлов
- Файловые системы Microsoft Windows
- Драйверы устройств
- Служебные программы
- Обзор операционных систем unix и Linux
- Обзор операционных систем Windows
- Вопросы и тестовые задания для самоконтроля
- Прикладное и инструментальное программное обеспечение
- Прикладное программное обеспечение общего назначения
- Прикладное программное обеспечение специального назначения
- Инструментальное по
- Нумерация версий программ
- Правовой статус программ
- Текстовые редакторы и процессоры
- Программы подготовки презентаций
- Вопросы и тестовые задания для самоконтроля
- Электронные таблицы
- Основные понятия электронных таблиц Excel
- Ввод, редактирование и форматирование данных
- Вычисления в таблицах
- Диаграммы
- Вопросы и тестовые задания для самоконтроля
- Модели решения функциональных и вычислительных задач
- Моделирование как метод познания
- Классификация моделей
- Классификация видов моделей
- Компьютерное моделирование
- Информационные модели
- Примеры информационных моделей
- Базы данных
- Искусственный интеллект
- Вопросы и тестовые задания для самоконтроля
- Основы алгоритмизации
- Основные этапы компьютерного решения задач
- Понятие алгоритма и его свойства
- Исполнители алгоритмов
- Способы описания алгоритмов
- Обозначение и функциональное назначение наиболее часто употребляемых символов в схемах данных и программ
- Базовые управляющие структуры алгоритмов (основные алгоритмические конструкции)
- 2) Альтернатива (ветвление);
- 3) Итерация1 (цикл).
- Алгоритмы линейной структуры
- Алгоритмы ветвящейся структуры
- Алгоритмы циклической структуры
- Способы комбинации базовых управляющих структур (основных алгоритмических конструкций)
- Примеры комбинации основных алгоритмических структур
- Вопросы и тестовые задания для самоконтроля
- Основы программирования на языках высокого уровня
- Основные понятия языков программирования
- Примеры использования имён
- Операторы в арифметических и логических выражениях
- Типы данных и операторы описания переменных
- Некоторые базовые типы переменных
- Описание переменных в разных языках
- Синтаксис операторов описания сложных типов переменных
- Основные операторы
- Синтаксис некоторыхоператоров
- Вопросы и тестовые задания для самоконтроля
- Основные операторы языка visual basic for applications
- Оператор присваивания
- Примеры использования оператора присваивания
- Условный операторIf … then
- Оператор выбора варианта*
- Операторы цикла
- Оператор циклаFor … next
- Математические функции
- Краткие сведения о математических функциях в vba и Паскале
- Функции обработки строк*
- Краткие сведения о строковых функциях
- Функции преобразования данных
- Краткие сведения о функциях преобразования данных
- Вопросы и тестовые задания для самоконтроля
- Технологии программирования
- Концепция программирования
- Характеристика трудоёмкости разработки программ
- Структурное и модульное программирование
- Рекурсивные алгоритмы *
- Объектно-ориентированное программирование
- Вопросы и тестовые задания для самоконтроля
- Языки и системы программирования
- Уровни языков программирования
- Системы программирования
- Классификация языков программирования
- Процедурные языки программирования
- Объектно-ориентированные языки
- Декларативные языки
- Языки программирования для баз данных и компьютерных сетей
- Языки моделирования *
- Вопросы и тестовые задания для самоконтроля
- Основные понятия компьютерной графики
- Виды компьютерной графики
- Графические форматы
- Цветовые модели *
- Программные средства создания растровых изображений
- Программы векторной графики
- Программные средства обработки трехмерной графики
- Вопросы и тестовые задания для самоконтроля
- Основные понятия баз данных
- Задачи, решаемые с помощью баз данных
- Классификация бд
- Реляционная модель данных
- Свойства полей базы данных
- Типы данных
- Безопасность и объекты баз данных
- Проектирование баз данных *
- Вопросы и тестовые задания для самоконтроля
- Средства автоматизации проектных, опытно-конструкторских и научно-исследовательских работ.
- Задачи, решаемые с помощью систем автоматического проектирования
- Программные продукты MathWorks
- Сапр в легкой промышленности
- Вопросы и тестовые задания для самоконтроля
- Основы компьютерных сетей
- Основы передачи данных
- Назначение и классификация сетей
- Сетевая модель osi/iso
- Сетевое оборудование
- Основные стандарты и протоколы
- Т Вопросы и тестовые задания для самоконтроля
- Глобальная сеть интернет
- Подключение к Интернет
- Службы Интернет
- Поиск информации в Интернете
- Наиболее известные и популярные поисковые системы
- Поиск с использованием языка запросов *
- Логические операторы
- Вопросы и тестовые задания для самоконтроля
- Основы информационной безопасности
- Угрозы информационной безопасности
- Методы и средства защиты информации
- Правовые основы информационной безопасности
- Ответственность за преступления в области информационных технологий
- Криптографические механизмы защиты информации
- Компьютерные вирусы и вредоносные программы
- Методы защиты от вирусов
- Вопросы и тестовые задания для самоконтроля
- Библиографический список
- Учебное издание информатика Учебное пособие