14.1. Основные понятия объектно-ориентированного
программирования
Основными методами (понятиями) объектно - ориентированного программирования являются средства инкапсуляции, наследования, полиморфизма, изучаемые на базе языка C++. В языке C++ термин «функция» эквивалентен таким терминам других языков программирования, как «подпрограмма», «процедура».
Инкапсуляция (encapsulation) - это объединение данных и функций для работы с этими данными в абстрактные типы данных - классы. Инкапсуляция даёт сокрытие элементов-данных (data members) и элементов-функций (members functions) в классе с управлением доступа к ним. Переменные типа класс называются объектами (object). Состояние объекта определяется элементами-данными соответствующего класса. Поведение объекта определяется элементами- функциями соответствующего класса.
Преимущества инкапсуляции проявляются в следующем:
· Упрощение написания больших программ. В больших про-граммах большое количество функций и переменных усложняет создание и сопровождение программ. Концепция объектно-ориентированного программирования - это разделение программы на отдельные небольшие части - классы, в каждом из которых сгруппированы определенные элементы-данные и элементы-функции для их обработки.
· Управление доступом к элементам класса. Атрибуты доступа private, protected, public объявляют элементы класса соответственно закрытыми, защищенными и открытыми для доступа.
· Возможность изменения содержимого класса (например, добавление новых элементов) без изменения других частей программы, использующих этот класс.
Наследование (inheritance) - это порождение новых абстрактных типов данных (производных классов) на основе существующих абстрактных типов данных (базовых классов), причём производный класс наследует данные и функции базового класса, а также имеет собственные данные и функции. Наследование позволяет исключить множество типов данных, определяемых пользователем, и множество функций для их обработки за счет выделения одинаковых элементов из классов и помещения их в базовый класс с целью повторного их использования через механизм наследования.
Преимущества наследования проявляются в следующем:
· исключение дублирования элементов-данных и элементов-функций за счет повторного использования элементов класса в производных классах;
· упрощение программирования, т.к. наследуемые и собственные элементы класса находятся в одной иерархии классов и не разбросаны по всей программе;
· возможность оптимального моделирования связей объектов реального мира в прикладной области (например, в информационных системах в экономике и управлении) за счет иерархии классов.
Полиморфизм (polymorphism) означает способность объектов классов, связанных наследованием, реагировать различным образом на одно и то же сообщение (вызов функции класса).
Полиморфизм имеет следующие методы программирования:
· общий полиморфизм (перегрузка операций, преобразование типов, перегрузка функций);
· чистый полиморфизм (виртуальные функции, абстрактные классы);
· параметрический полиморфизм.
Перегрузка операций - это переопределение действий операций применительно к объектам конкретных классов. Преобразование типов данных при совместном их использовании тоже является одним из методов полиморфизма.
Перегрузка функции - это использование одинакового имени для функций, выполняющих похожие действия, но с разными типами данных и объявленных в одной области действия.
Виртуальная функция - это элемент-функция базового класса в иерархии наследования, переопределенная в производных классах и вызываемая в зависимости от класса объекта, адресуемого через указатель или ссылку на базовый класс.
Параметрический полиморфизм - это механизм использования обобщенного определения функции или класса (шаблона) для автоматической генерации новых функций или классов для различных типов данных.
Преимущества полиморфизма проявляются в следующем:
· облегчение программирования сложных систем за счет возможности называть похожие (различающиеся только типами своих параметров) действия одним именем;
· обеспечение виртуальными функциями чистого полиморфизма, т.е. свойства использовать один и тот же оператор для вызова множества функций, но конкретная функция определяется по типу вызываемого объекта;
· механизм виртуальных функций – это возможность написания простых функций общего назначения для иерархии классов;
· обеспечение компактности программ и расширяемости иерархии классов за счет использования виртуальных функций;
· автоматическая генерация по обобщенному шаблону новых функций или классов для различных типов данных, реализуемая механизмом параметрического полиморфизма.
Объектно-ориентированное программирование принципиально отличается от процедурного программирования. Процедурное программирование основывается на алгоритмах, т.е. на функциях обработки задачи. При этом структуры данных не учитываются, как части организации программы. Объектно-ориентированное программирование основывается на понятиях прикладной области, являющихся классами. Программы строятся как иерархия классов.
Объектно - ориентированное программирование особенно эффективно в нереализованных, с точки зрения программирования, прикладных областях, например, в таких, как интерактивная графика.
На основе объектно-ориентированного подхода были созданы среды программирования, например Delphi, C++ Builder, Visual C++ и др., реализующие визуальное программирование.
Визуальное программирование – это автоматическая разработка программ с использованием диалоговой визуальной среды, имеющей интерактивные средства решения типовых задач, и позволяющей в диалоге с программистом создавать готовые фрагменты исходного кода.
14.2. Проектирование программы
«Ключ к искусному проектированию можно подобрать, если непосредственно моделировать некоторые аспекты "окружающей действительности", то есть «поймать» понятия из данной прикладной области в виде классов, представить зависимости между классами формальным образом, например, в виде наследования, и проделывать это повторно на разных уровнях абстракции».
Понятия не существуют изолированно, а находятся во взаимосвязи друг с другом, поэтому, и классы разрабатываемой системы должны проектироваться не изолированно, а совместно в виде одной единицы проектирования.
Автор языка C++ Б. Страуструп ввел термин компонента в качестве единицы проектирования: «Обычно разрабатывается сразу множество взаимосвязанных классов. Такое множество часто называют библиотекой классов или компонентой».
Можно рекомендовать в качестве имен классов компоненты разрабатываемого информационного рабочего места управленческого персонала - названия основных планово-учетных документов, необходимых в разрабатываемой системе. Документы являются элементами системы управления и находятся во взаимосвязи друг с другом, поэтому, и классы разрабатываемой системы должны проектироваться совместно в виде одной единицы проектирования - компоненты.
Разработка компоненты включает следующие этапы:
- проектирование структуры компоненты, включающее проектирование структурной схемы программы, представляющей собой иерархию классов компоненты, и интерфейсов классов;
- реализация (программирование) компоненты.
Этап проектирования структуры компоненты представляет собой итерационный процесс и включает следующие подэтапы:
- Выбор классов компоненты: в качестве имен классов взять названия планово-учетных документов.
- Определение состава классов: в качестве элементов-данных взять реквизиты документа, в качестве элементов-функций - набор операций (задач) по обработке документа.
- Составление начальной иерархии классов: выявить взаимозависимость документов и спроектировать структурную схему компоненты, используя наследование и полиморфизм. Структурная схема компоненты может быть представлена ориентированным графом без петель, где узлами являются классы, а дугами - направления наследования. Простое наследование соответствует иерархической декомпозиции понятий. Множественное наследование соответствует решению функциональной задачи, когда из нескольких документов образуется новый документ.
- Реорганизация иерархии классов, основанная на принципах декомпозиции и локализации: выделить общие элементы нескольких классов в новый базовый класс, разделить класс на несколько новых.
14.3. Реализация программы
Этап реализации программы заключается в программировании элементов-функций целых взаимосвязанных классов, начиная с базовых классов.
На основе объектно-ориентированного подхода были созданы среды программирования, например Delphi, C++ Builder, Visual C++ и др., реализующие визуальное программирование.
Визуальное программирование – это автоматическая разработка программ с использованием диалоговой визуальной среды, имеющей интерактивные средства решения типовых задач, и позволяющей в диалоге с программистом создавать готовые фрагменты исходного кода.
Использование интерфейса со свободной навигацией или интерфейса прямого манипулирования требует выбора объектно - ориентированного подхода к программированию и выбора современной среды визуального программирования, например, Visual C++, Builder C++, Delphi.
Контрольные вопросы
1. Перечислите основные понятия объектно-ориентированного программирования.
2. Приведите определение инкапсуляции.
3. Приведите определение наследования.
4. Приведите определение полиморфизма.
5. Объясните этапы разработки программ методом объектно-ориентированного программирования.
6. Опишите концепцию объектно-ориентированного проектирования
7. Что такое визуальное программирование?
Тестовые задания
ПФФ № 1 На последовательность Базовое
Этапы эволюции технологии программирования:
1: Неструктурированное (стихийное)
2: Процедурное и модульное
3: Объектно-ориентированное
4: Компонентные и CASE-технологии
ПФФ № 2 Открытое Стандартное
Компания, которая впервые использовала персональные компьютеры, была ###.
+: Apple
ПФФ № 3 Открытое Стандартное
Компьютер, который сделал персональные вычисления признанными в промышленности и бизнесе, был ###.
+: IBM PC
ПФФ № 4 Закрытое Базовое
Основными классами языков программирования, являются:
+: машинные и машинно-ориентированные языки
-: компиляторы
+: языки высокого уровня
-: редакторы
-: компоновщики
ПФФ № 5 Открытое Стандартное
Модель построения программы методом процедурного программирования является иерархия ###.
+: функций
ПФФ № 6 Открытое Стандартное
Модель построения программы методом объектно-ориентированного программирования является иерархия ###.
+: классов
ПФФ № 7 На соответствие Сложное
Соответствие между методом программирования и моделью - иерархией
1: Процедурное | A: функций |
2: Объектно-ориентированное | B: классов |
C: файлов |
ПФФ № 8 Открытый Стандартное
### цикл программы - это совокупность процессов от создания программы до окончания ее эксплуатации.
+: Жизненный
ПФФ № 9 Закрытое Базовое
Основными этапами решения задач на ЭВМ являются:
-: техническое задание
+: постановка задачи и определение спецификаций
-: приемка программы
+: проектирование и реализация программы
-: технический проект
ПФФ № 10 Открытое Стандартное
### - это обеспечение дружественного интерфейса для работы пользователя.
+: Дружественность
ПФФ №11 На последовательность Сложное
Эволюция моделей жизненного цикла программы:
1: каскадная
2: с промежуточным контролем
3: спиральная
ПФФ № 12 На последовательность Базовое
Последовательность этапов жизненного цикла программы:
1: постановка задачи
2:спецификация программы
3:проектирование
4:реализация
ПФФ № 13 Открытое Стандартное
Этап постановки задачи заканчивается разработкой технического ###.
+: задани#$#.
ПФФ № 14 Открытое Базовое
###задачи - это процесс формулирования назначения программы и основных требований к ней.
+: Постановка
ПФФ № 15 Открытое Стандартное
### программы - это полное и точное описание функций и ограничений программы.
+: Спецификация
ПФФ № 16 Открытое Стандартное
### программы - это процесс разработки структурной схемы программного обеспечения с проектированием компонентов и их взаимосвязей.
+: Проектирование
ПФФ № 17 Открытое Стандартное
### программы - это процесс программирования компонентов программы на языке программирования, их тестирования и отладки.
+: Реализация
ПФФ № 18 На соответствие Стандартное
Соответствие между этапами и результатом работы
1: Тестирование | A: Обнаружение ошибок |
2: Отладка | B: Исправление ошибок |
C: Приемка программы |
ПФФ № 19 Закрытое Стандартное
Основные способы записи алгоритма решения задачи:
+: способ блок-схем
+: алгоритмические языки
-: язык XML
-: язык HTML
-: унифицированный язык моделирования
ПФФ № 20 Закрытое Сложное
Системные программные средства:
+: операционные системы
-: СУБД
-: электронные таблицы
ПФФ № 21 На соответствие Стандартное
Соответствие между критериями качества программы и пояснением:
1: Мобильность | A: Независимость от программных и технических средств |
2: Надежность | B: Устойчивость в работе |
3: Эффективность | C: Оценка расходов вычислительных ресурсов |
4: Дружественность | D: Обеспечение дружественного интерфейса для работы пользователя |
5: Модифицируемость | E: Способность к внесению изменений |
F: Возможность интеграции с другими программами |
ПФФ № 22 Закрытое Стандартное
Классификация программных продуктов по функциональному признаку:
+: системные
-: бухгалтерские
+: прикладные
-: сервисные
-: экспертные
ПФФ № 23 На соответствие Базовое
Соответствие между группами и типами программных продуктов:
1: Системные | A: Операционные системы, оболочки и утилиты |
2: Прикладные | B: Среды разработки, системы программирования, отладочные средства, CASE-средства |
C: Автоматизированные системы управления технологическими процессами реального времени |
ПФФ № 24 Закрытое Сложное
Среды разработки программ:
+-: Visual C++
-: Rational Rose
+: Delphi
-: Windows XP
-: UML
ПФФ № 25 Закрытое Стандартное
Среда разработки Microsoft Studio 2005 служит для создания программ на языках программирования:
+: C++ и C#
-: Ada
+: Basic и Java
-: Pascal
-: Perl
ПФФ № 26 Закрытое Стандартное
Отличие модели программирования в Windows от MS DOS:
+: обработка сообщений
-: символьный интерфейс, управляемый клавиатурой
-: обращение ко всем аппаратным средствам вывода
ПФФ № 27 Открытое Стандартное
### интерфейс - это совокупность программных и аппаратных средств, обеспечивающих взаимодействие пользователя с компьютером.
+: Пользовательский
ПФФ № 28 Закрытое Сложное
Типы пользовательских интерфейсов:
+: меню и со свободой навигацией
+: прямого манипулирования
-: контекстное меню
-: окна
-: сообщения
ПФФ № 29 Открытое Стандартное
### - это регламентированный обмен информацией между пользователем и компьютером в реальном масштабе времени.
+: Диалог
ПФФ № 30 Закрытое Сложное
Типы диалога:
+: управляемые программой
-: табличной формы
+: управляемые пользователем
-: фразовые
-: директивные
ПФФ № 31 Закрытое Сложное
Формы диалога:
+: фразовая и директивная
-: управляемая программой
-: меню
-: управляемая пользователем
+: табличная
ПФФ № 32 На соответствие Базовое
Соответствие между технологией пользовательских интерфейсов WIMP и элементами графических интерфейсов:
1: W - Windows | A: Окна |
2: I - Icons | B: Пиктограммы |
3: M - Mouse | C: Мышь |
4: P – Pop-up | D: Всплывающие меню |
E: Меню |
ПФФ № 33 Закрытое Стандартное
Классификация окон:
+: приложения и диалога
-: всплывающие
-: выпадающие
+: меню и информационные
-: пиктограммы
ПФФ № 34 Закрытое Стандартное
Классификация пиктограмм:
+: программные
-: меню
+: панели инструментов
-: всплывающие
-: выпадающие
ПФФ № 35 На последовательность Базовое
Последовательность выполнения программ при решении задачи на ЭВМ:
1. Редактор
2. Компилятор
3. Компоновщик
4. Загрузчик
ПФФ №36 Открытое Стандартное
Язык С - язык создания операционной системы ###.
+: UNIX
ПФФ №37 Открытое Базовое
Язык ### был разработан Виртом для изучения процедурного программирования в университетах.
+: Pascal
ПФФ №38 Открытое Сложное
Язык Ada, позволяющий программистам определять множество действий, выполняющихся параллельно, обладает возможностью ###.
+: многозадачность#$#
ПФФ №39 Открытое Стандартное
Программа ### в языке С++ выполняется перед началом этапа компиляции.
+: препроцессор
ПФФ № 40 Закрытое Базовое
Программа, объединяющая результаты работы компилятора с библиотечными функциями для создания исполняемого модуля, называется:
-: компилятор
-: редактор
+: компоновщик
ПФФ № 41 Открытое Базовое
Выполнение программы на C++ начинается с функции ###.
+: main()
ПФФ № 42 Открытое Базовое
Каждый оператор заканчивается символом ###.
+:;
ПФФ № 43 Открытое Стандартное
Тело блока в С++ окаймляется символами ###.
+: {}
ПФФ № 44 Закрытое Стандартное
Управляющая последовательность, которая вызывает перемещение курсора к началу следующей строки, является:
-: \t
+: \n
-: \r
ПФФ № 45 На соответствие Сложное
Соответствие между стандартными типами данных и их значениями:
1: char | A: 0-256 |
2: short int | B: -32768-+32767 |
3: unsigned short int | C: 0-65536 |
4: int и long int | D: -2*10^9-+2*10^9 |
5: unsigned long int | E: 0-4*10^9 |
6: float | F: 1.28*e-38-3.4*e38 |
7: double | G: 2.2*e-308-1.8*e308 |
H: 0-127 |
ПФФ № 46 Закрытое Стандартное
Операторы, которые прибавляют 1 к целой переменной x:
- x=1;
+: x++;
-: --x;
+: x+=1;
-: x=1-x;
ПФФ № 47 Закрытое Стандартное
Операторы, которые прибавляют 1 к целой переменной x:
- x=1;
+: ++x;
-: --x;
+: x=x+1;
-: x=1-x;
ПФФ № 48 На соответствие Сложное
Соответствие между спецификаторами и названиями классов памяти
1: extern | A: Внешний |
2: static (вне блока) | B: Внешний статический |
3: auto | C: Внутренний |
4: register | D: Внутренний регистровый |
5: static (внутри блока) | E: Внутренний статический |
6: new-delete | F: Динамический |
G: Статический |
ПФФ № 49 Открытое Сложное
Локальная переменная функции сохраняет свое значение между вызовами функции, если она объявлена со спецификатором ###.
+: static
ПФФ № 50 Закрытое Стандартное
Имеются области действия идентификатора:
+: программа
-: оператор
+:файл
+: блок и функция
-: оператор
ПФФ № 51 Закрытое Стандартное
Программы можно конструировать с помощью трех типов управляющих структур:
+: следования
-: ввода
-: вывода
+: ветвления
+: повторения
ПФФ №52 Открытое Стандартное
Структура ветвления (выбора) ### используется для выполнения двух действий.
+: if#$#else
ПФФ № 53 Закрытое Базовое
Повторение операторов заданное число раз называется повторением:
-: с постусловием
+: управляемым счетчиком
-: с предусловием
+: определенным заранее
-: итерации
ПФФ № 54 Закрытое Базовое
Заранее не известное число повторений группы операторов можно запрограммировать с использованием:
- счетчика
+: метки (флага)
-: структуры ветвления
ПФФ №55 Открытое Стандартное
Структура ветвления (выбора) ### используется для выполнения многих действий.
+: switch
ПФФ № 56 На соответствие Сложное
Соответствие между описаниями структуры for и изменениями управляющей переменной:
1: for(int i=1; i<=10; i++) | A: i от1 до 10 с шагом 1 |
2: for(int i=10; i>=1; i--) | B: i от10 до 1 с шагом -1 |
3: for(int i=7; i<=77; i+=7) | C: i от7 до 77 с шагом 7 |
4: for(int i=20; i>=2; i-=2) | D: i от20 до 2 с шагом -2 |
E: i от0 до 9 с шагом 1 |
ПФФ № 57 Открытое Стандартное
Указатель – это переменная, которая содержит ### другой переменной.
+: адрес
ПФФ № 58 Открытое Стандартное
### – это переменная, которая является альтернативным именем другой переменной.
+: Ссылка
ПФФ № 59 Открытое Стандартное
Операция ### – это операция, которая присваивает адрес переменной указателю.
+: адресации
ПФФ № 60 Открытое Стандартное
Операция ### – это операция, которая извлекает значение по адресу, имеющемуся в указателе.
+: разадресации
ПФФ № 61 Закрытое Базовое
Существуют два способа доступа к данным по…
+: имени переменной
- значению
+: адресу с помощью указателя или ссылки
-: типу
-: области действия
ПФФ № 62 Закрытое Сложное
Объявление и инициализация указателя:
+: int tabn, *p=&tabn;
-: int tabn, &r=tabn;
-: int tabn, h=tabn;
ПФФ № 63 Закрытое Сложное
Объявление и инициализация ссылки:
-: int tabn, *p=&tabn;
+: int tabn, &r=tabn;
-: int tabn, h=tabn;
ПФФ № 64 Открытое Базовое
### - это поименованная совокупность данных, состоящая из фиксированного числа элементов одинакового типа.
+: Массив
ПФФ № 65 Закрытое Базовое
Элементы массива имеют одни и те же:
+: имя
-: значение
-:индекс
+: тип
-: адрес
ПФФ № 66 Открытое Стандартное
### - это поименованная совокупность данных, состоящая из фиксированного числа компонентов разных типов.
+: Структура
ПФФ № 67 Открытое Стандартное
Процесс упорядоченного размещения элементов в массиве называется ###
+: сортировк#$#
ПФФ № 68 Открытое Стандартное
Определение структуры начинается с ключевого слова ###.
+: struct
ПФФ № 69 Закрытое Стандартное
Типы данных, определяемые пользователем:
+: структуры
-: массивы
+: объединения и перечисления
-: указатели
-: списки
ПФФ № 70 Открытое Сложное
### - это совокупность данных из фиксированного числа компонентов разных типов с активным только одним компонентом (одно поле).
+: Объединение
ПФФ № 71 Открытое Сложное
### - это упорядоченная последовательность идентификаторов пользователя, принимаемых переменной, имеющих целочисленные значения
+: Перечисление
ПФФ № 72 Закрытое Базовое
Прототип функции:
+: заголовок функции без тела функции
-: заголовок и тело функции
-: оператор вызова функции
ПФФ № 73 Закрытое Базовое
Определение функции:
-: заголовок функции без тела функции
+: заголовок и тело функции
-: оператор вызова функции
ПФФ № 74 Закрытое Сложное
Существуют два способа передачи параметров функции по…:
-: адресу
+: значению
-: указателю
+: ссылке
-: переменной
ПФФ № 75 Закрытое Стандартное
Переменная, которая определена внутри функции или блока называется…
-: глобальной
+: локальной
-: внешней
ПФФ № 76 Открытое Стандартное
Переменная, объявленная вне блока или функции, называется ###
+: глобальн#$#
ПФФ № 77 Открытое Базовое
Оператор ### используется для передачи значения из вызываемой функции обратно в вызывающую функцию.
+: return
ПФФ № 78 Открытое Стандартное
Слово ### используется для указания, что функция не возвращает значения через оператор return или не имеет параметров.
+: void
ПФФ № 79 Закрытое Сложное
Имеются способы возвращения управления из вызванной функции в вызывающую функцию:
-: break;
+: return
-: exit
-: continue
+: скобка конца функции
ПФФ № 80 Открытое Стандартное
Функция, которая вызывает сама себя называется ###.
+: рекурсивн#$#
ПФФ № 81 Открытое Стандартное
Операция ### динамически выделяет память для объекта указанного типа.
+: new
ПФФ № 82 Закрытое Базовое
Основные виды списков:
+: стеки и очереди
-: массивы
-: структуры
+: деревья
-: объединения
ПФФ № 83 Открытое Сложное
### структуры данных – это наборы данных, размеры которых нарастают и сокращаются во время выполнения программы.
+: Динамическ#$#
ПФФ № 84 Открытое Стандартное
### - это наборы данных (узлы), связанные при помощи связующих указателей в линейную структуру данных.
+: Списки
ПФФ № 85 Закрытое Сложное
Правило стека:
-: первый пришел – первый ушел
+: первый пришел – последний ушел
-: любой пришел – любой ушел
ПФФ № 86 Закрытое Сложное
Правило очереди:
+: первый пришел – первый ушел
-: первый пришел – последний ушел
-: любой пришел – любой ушел
ПФФ № 87 Закрытое Базовое
Программа на C++ для операций потокового ввода-вывода должна включать заголовочный файл:
+: iostream.h
-: conio.h
-: math.h
ПФФ № 88 Закрытое Стандартное
Программа на C++ для использования параметризованных манипуляторов должна включать заголовочный файл:
-: iostream.h
-: fstream.h
+: iomanip.h
ПФФ № 89 Закрытое Стандартное
Манипулятор потока осуществляет переход на новую строку в выходном потоке и сброс выходного потока:
-: setw
+: endl
-: setprecision
ПФФ № 90 Открытое Сложное
Вывод в стандартный поток ошибок направляется в объекты потоков ###.
+:cerr
ПФФ № 91 Закрытое Стандартное
Для операции извлечения из входного потока используется символ:
+: >>
-: <<
-: >
ПФФ № 92 Закрытое Стандартное
Для операции вставки в выходной поток используется символ:
-: >>
+: <<
-: >
ПФФ № 93 Закрытое Базовое
Обычно связан с клавиатурой поток класса:
-: cout
+: cin
-: cerr
ПФФ № 94 Закрытое Базовое
Обычно связан с дисплеем поток класса:
-: cin
+:cout
ПФФ № 95 Закрытое Стандартное
Символы для операций извлечения и вставки:
-: ==
+: >>
-: >
-: <
+: <<
ПФФ № 96 Открытое Базовое
Программа на C++ для управления обработкой файлов потокового ввода-вывода должна включать заголовочный файл ###.
+: fstream.h
ПФФ № 97 Открытое Стандартное
### - это группа связных записей
+:Файл
ПФФ № 98 Открытое сложное
### данных- это группа связных файлов
+:База
ПФФ № 99 Закрытое Сложное
Основные методы процедурного программирования:
+: функциональная декомпозиция
-: инкапсуляция
-: наследование
+: модульное и структурное программирование
-: полиморфизм
ПФФ № 100 На последовательность Сложное
Последовательность методов процедурного программирования:
1. Функциональная декомпозиция
2. Модульная организация
3. Структурное программирование
ПФФ № 101 Закрытое Сложное
Понятия объектно - ориентированного программирования:
-: функциональная декомпозиция
+: инкапсуляция
+: наследование
-: модульное программирование
+: полиморфизм
ПФФ № 102 На последовательность Сложное
Последовательность основных этапов объектно - ориентированного программирования:
1. составление начальной структурной схемы программы как иерархию классов и определение структуры классов
2. реорганизация иерархии классов и построение структурной схемы программы
3. проектирование интерфейсов классов
4. программирование классов сверху-вниз
Заключение
Целью дисциплины было формирование у студентов теоретических знаний и практических навыков в области технологии программирования.
В результате изучения дисциплины студенты ЗНАЮТ методы и этапы технологии программирования, методы процедурного и объектно-ориентированного программирования, визуальное программирование в Windows.
Изучен материал по следующим темам рабочей программы:
1. «Технология программирования и этапы ее развития» - рассматривается понятие технологии программирования и этапы ее развития, эволюция программного обеспечения.
2. «Жизненный цикл программы и основные этапы решения задач
на ЭВМ» - 2 посвящена изучению жизненного цикла программы и основным этапам решения задач на ЭВМ: постановка задачи и спецификация программы, проектирование и реализация программы.
3. «Среды разработки программ» - рассматривается среда разработки программ: основные понятия Visual C++.NET, модели программирования в MS-DOS и Windows.
4. «Диалоговые программы» - изучает типы пользовательских интерфейсов, классификацию диалогов и основные компоненты графических пользовательских интерфейсов.
5. «Программа на языке высокого уровня» - уделяется внимание структуре программ и функциям, стандартным типам данных, библиотекам языка и,особенно, классам памяти.
6. «Представление управляющих структур программирования» - рассматривается конструирование программ с использованием основных управляющих структур: следования, ветвления и повторения.
7. «Адресные типы данных» - изучаются указатели и ссылки.
8. «Структуры данных фиксированного размера» - рассмотрены массивы, а также типы данных, определяемых пользователем (структуры, объединения, перечисления).
9. «Функции (процедуры)» - рассматриваются основные понятия функций (процедур): определение, прототип и вызов функции, передача параметров по значению и по ссылке, программирование рекурсивных функций.
10. «Динамические структуры данных» - изучает динамические структуры данных: основные виды и способы реализации списков, динамическое выделение памяти.
11. «Ввод/вывод данных» - рассматриваются видео функции библиотеки conio.h и функции библиотеки потокового ввода вывода iostream.h.
12. «Обработка файлов данных» - затрагивает вопросы обработки файлов данных: понятия записи, файла данных и способы доступа, операции и средства обработки файлов, контроль операций обработки файлов.
13. «Технология процедурного программирования» - на примере информационной мини-системы рассматриваются этапы технологии процедурного программирования.
14. «Введение в технологию объектно-ориентированного
программирования» - вводит в технологию объектно-ориентированного программирования, рассматривая основные понятия этого метода и этапы разработки программ.
Выполнив большой объем лабораторных работ, студенты УМЕЮТ разрабатывать программы задач на Visual C++.NET, программы информационных систем в экономике и управлении, проводить тестирование и отладку программ.
Студенты ИМЕЮТ ПРЕДСТАВЛЕНИЕ об основных понятиях объектно-ориентированного программирования: инкапсуляции, наследования, полиморфизма, о преимуществах и недостатках этих методов, об основных этапах технологии объектно-ориентированного программирования, о перспективах компонентных технологий и CASE-технологий.
Примеры реализованы средой программирования Microsoft Visual C++ 2005. В примерах добавляемые программистом строки программы в сгенерированный программный код помечены жирным шрифтом. Объяснения представлены в виде комментарий в текстах программ.
Список литературы
Основная литература:
1. Иванова Г.С. Технология программирования: Учебник для вузов.-3-е изд; перераб. и доп.-М.: Изд-во МГТУ им. Баумана, 2006
2. Камаев В.А., В.В. Костерин Технологии программирования: Учебник/2-е изд.-М., Высш. шк.,2006
3. Гильберт С., Маккарти Б. Самоучитель Visual C++ в примерах. Учебник: Пер. с англ. –К.: Изд. «ДиаСофт», 2000.
4. Грегори К. Использование Visual C++.NET. Спец. изд.: Пер. с англ. – М.: Издательский дом «Вильямс», 2002.
5. Павлов Ф.Ф. Технология программирования на Visual C++: Учеб. пособие. - СПб.: СПбГИЭУ, 2007.
6. Павлов Ф.Ф. Методы программирования в экономике: Учеб. пособие. - СПб.: СПбГИЭУ, 2004.
7. Технология программирования: Методические указания к выполнению лабораторного практикума на Visual C++.NET 2003: (специальность 230201). Сост. Ф.Ф. Павлов.- СПб.: СПбГИЭУ, 2008.
Дополнительная литература:
8. Баженова И.Ю. C++ & Visual Studio.NET. Самоучитель программиста. – М.: КУДИЦ-ОБРАЗ, 2003.
9. Дейтел Х, Дейтел П. Как программировать на С++: Пер. с англ. –М.: ЗАО «Изд. БИНОМ», 2001.
10. Кораблев В. Самоучитель Visual C++.NET. – СПб.: Питер; Киев: Изд. Группа BHV, 2004.
11. Мешков А.В., Тихомиров Ю.В. Visual C++ и MFC: Пер. с англ. –СПб.: БХВ-Петербург, 2001.
12. Олафсен Ю., Скрайбнер К., Уайт К. и др. Visual C++ и MFC. Энциклопедия пользователя: Пер. с англ.–К.:Изд. «ДиаСофт», 2000.
13. Основы алгоритмизации и языки программирования: практикум на С++. Сост. Ф.Ф. Павлов.- СПб.: СпбГИЭА, 1997.
14. Павлов Ф.Ф. Высокоуровневые методы программирования: практикум на Visual C++: Учеб. пособие.- СПб.: СПбГИЭУ, 2001.
15. Павлов Ф.Ф. Высокоуровневые методы информатики и программирования: Учеб. пособие.- СПб.: СПбГИЭУ, 2001.
16. Павлов Ф.Ф. Высокоуровневые методы информатики и программирования: лабораторный практикум на Visual C++.NET 2003: СПб.: СПбГИЭУ, 2007.
17. Павлов Ф.Ф. Программирование задач производственного менеджмента: Учеб. пособие.- СПб.: СПбГИЭА, 1997.
18. Пирогов В.Ю. Программирование на Visual C++.NET. – СПб.: БХВ-Петербург, 2003.
19. Пономарев В.В. Программирование на C++/C# в Visual Studio.NET 2003. – СПб.: БХВ-Петербург, 2004.
20. Разработка приложений на Microsoft Visual C++ 6.0. Учебный курс: Официальное пособие Microsoft для самостоятельной подготовки/Пер. с англ. – М.: Издательско-торговый дом «Русская Редакция», 2000.
21. Савитч У. Язык С++. Курс объектно- ориентированного программирования, Пер. с англ.-М.: Изд. дом «Вильямс», 2001.
Терминологический словарь
База данных – это группа связных файлов.
Визуальное программирование – разработка программ с использованием диалоговой визуальной среды, имеющей интерактивные средства решения типовых задач, и позволяющей в диалоге с программистом создавать готовые фрагменты исходного кода.
Глобальная переменная - переменная, объявленная вне блока или функции.
Диалог - регламентированный обмен информацией между пользователем и компьютером в реальном масштабе времени.
Динамические структуры данных – наборы данных, размеры которых нарастают и сокращаются во время выполнения программы.
Динамическое связывание – связывание вызова функции с определением функции во время выполнения программы.
Дружественность - обеспечение дружественного интерфейса для работы пользователя.
Жизненный цикл программы - совокупность процессов от создания программы до окончания ее эксплуатации.
Запись – это группа связных полей.
Инкапсуляция - объединение данных и функций для работы с этими данными в абстрактные типы данных - классы.
Класс - совокупность элементов-данных различных типов и элементов-функций для их обработк<