Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Ориентированный нагруженный граф




МЕТОДИЧЕСКОЕ ПОСОБИЕ ДЛЯ ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ ПО ДИСЦИПЛИНЕ

Объектно-ориентированное программирование

(наименование дисциплины)

Направление подготовки

 

(код и наименование)

 
Профиль
 

(код и наименование)

 

Форма обучения

очное

 

(очная, очно-заочная, заочная)

 

Программа подготовки

 

(академический, прикладной бакалавриат)

 

 

Квалификация выпускника

Бакалавр

 

 
             

 

Москва 2018


 


Содержание

1.    Aрхитектура программы.. 4

2.    Ориентированный нагруженный граф. 8

3.    Класс. 14

3.1.   Виртуальный объект. 14

3.2.   Описание класса. 14

3.3.   Распределение частей класса по файлам. 15

3.4.   Взаимодействие с объектом. 16

3.5.   Реализация парадигмы ООП.. 16

3.6.   Дерево иерархии объектов. 17

4.    Фрагменты программной реализации на языке С++. 19

4.1.   Базовый класс. 19

4.2.   Класс приложение. 20

4.3.   Основная функция main. 21

5.    Отчет по лабораторной работе. 22

5.1.   Общие пояснения. 22

5.2.   Пояснения к разделу «Постановка задачи». 22

5.3.   Пояснения к разделу «Методы и объекты». 23

5.4.   Пояснения к разделу «Архитектура программы-системы». 23

5.4.1. Пояснения к пункту «Иерархия объектов». 23

5.4.2. Пояснения к пункту «Взаимодействие объектов». 24

5.4.3. Пояснения к пункту «Алгоритм функционирования системы, решение задачи» 24

5.5.   Пояснения к разделу «Схемы». 25

5.5.1. Пояснения к пункту «Схема иерархии наследования классов». 25

5.5.2. Пояснения к пункту «Схема архитектуры программы». 26

5.5.3. Пояснения к пункту «Схема взаимодействия объектов». 27

5.5.4. Пояснения к пункту «Схема алгоритма решения задачи». 28

5.6.   Пояснения к разделу «Код программы». 28

5.7.   Пояснения к разделу «Тестирование». 28

5.8.   Пояснения к разделу «Инструкция для пользователя». 29

 

Aрхитектура программы

 

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

 

Объект–то, что может быть индивидуально описано и рассмотрено.

Система– множество взаимосвязанных и взаимодействующих объектов для решения одной или множества задач (достижения одной или множества целей).

 

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

 

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

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

Первый уровень сложности: взаимодействие допустимо между конструктивно взаимосвязанными объектами и внешней средой.

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

 

Приложение
Объект 1
Объект 10
Объект 3
Объект 4
Объект 6
Объект 5
Объект 7
Объект 2
Объект 8
Объект 9
Внешняя среда

Рисунок 1

 

Внешней среде соответствует:

− клавиатура;

− консоль;

− файл.

 

Для взаимосвязи с внешней средойв код программы добавляется:

 

#include <iostream>

using namespace std;

 

После этого, в составе программыкомпилятором добавляются объект вывода и объектввода. Они организуют обмен данными между консолью и клавиатурой соответственно. Для взаимодействия с другими объектами программы предоставляются стандартные интерфейсы вывода «cuot»и ввода «cin».

Детализированная схема описания архитектуры программы имеет следующий вид.

Приложение (объект класса cl_application)
Объект вывода
Объект 10
Объект 3
Объект 4
Объект 6
Объект 5
Объект 7
Объект 2
Объект 8
Объект 9
Внешняя среда
Объект ввода
Консоль Клавиатура
Файл

Рисунок 2

 

Содержание этапов разработки программы (системы) при объектно-ориентированном программировании отличается от сформулированныхпри процедурном программировании (Таблица 1)

Процедурное программирование Объектно-ориентированное программирование
1 2
Постановка задачи (что) Постановка задачи (что)
Метод решения (чем) Множество объектов. Методы решения. (чем)
Алгоритм решения задачи (как) Архитектура программы-системы, иерархия объектов. Взаимодействие объектов. Алгоритм функционирования, решения задачи (как).
Блок-схема алгоритма Схема иерархии наследования классов. Схема архитектуры программы. Схема взаимодействия объектов. Схема алгоритма решения задачи.
Код программы Код описания классов. Код конструирования системы (архитектуры программы). Код взаимодействия объектов. Код алгоритма решения задачи.
Тестирование и отладка Тестирование и отладка
Доработка документации Доработка документации
Сдача программы и сопроводительной документации Сдача программы и сопроводительной документации

 

Составные части (разделы, пункты) отчета лабораторной работы должны соответствовать содержанию второго столбца таблицы 1.

 

Ориентированный нагруженный граф

 

Для описания:

− иерархии наследственности классов;

− архитектуры программы (системы), иерархии объектов;

− схемы взаимодействия объектов;

− схемы функционирования системы, алгоритма решения задачи;

будем пользоваться ориентированным нагруженным графом.

Элементами ориентированного нагруженного графа являются:

− вершина, которой сопоставляется определенная функциональная нагрузка и наименование;

− ориентированное ребро, соединяющее две вершины, имеющее определенную нагрузку над и под ребром;

− комплекс– это вершина, с исходящими из него определенного количества ориентированных ребер и вершин перехода по данным ребрам.

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

 

