Поиск

Полнотекстовый поиск:
Где искать:
везде
только в названии
только в тексте
Выводить:
описание
слова в тексте
только заголовок

Рекомендуем ознакомиться

'Урок'
- оказание помощи в реализации профессиональных интересов учащихся, умения реализовать творческие способности и духовные потребности, используя культ...полностью>>
'Реферат'
1 РАЗРАБОТАН Государственным проектным, конструкторским и научно-исследовательским институтом «СантехНИИпроект» при участии Государственного предприя...полностью>>
'Документ'
- При повышенной загрязнённости кузова, двигателя, днища автомобиля оплата увеличивается до 50 % - Мойка двигателя осуществляется только после его ос...полностью>>
'Диссертация'
Защита состоится 2010 г. в ч. м. на заседании Диссертационного совета Д 501.001.47 по политическим наукам при Московском государственном университете...полностью>>

Лекция № (1)

Главная > Лекция
Сохрани ссылку в одной из сетей:

107


Оглавление

Введение. Лекция №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

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

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

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

Виртуальные базовые классы 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 и функции пользовательского интерфейса);

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

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

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

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

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

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

В связи с этим, проявились недостатки метода процедурного программирования:

- сложности создания больших программ;

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

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

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

Процедурное программирование не обеспечивает в достаточной степени абстракции данных. Потребовался основной принцип абстрактного типа данных: никакие другие функции, кроме специальных не должны иметь доступа к этим данным. Для реализации абстрактного типа данных был предложен новый тип - класс, как совокупность данных и функций.

Появился новый метод программирования – метод объектно-ориентированного программирования. Метод основывается на модели построении программы как иерархии классов.

"Объектно-ориентированное программирование - это основная методология программирования 90-х годов. Она представляет собой продукт 25 лет практики и опыта"[4].

Основными методами программирования являются средства инкапсуляции, наследования, полиморфизма.

Инкапсуляция (encapsulation) - это объединение данных и функций для работы с этими данными в абстрактные типы данных - классы. Инкапсуляция даёт сокрытие элементов-данных (data members) и элементов-функций (members functions) в классе с управлением доступа к ним. Переменные типа класс называются объектами (object). Состояние объекта определяется элементами-данными соответствующего класса. Поведение объекта определяется элементами- функциями соответствующего класса.

Преимущества инкапсуляции проявляются в следующем:

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

- Управление доступом к элементам класса. Атрибуты доступа private, protected, public объявляют элементы класса соответственно закрытыми, защищенными и открытыми для доступа.

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

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

Преимущества наследования проявляются в следующем:

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

- Упрощение программирования, т.к. наследуемые и собственные элементы класса находятся в одной иерархии классов и не разбросаны по всей программе.

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

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

Полиморфизм имеет следующие методы программирования:

- общий полиморфизм (перегрузка операций, преобразование типов, перегрузка функций);

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

- параметрический полиморфизм (шаблоны функций и классов).

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

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

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

Преимущества полиморфизма проявляются в следующем:

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

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

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

- Обеспечение компактности программ и расширяемости иерархии классов за счет использования виртуальных функций.

- Автоматическая генерация по обобщенному шаблону новых функций или классов для различных типов данных, реализуемая механизмом параметрического полиморфизма.

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

Объектно-ориентированное программирование эффективно в нереализованных, с точки зрения программирования, прикладных областях. "В некоторых приложениях ,таких как интерактивная графика, простор для объектно-ориентированного программирования воистину неисчерпаем. В других областях, таких как классическая арифметика и вычисления в ней, по-видимому, трудно найти возможности для чего-то большего, чем простая абстракция данных, поэтому средства для поддержки объектно-ориентированного программирования там избыточны"[2].

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

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

"Ключ к искусному проектированию можно подобрать, если непосредственно моделировать некоторые аспекты "окружающей действительности", то есть "поймать" понятия из данной прикладной области в виде классов, представить зависимости между классами формальным образом, например, в виде наследования, и проделывать это повторно на разных уровнях абстракции"[2].

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

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

- программирование классов.

Этап проектирования структурной схемы программы представляет собой итерационный процесс и включает следующие подэтапы:

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

- реорганизация иерархии классов, т.е. либо выделение общих элементов нескольких классов в новый класс, либо разделение класса на несколько новых.

Проектирование интерфейсов классов основано на выборе средств инкапсуляции, наследования и полиморфизма.

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

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

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

  1. Дать определение инкапсуляции.

  2. Дать определение наследования.

  3. Дать определение полиморфизма.

  4. Дать сравнительную характеристику процедурного и объектно-ориентированного программирования.

  5. Перечислить основные этапы разработки программ.



Скачать документ

Похожие документы:

  1. Лекция n 1

    Лекция
    Электромагнитные процессы, протекающие в электротехнических устройствах, как правило, достаточно сложны. Однако во многих случаях, их основные характеристики можно описать с помощью таких интегральных понятий, как: напряжение, ток,
  2. Лекция №1 (13)

    Лекция
    Электромагнитные процессы, протекающие в электротехнических устройствах, как правило, достаточно сложны. Однако во многих случаях, их основные характеристики можно описать с помощью таких интегральных понятий, как: напряжение, ток,
  3. Лекция 1 (7)

    Лекция
    Русский учёный Ф. Ф. Фортунатов особое внимание обратил на изучение структурной стороны языка. Работы в данной области имели большое значение на этом этапе развития Я.
  4. Лекция №1 (14)

    Лекция
    Основные формы процесса труда – это затраты человеческой энергии при взаимодействии работника со средствами производства и при производственном взаимодействии работников друг с другом как по горизонтали, так и по вертикали.
  5. Лекція №1 (3)

    Лекція
    Процес нормування праці на підприємстві - це визначення максимально припустимої кількості часу для виконання конкретної работи або операції в умовах конкретного виробництва або мінімально припустимої кількості продукції, яка повинна
  6. Лекция №  1

    Лекция
      Медицинская косметология. Классификация. Этапы развития. Современное  состояние  и  возможности  косметологии. Терапевтическая косметология: методы, средства.

Другие похожие документы..