Лекция №

Вид материалаЛекция

Содержание


Введение. Лекция №1.
1Основные методы программирования. Лекция №2 1.1Процедурное программирование
Этапы разработки программ. Лекция 3.
1.2Объектно-ориентированное программирование Лекция №4
Инкапсуляция (encapsulation)
Наследование (inheritance)
Полиморфизм (polymorphism)
Перегрузка операций
Виртуальная функция
Параметрический полиморфизм
Этапы разработки ОО программ. Лекция №5
1.3Вопросы по теме
2Методы объектно-ориентированного программирования. Лекция №6. 2.1Инкапсуляция
Конструкторы и деструкторы. Лекция №7.
Друзья класса
2.2Наследование. Лекция №8
Производный класс
Простое наследование
Множественное наследование. Лекция №9
Виртуальные базовые классы
...
Полное содержание
Подобный материал:
  1   2   3   4   5   6   7   8   9   10   11



Оглавление

Введение. Лекция №1. 4

1 Основные методы программирования. Лекция №2 5

1.1 Процедурное программирование 5

Методы процедурного программирования 5

Этапы разработки программ. Лекция 3. 7

1.2 Объектно-ориентированное программирование Лекция №4 8

Этапы разработки ОО программ. Лекция №5 13

1.3 Вопросы по теме 15

2 Методы объектно-ориентированного программирования. Лекция №6. 15

2.1 Инкапсуляция 15

Класс 15

Конструкторы и деструкторы. Лекция №7. 20

Друзья класса 22

2.2 Наследование. Лекция №8 23

Производный класс 24

Простое наследование 26

Множественное наследование. Лекция №9 29

Виртуальные базовые классы 32

2.3 Полиморфизм. Лекция №10 33

Перегрузка операций 34

Преобразования типов, определяемые классом 38

Перегрузка функций. 43

Чистый полиморфизм 45

Виртуальные элементы-функции 45

Абстрактные классы. Лекция №11. 51

Параметрический полиморфизм 52

Шаблоны функций 52

Шаблоны классов 53

2.4 Вопросы по теме 54

3 Объектно-ориентированное проектирование. Лекция №12 55

3.1 Концепция объектно-ориентированного проектирования 55

3.2 Проектирование структурной схемы программы 57

Составление начальной иерархии и структуры классов 57

Реорганизация иерархии и структуры классов 59

Организационная структура программы 61

3.3 Проектирование файлов интерфейсов классов. Лекция № 13. 62

Файл интерфейса базового класса 62

Файлы интерфейсов производных классов 63

Файл управления 68

3.4 Вопросы по теме 74

Общие моменты разработки программы на основе объектно-ориентированного подхода 74

Введение. Лекция №1.


Пособие содержит необходимые материалы, используемые в процессе изучения дисциплины «Объектно-ориентированное программирование». Основное внимание уделено вопросам применения объектно-ориентированного подхода в программировании: сравнение объектно-ориентированного подхода с другими подходами программирования, дается понятие объектного типа данных, инкапсуляции, наследования; полиморфизма классов и объектов.

Рассмотрение идеологии объектно-ориентированного программирования базируется на высокоуровневом языке C++ в среде визуального программирования C++ Builder.

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

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

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

Учебное пособие предназначено для студентов и преподавателей высших учебных заведений специальности 351400 «Прикладная информатика», также студентов смежных специальностей.

1Основные методы программирования. Лекция №2

1.1Процедурное программирование

Методы процедурного программирования


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

1. Метод функциональной декомпозиции.

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

2. Метод модульной (файловой) организации.

Функции и данные группируются в модули, которые программируются и компилируются отдельно. Преимущества данного метода заключаются в параллельной и независимой работе программистов, удобстве программирования, возможности создания библиотек.

3. Метод структурного программирования.

Данный метод используется при программировании функций. Этот метод заключается в следующем:

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

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

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

Этапы разработки программ. Лекция 3.


В экономике и управлении производством накоплен багаж использования традиционного метода процедурного программирования. Приведем высказывание Бъярна Страуструпа: "Четкое разделение между данными и кодом позволяет легко использовать традиционные базы данных, спроектированные для таких программ. Для многих приложений, скажем обычных программ пользовательского обновления баз данных, такой способ мышления вполне обоснован, и разрабатываемые десятилетиями традиционные методы отвечают требованиям данной задачи"[2].

Разработка программ для решения большинства задач состоит из этапов:

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

- проектирование файлов (модулей), в которые группируются функции, и составление проекта программы; используется метод файловой организации (метод модульного программирования);

- программирование функций и файлов (модулей); используются методы структурного программирования и программирования "сверху-вниз" ("top-down");

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

Этап программирования задачи выполняется в следующей последовательности:

- программирование функций верхнего уровня схемы (главная функция main и функции пользовательского интерфейса);

- программирование функций нижнего уровня схемы (управления базой данных).

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