Академический Документы
Профессиональный Документы
Культура Документы
Объектно-ориентированное программирование
(наименование дисциплины)
Направление подготовки
(код и наименование)
Профиль
(код и наименование)
Программа подготовки
(академический, прикладной бакалавриат)
Москва 2020
Содержание
1. Введение .................................................................................................... 4
2. Классификация задач ............................................................................... 5
3. Этапы решения задачи ............................................................................. 7
4. Aрхитектура программы .......................................................................... 9
4.1. Схема взаимосвязи объектов ............................................................... 9
4.2. Схема взаимодействия объектов ....................................................... 10
4.3. Способы взаимодействия объектов ................................................... 11
4.4. Алгоритм решения задачи .................................................................. 12
4.5. Классификация сложности задания .................................................. 12
5. Способы описания этапов ..................................................................... 13
5.1. Общие пояснения ................................................................................ 13
5.2. Метод решения .................................................................................... 13
5.2.1. Перечень объектов ........................................................................... 15
5.3. Описание алгоритма............................................................................ 16
5.3.1. Последовательность изложения материала ................................... 16
5.3.2. Иерархия объектов ........................................................................... 16
5.3.3. Взаимодействия объектов ............................................................... 17
5.3.4. Алгоритм функции ........................................................................... 17
5.3.5. Алгоритм метода объекта................................................................ 18
5.4. Блок-схема алгоритма ......................................................................... 19
5.4.1. Последовательность рисования схем ............................................. 19
5.4.2. Схемы алгоритмов функций и методов ......................................... 19
5.5. Код программы .................................................................................... 19
5.6. Тестирование ....................................................................................... 20
5.6.1. Пояснения к тестированию ............................................................. 20
5.6.2. Метод эквивалентного разбиения .................................................. 21
5.6.3. Анализ граничных значений ........................................................... 25
2
6. Ориентированный нагруженный граф ................................................. 28
7. Класс ........................................................................................................ 31
7.1. Виртуальный объект ........................................................................... 31
7.2. Описание класса .................................................................................. 32
7.3. Распределение частей класса по файлам .......................................... 33
7.4. Взаимодействие с объектом ............................................................... 34
7.5. Дерево иерархии объектов ................................................................. 34
8. Фрагменты программной реализации .................................................. 36
8.1. Конструирование программы ............................................................ 36
8.2. Реализация ввода и вывода ................................................................ 36
8.3. Базовый класс ...................................................................................... 36
8.4. Форма вывода данных относительно дерева иерархии и объектов38
8.5. Класс приложение ............................................................................... 38
8.6. Основная функция main ( ) ................................................................. 39
9. Отчет по лабораторной (контрольной) работе .................................... 40
9.1. Общие пояснения ................................................................................ 40
10. Список учебников и интернет ресурсов .............................................. 41
3
1. ВВЕДЕНИЕ
2. КЛАССИФИКАЦИЯ ЗАДАЧ
6
3. ЭТАПЫ РЕШЕНИЯ ЗАДАЧИ
7
Если выделить самостоятельно и учесть особенности используемой АСО
«Аврора», то этапы решения задачи в ООП выглядят следующим образом;
Объектно-ориентированное программирование
Постановка задачи (что)
Используемые методы решения (чем).
Используемые конструкции алгоритмического языка, если требование за-
дано в постановке задачи (чем).
Используемые стандартные функции или классы, если требование задано в
постановке задачи (чем).
Перечень используемых согласно постановке задачи пользовательских
функций (чем).
Перечень используемых объектов (чем).
Архитектура программы – системы, схема иерархической взаимосвязи объ-
ектов. (как)
Связи и правила взаимодействия объектов (как).
Алгоритмы функций (как).
Алгоритмы методов объектов (как).
Схемы алгоритмов реализованных в функциях.
Схемы алгоритмов реализованных в методах объектов.
Код реализации пользовательских функций.
Код описания классов объектов (заголовочная часть и часть реализации).
Код конструирования системы, иерархической взаимосвязи объектов и
установка связей взаимодействия объектов (реализуется в методе объекта
приложение, см. п.п. 8.5).
Код основного алгоритма отработки приложения (реализуется в методе
объекта приложение, см. п.п. 8.5).
Определение множества необходимых тестов.
Проектирование тестов.
Тестирование.
Отладка.
Доработка документации.
Генерация отчета.
Передача задачи на контрольное тестирование и проверку преподавателю.
8
− последовательно выполнять разработку программы для решения по-
ставленной задачи согласно заданным этапам;
− корректно излагать текст в содержательной части этапов;
− соблюдать взаимно однозначное соответствие излагаемого матери-
ала поэтапно, сверху вниз;
− освоить навык разработки программы с соблюдением определенных
технологических правил;
− уметь корректно читать код программы (тренажер на чтение кода);
− уметь составлять необходимое количество тестов для поиска макси-
мального количества потенциальных ошибок в программе;
− уметь целостно, логически непротиворечиво и терминологически
корректно излагать содержание всех этапов выполненной работы.
4. AРХИТЕКТУРА ПРОГРАММЫ
4.1. Схема взаимосвязи объектов
9
Схема описания архитектуры программы имеет следующий вид
Объект 3
Объект 4
Объект 2
Объект 5
Объект 6
Объект 7
Объект 8
Объект 9
Объект 10
Рисунок 1
10
Приложение (программа) Внешняя среда
Объект 1
Объект 3
Объект 4
Объект 2
Объект 5
Объект 6
Объект 7
Объект 8
Объект 9
Объект 10
Рисунок 2
11
4.4. Алгоритм решения задачи
12
5. СПОСОБЫ ОПИСАНИЯ ЭТАПОВ
5.1. Общие пояснения
5.2.1.Перечень объектов
15
5.3. Описание алгоритма
5.3.1.Последовательность изложения материала
5.3.2.Иерархия объектов
16
5.3.3.Взаимодействия объектов
5.3.4.Алгоритм функции
18
5.4. Блок-схема алгоритма
5.4.1.Последовательность рисования схем
19
Где CLASS_NAME заменяется на «имя класса» набранном в верхнем ре-
гистре.
Текст кода пишется с соблюдением требований структурного программи-
рования. Обязательно задается иерархия вложенности операторов и фрагментов
программного кода.
Блок или составной оператор, заключенный в фигурных скобках, всегда
пишется с новой строки. На первой строке «{«. На последующих строках, с со-
блюдением необходимого сдвига операторы из состава блока или составного
оператора. На последней строке «}».
Часть операторов и фрагменты программ снабжается пояснительными
комментариями.
Идентификаторы переменных, объектов, классов, методов, функций и т.д.
составляются так, чтобы отражали функциональное назначение.
5.6. Тестирование
5.6.1.Пояснения к тестированию
21
следует разрабатывать так же тщательно, как для правильных и предусмот-
ренных.
Выделение классов эквивалентности представляет собой в значительной
степени эвристический процесс. При этом существует ряд правил:
1. Если входное условие описывает область значений (например, «целое
данное может принимать значения от 1 До 999»), то определяются один правиль-
ный класс эквивалентности (1 <= значение целого данного <= 999) и два непра-
вильных (значение целого данного < 1 и значение целого данного > 999).
2. Если входное условие описывает число значений (например, «в автомо-
биле могут ехать от одного до шести человек»), то определяются один правиль-
ный класс эквивалентности и два неправильных (ни одного и более шести чело-
век).
3. Если входное условие описывает множество входных значений и есть
основание полагать, что каждое значение программа трактует особо (например,
«известны способы передвижения на АВТОБУСЕ, ГРУЗОВИКЕ, ТАКСИ, ПЕШ-
КОМ или МОТОЦИКЛЕ»), то определяется правильный класс эквивалентности
для каждого значения и один неправильный класс эквивалентности (например,
«НА ПРИЦЕПЕ»).
4. Если входное условие описывает ситуацию «должно быть» (например,
«первым символом идентификатора должна быть буква»), то определяется один
правильный класс эквивалентности (первый символ — буква) и один неправиль-
ный (первый символ — не буква).
5. Если есть любое основание считать, что различные элементы класса эк-
вивалентности трактуются программой неодинаково, то данный класс эквива-
лентности разбивается на меньшие классы эквивалентности.
Построение тестов.
Второй шаг заключается в использовании классов эквивалентности для по-
строения тестов. Этот процесс включает в себя:
1. Назначение каждому классу эквивалентности уникального номера.
2. Проектирование тестов, каждый из которых покрывает как можно боль-
шее число непокрытых правильных классов эквивалентности, пока все правиль-
ные классы эквивалентности не будут покрыты тестами.
З. Проектирование тестов, каждый из которых покрывает один и только
один из непокрытых неправильных классов эквивалентности, пока все
22
неправильные классы эквивалентности не будут покрыты тестами.
Причина покрытия неправильных классов эквивалентности индивидуаль-
ными тестами состоит в том, что определенные проверки с ошибочными входами
скрывают или заменяют другие проверки с ошибочными входами. Например,
требование в постановке задачи устанавливает «тип книги при поиске (ВЫЧИС-
ЛИТЕЛЬНАЯ ТЕХНИКА, ПРОГРАММИРОВАНИЕ или ОБЩИЙ) и количество
(1-9999)». Тогда тест
XYZ 0
отображает два ошибочных условия (неправильный тип книги и количе-
ство) и, вероятно, не будет осуществлять проверку количества, так как про-
грамма может ответить: «ХУZ — НЕСУЩЕСТВУЮЩИЙ ТИП КНИГИ» и не
проверять остальную часть входных данных.
Входные данные.
Три целых числа разделенных пробелом.
Значение каждого целого числа должно принадлежать интервалу [1, 100].
Выходные данные.
Если стороны треугольника заданы корректно, то первая строка:
P = «периметр треугольника»
Вторая строка:
S = «площадь треугольника»
24
Входные значения:
468
Ожидаемые выходные значения:
P = 18
S = 11.6189
27
6. ОРИЕНТИРОВАННЫЙ НАГРУЖЕННЫЙ ГРАФ
28
Имя вершины
[ Линейные операторы 0 ]
Предикат 1
Имя вершины 1
[ Линейные операторы 1 ]
Предикат 2
Имя вершины 2
[ Линейные операторы 2 ]
[ Предикат N ]
Имя вершины N
[ Линейные операторы N ]
Рисунок 3
29
Правило обхода комплекса.
Вход в комплекс осуществляется только через вершину наименования ком-
плекса. После входа отрабатывают операторы вершины комплекса. Далее, по
порядку, сверху вниз проверяются предикаты. Если предикат «Предикат i» при-
нимает значение «истина», то отрабатывается «Линейные операторы i» и проис-
ходит переход к комплексу «Имя вершины i». Если ни один из предикатов не
принимает значение «истина», то фиксируется ошибка. Если на ребре предикат
отсутствует, значение считается истинным и можно выполнить движение по
ребру.
Графическое представление комплекса однозначно отображается в таб-
лице. Ниже приведено правило взаимно однозначного отображения графиче-
ского изображения комплекса в табличной форме.
Номер Предикат Действие Номер пе- Коммента-
пункта рехода рии
Имя вер- Линейные операторы 0
шины
Предикат 1 Линейные операторы 1 Имя вер-
шины 1
Предикат 2 Линейные операторы 2 Имя вер-
шины 2
… … …
Предикат N Линейные операторы N Имя вер-
шины N
Таблица 2
30
1
2
sum = 0;
i<n
i = 0; 2
sum += a [ i ];
i ++;
Рисунок 4
7. КЛАСС
7.1. Виртуальный объект
31
этих жизненных циклов совпадают.
Схема жизненного цикла виртуального объекта.
Рисунок 5
32
class «имя класса»
{
[private:]
«список скрытых элементов класса»
public:
«список доступных элементов класса»
protected:
«список защищенных элементов класса»
};
Здесь «имя класса» — это имя того класса, которому принадлежит опреде-
ляемый метод.
34
root
ob_1
ob_2
ob_3
ob_4
ob_5
ob_6
ob_7
Рисунок 6
35
8. ФРАГМЕНТЫ ПРОГРАММНОЙ РЕАЛИЗАЦИИ
8.1. Конструирование программы
#include <iostream>
using namespace std;
37
8.4. Форма вывода данных относительно дерева иерархии и
объектов
38
#include "cl_base.h"
class cl_application : public cl_base
{
public:
void bild_tree_objects ( );
int exec_app ( );
};
#include "cl_application.h"
int main ( )
{
cl_application ob_application ( NULL ); // объявление объекта приложение
39
9. ОТЧЕТ ПО ЛАБОРАТОРНОЙ (КОНТРОЛЬНОЙ) РАБОТЕ
9.1. Общие пояснения
40
10. СПИСОК УЧЕБНИКОВ И ИНТЕРНЕТ РЕСУРСОВ
б) дополнительная литература:
1. Ашарина И.В. Объектно-ориентированное программирование на С++:
лекции и упражнения. Учебное пособие для ВУЗов. Издательство: Горя-
чая линия - Телеком. Москва, 2014г. 335 стр.
2. Ашарина И.В. Язык С++ и объектно-ориентированное программирование
в С++. Лабораторный практикум. Учебное пособие для ВУЗов. Издатель-
ство: Горячая линия - Телеком. Москва, 2015г. 231 стр.
3. Шилдт Г. Полный справочник по С++ [Текст] / Пер. с англ.. — М.: Виль-
ямс, 2008. — 796 с.. — Библиогр.: с https://library.mirea.ru/mgupi/55972
41