Имя вершины
Имя вершины 1
Имя вершины n
Имя вершины 2
[ Текст 1.2 ]
[ Текст 1.1 ]
[ Текст 2.1 ]
[ Текст 2.2]
[ Текст N.1 ]
[ Текст N.2]

Рисунок 3

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

− иерархии наследования классов;

− архитектуры программы.

Пример схемы описания иерархии наследования классов.

 

cl_5
cl_4
cl_base
cl_1
cl_2
cl_3
cl_base
cl_base
public
virtual public
public
private
virtual public
virtual public

Рисунок 4

Графически комплекс вершины, для описания алгоритма выглядит следующим образом:

 

Имя вершины
Имя вершины 1
Имя вершины N
Имя вершины 2
Условие 1
Условие 2
[ Условие N ]
[ Линейные операторы1 ]
[ Линейные операторы 2 ]
[ Линейные операторы N]
[ Линейные операторы 0 ]

Рисунок 5

Рассмотрим подробнее элементы, представленные нарис. 5:

- «Имя вершины» - наименование комплекса. Оно совпадает с наименованием объектаили метки алгоритма.

- «Линейные операторы 0» - процедура вершины комплекса.

- «Условие i» - предикат, условие перехода по ребру. Предикат представляет определенное логическое выражение (i = {1÷N} ).

- «Имя вершины i» - наименование комплекса перехода (i = {1÷N}). Наименование комплекса перехода совпадает c наименованием очередного комплекса согласно алгоритмуили является отметкой завершения алгоритма Æ.

- «Линейные операторы i» - процедуры, выполняемые при переходе по соответствующим ребрам (i = {1÷N} ).

 

Правило обхода комплекса.

Вход в комплекс осуществляется только через вершину наименования комплекса.  После входа отрабатывает процедура вершины комплекса. Далее по порядку сверху вниз проверяются предикаты. Если предикат«Условие i» принимает значение «истина», то отрабатывается процедура«Линейные операторы i» и происходит переход к комплексу «Имя вершины i». Если ни один из предикатов не принимает значение «истина», то фиксируется ошибка. Если на ребре логическое условие отсутствует, значение предиката считается истинным и можно выполнить движение по ребру.

Графическое представление комплекса однозначно отображается в таблице. В таблице 2 приведено правило отображения комплекса.

Таблица 2

Вершина комплекса Предикат Процедуры Вершина перехода
Имя вершины   Линейные операторы 0  
  Условие 1 Линейные операторы 1 Имя вершины 1
  Условие 2 Линейные операторы 2 Имя вершины 2
 
  Условие N Линейные операторы N Имя вершины N

 

В табличном представлении наименование комплекса, состоит из двух частей:

- уникальный номер вершины комплекса;

- имя вершины.

Тогда, в четвертом столбце достаточно указать только уникальный номер вершины комплекса или Æ (завершение алгоритма).

Пример описания алгоритмасхемой нагруженного ориентированного графа.

L_1
L_2
L_2
sum = 0; i = 0;
i < n
sum += a [ i ]; i ++;

Рисунок 6

Допускается нагрузку ребер задавать согласно операторам базового алгоритмического языка С++.

L_1
L_2
L_2
sum = 0;
i = 0; i < n; i ++
sum += a [ i ];

Рисунок 7

Достоинства предложенного описания блок-схем алгоритма:

1) Простота используемых графических элементов.

2) Графическое изображение алгоритма строится слева на право и сверху вниз.

3) Взаимная однозначность реализации кода на языке С++.

4) Возможность и взаимная однозначность представления алгоритма в табличном виде. 

Класс

Виртуальный объект

 

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

Схема жизненного цикла виртуального объекта.

План Описание
Создание. Конструирование
Функционирование
Старт объекта  
Остановка
Демонтаж
Уничтожение

Рисунок 8

Реализация жизненного цикла виртуального объекта на языке С++(Таблица 3)

Описание Класс
Создание Отработка конструктора объекта. Выделение памяти и исходная инициализация.
Старт объекта Завершение работы конструктора объекта. Начало функционирования.
Функционирование Участие объекта в работе (в алгоритме) программы
Остановка Вызов деструктора объекта
Демонтаж Отработка деструктора объекта
Завершение Завершение работы деструктора объекта. Освобождение выделенной объекту памяти.

 

Описание класса

 

Описание класса состоит из двух частей: заголовка и реализации.

Синтаксис описания заголовочной части класса:

 

class«имякласса» {

[private:]

«список скрытых элементов класса»

public:

«список доступных элементов класса»

protected:

«список защищенных элементов класса»

};

 

имякласса ::= идентификатор

элемент класса ::= описание свойства(поля, переменной)

                       ::= описание заголовка метода

 

Синтаксис описаниязаголовка метода:

«типвозвращаемого значения»«имяметода» ( [списокпараметров] );

 

Описание свойств аналогично описанию переменных в языке С.

Часть реализации содержит описание методов класса. Синтаксис описания метода:

 

«типвозвращаемогозначения»«имякласса» :: «имяметода» ( [списокпараметров] )

{

// тело метода (код алгоритма метода)

}

 

Здесь«имякласса»—этоимятогокласса, которомупринадлежитопределяемый метод.

 










Последнее изменение этой страницы: 2018-05-10; просмотров: 170.

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