- •Информатика
- •Тверь-2008
- •15 Сентября 2008 г., протокол n1
- •Содержание
- •Глава 1. Языки программирования (яп)…………………………………..8
- •Глава 2. Основы алгоритмизации……………………………………………24
- •Глава 3. Язык и система программирования
- •Глава 4. Объектно-ориентированное программирование (ооп)……….56
- •Глава 5. Лабораторные работы и практические задания ………………..68
- •Введение
- •Глава 5 содержит перечень лабораторных работ (8) по этим темам, а также список индивидуальных заданий для самостоятельного выполнения студентами по желанию или рекомендации преподавателя.
- •Глава 1. Языки программирования (яп)
- •1.1. Эволюция яп (поколения яп)
- •1.2. Элементы яп
- •1.3. Способы описания яп
- •1.4. Типы данных
- •1.5. Краткие сведения о некоторых яп
- •1.5.1. Бейсик (Basic)
- •1.5.2. Паскаль (Pascal)
- •1.6. Системы программирования
- •Глава 2. Основы алгоритмизации
- •2.1. Понятие алгоритма
- •2.2. Свойства алгоритма
- •2.3. Основные этапы решения задачи с помощью эвм
- •2.4. Способы записи алгоритмов
- •2.5. Основные элементы блок-схемы
- •2.6. Типовые структуры алгоритмов
- •2.7. Стандартные алгоритмы
- •2.7.1. Алгоритм накопления суммы (произведения)
- •2.7.2. Алгоритм поиска максимального (минимального) элемента
- •2.7.3. Алгоритмы сортировки
- •2.7.3.1. Метод выбора
- •2.7.3.2. Пузырьковая сортировка
- •Глава 3. Язык и система программирования
- •3.1. Общая характеристика языка и системы программирования vba
- •3.2. Типы данных в языке vba
- •Описание переменных и идентификаторы типов данных
- •3.3. Арифметические и логические выражения
- •3.4 Основные операторы языка vba
- •1. Оператор присваивания.
- •2. Условный оператор.
- •3. Оператор цикла с заданным числом повторений.
- •4. Оператор цикла с незаданным числом повторений.
- •3.5. Разбиение строки программы, несколько операторов в одной строке, задание комментариев в тексте программы
- •3.6. Типы процедур
- •Глава 4. Объектно-ориентированное программирование (ооп)
- •4.1. Структурное программирование и ооп
- •4.2. Понятие программного объекта
- •4.3. Наследование, инкапсуляция и полиморфизм
- •4.4. Понятие класса объектов
- •4.5. Типы программных компонентов
- •Глава 5. Лабораторные работы и практические задания
- •2) По заданным значениям сторон а, в, с найти площадь треугольника по формуле Герона , где р – полупериметр треугольника. (Без проверки условия на существование треугольника.)
- •Лабораторная работа n2 Создание функций пользователя с разветвляющейся структурой алгоритма
- •Практическое задание
- •Лабораторная работа n3 Создание функций пользователя с циклической структурой алгоритма и накоплением суммы (произведения)
- •Практическое задание
- •Лабораторная работа n4 Создание функций пользователя с циклической структурой алгоритма и поиском максимума (минимума)
- •Практическое задание
- •Лабораторная работа n5 Автоматическая запись программы с помощью макрорекодера
- •Практическое задание.
- •Лабораторная работа n6 Создание оконных форм пользователя
- •Практическое задание.
- •Самостоятельное задание к лабораторной работе n6
- •Лабораторная работа n7 Вычисления по разным сценариям
- •Практическое задание.
- •Лабораторная работа n8 Сортировка элементов массива
- •Самостоятельное задание к лабораторной работе n8
- •Список индивидуальных заданий для самостоятельного выполнения
- •Список рекомендуемой литературы
4.2. Понятие программного объекта
Понятие объекта. ООП базируется на понятии программного объекта. В отличие от процедурного подхода к программированию, когда описание программы представляет собой последовательность действий (процедуру), ООП предлагает описывать программу в виде взаимодействия объектов (в виде соотношений между объектами). При этом любой программный объект представляет собой совокупность данных и действий над ними. Характеристики состояния объекта называют свойствами, а действия над данными объекта называют методами. Каждому типу объектов могут быть присущи свои свойства и методы.
Пример. Пусть требуется построить изображение «звездного неба» в двумерной проекции. Задача состоит в размещении и перемещении некоторого количества мерцающих разноцветных точек (обозначающих звезды) и кружков (обозначающих планеты) на плоскости экрана.
Пусть звезда – точка на экране с координатами (Х, У), которая имеет цвет, может быть видимой или невидимой и может перемещаться по «звездному небу». Планета – цветной круг с координатами центра (Х, У), который тоже может быть видимым или невидимым и должен перемещаться.
Все звезды (и планеты) в нашем примере однотипны и могут представляться одинаковыми свойствами и процедурами обработки. Поэтому для решения этой задачи необходимо создать объекты типа «Звезда» и «Планета».
4.3. Наследование, инкапсуляция и полиморфизм
Характерными особенностями, присущими ООП, являются: наследование, инкапсуляция и полиморфизм объектов.
Наследование. В рассмотренном ранее примере о звездном небе, очевидно, что для изображения любого объекта должно определяться его положение на экране (например, координатами Х и У относительно верхнего левого угла экрана). Поэтому можно описать объект «Позиция» с координатами Х и У и методом «Назначить координаты»:
Позиция (Х, У, Назначить ХУ)
В то же время объект «Звезда» может быть описан следующим образом:
Звезда (Х, У, Видимость, Цвет, НазначитьХУ, Назначить цвет, Зажечь, Погасить, Переместить)
Обратим внимание, что возможности объекта Позиция полностью входят в объект Звезда. Такое свойство называется наследованием и позволяет описать объект Звезда через объект Позиция:
Звезда (Позиция, Видимость, Цвет, Назначить цвет, Зажечь, Погасить, Переместить)
Таким образом, наследование позволяет повторно использовать уже созданную часть программного кода, в том числе и в других проектах, тем самым, исключая избыточность программного кода (ненужных повторов). Посредством наследования формируются связи между объектами через понятия «родители» и «потомки». В нашем примере о звездном небе объект Позиция можно считать «родителем» относительно объекта Звезда, а объект Звезда – «потомком» для объекта Позиция.
Инкапсуляция. Объединение в одном месте всех данных и методов объекта (включая данные и методы объектов-предков) называется инкапсуляцией. При этом инкапсуляция значительно облегчает понимание программы, ее отладку и модификацию, т.к. разработчика редко интересует внутренняя реализация объектов. Для него важнее, чтобы объект обеспечивал назначенные ему функции (а как он это делает – неважно).
Взаимодействие с объектом происходит через его интерфейс. Обычно интерфейс определяет единственный способ входа в объект и выхода из него; детали реализации остаются инкапсулированными. При создании собственных объектов разработчик должен организовать для них собственные интерфейсы (по тому же принципу). В объектах интерфейсами (средствами доступа к этим объектам) являются их свойства, методы и события. Только они предоставляются каждым объектом в распоряжение других объектов. Благодаря этому предотвращается доступ других объектов к внутренним переменным состояния объекта, которые могут обрабатываться только предусмотренными для этого процедурами. Таким образом, инкапсуляция обеспечивает использование объекта, не зная как, он реализован внутри (его внутренняя реализация как бы скрыта «внутри капсулы).
Полиморфизм. В рассмотренном ранее примере о звездном небе уже были описаны объекты Позиция и Звезда. Если пытаться описать объект Планета, очевидно, что этот объект должен наследовать возможности объекта Звезда, но методы Назначить цвет, Зажечь, Погасить, Переместить, по результату являясь теми самыми, фактически не могут быть реализованы одинаковой последовательностью команд и для Звезды, и для Планеты (вспомним, что Звезда – точка на экране, а Планета – кружок). Эта ситуация разрешается следующим образом: методы объектов имеют одинаковое название (и, соответственно, одинаковый ожидаемый результат), а внутреннее описание методов будет различно для разных объектов. Такое свойство объектов называется полиморфизмом, а объект Планета может иметь следующее описание:
Планета (Звезда, Радиус, Назначить цвет, Зажечь, Погасить, Переместить)
Полиморфизм основывается на возможности включения в данные объекта информации о методах обработки этих данных. При этом различные по типу объекты могут использовать одинаковую абстракцию – могут иметь свойства и методы с одинаковыми названиями. Однако обращение к ним будет вызывать различную реакцию для различных объектов.
