Объектно-ориентированное программирование
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

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

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

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

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

 

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

  Профиль  

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

 

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

Очное

 

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

 

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

 

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

 

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

Бакалавр

 

               

 

Москва 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.

 

Класс

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

 

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

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

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

Рисунок 8

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

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

 

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

 

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

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

 

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

[private:]

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

public:

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

protected:

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

};

 

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

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

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

 

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

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

 

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

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

 

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

{

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

}

 

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

 

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

 

Обращение к объекту для выполнения определенного метода (реакции) инициируется по:

1. Внешнему событию.

2. Внутреннему событию.

3. Сигналу.

4. Непосредственным вызовом метода объекта.

 

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

 

Требования парадигмы объектно-ориентированного программирования в языке С++ реализовано посредством определенных синтаксических конструкций и механизмов.

Элементы языка С++ для построения программ согласно парадигме ООП (Таблица 4)

Описание объекта Описание класса
Создание объекта Создание объекта на базе определенного класса посредством конструктора объекта
Построение конструкции объекта Наследственность. Включение объектов других классов в описание свойств класса.
Взаимодействие объектов в рамках конструкции объекта Непосредственный вызов метода объекта. Сигнал от объекта Þ обработчик объекта.
Архитектура программы-системы (конструктивное построение) Построение иерархии объектов согласно схеме взаимосвязи объектов в рамках программы
Схема взаимодействия объектов в составе программы-системы Построение интерфейсов между объектами программы согласно схеме взаимодействия. Сигнал от объекта Þ обработчик объекта.
Схема взаимодействия объектов программы с внешней средой Построение интерфейсов между объектами программы и внешней средой согласно схеме. Внешнее (системное) событие Þ обработчик объекта. Обращение к интерфейсу со стороны внешней среды, передача данных (ввод). Обращение к интерфейсу внешней среды со стороны объекта, передача данных (вывод).

 

 

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

 

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

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

Например, пусть имеется следующая иерархия объектов программы.

root
ob_1
ob_2
ob_6
ob_4
ob_3
ob_5
ob_7
 
 
 
 
 
 

Рисунок 9

Вид координаты (идентификации) объекта ob_ 5 на дереве иерархии объектов будет следующим:

/root/ob_3/ob_4/ob_5

 

 

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

Базовый класс

 

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

Базовый класс должен содержать:

− свойства:

− наименование объекта;

− ссылку на головной объект на дереве иерархии объектов;

− перечень ссылок на объектов-потомков.

− методы:

− присвоить имя объекту;

− получить имя объекта;

− определить ссылку на головной объект;

− добавить новый объект в перечне объектов-потомков;

− получить ссылку на объект потомок по имени объекта;

− удалить объект из перечня объектов-потомков.

 

Примерная заголовочная часть базового класса.

 

#include <iostream>

#include <string>

#include <vector>

 

using namespace std;

 

class cl_base

{

public:

cl_base ( cl_base * p_parent = 0 );

 

void set_object_name ( string object_name );

string get_object_name ( );

void set_parent ( cl_base * p_parent );

void add_child  ( cl_base * p_child );

void delete_child ( string object_name );

cl_base * get_child  ( string object_name );

cl_base * get_object ( string object_path );

 

vector < cl_base * > children;  // ссылки на подчиненные объекты

vector < cl_base * > :: iterator it_child;

 

private:

string  object_name;       // наименование объекта

cl_base * p_parent;          // ссылка на головной объект

};

 

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

 

Класс приложения базируется на класс базового объекта. Класс содержит:

− методы:

− построить дерево иерархии объектов;

− запустить приложение;

− вывести дерево иерархии объектов на консоль.

 

Примерная заголовочная часть класса приложения.

 

#include "cl_base.h"

 

class cl_application : public cl_base

{

public:

cl_application ( );

 

void bild_tree_objects ( );

imt  exec_app     ( );

 

void show_object_tree ( );

 

private:

void show_object_next ( cl_base * ob_parent, int i_level );

 

};

 

Вид вывода на консоль дерева иерархии объектов.

root

ob_1

   ob_2

ob_3

   ob_4

       ob_5

   ob_6

       ob_7

 

 

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

 

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

1. Создать объект приложение.

2. Построить дерево объектов.

3. Запустить приложение.

 

#include <iostream>

 

using namespace std;

 

#include "cl_application.h"

 

int main ( )

{

cl_application ob_application;   // объявление объекта приложение

 

ob_application.bild_tree_objects ( ); // создание исходного дерева объектов

   

return ob_application.exec_app   ( ); // запуск функционирования системы

}

 

Общие пояснения

Отчет состоит из:

1. Титульного листа лабораторной работы.

2. Содержания.

 

Содержание представлено в виде следующих разделов и пунктов:

1. Постановка задачи.

2. Методы и объекты.

3. Архитектура программы-системы.

3.1.  Иерархия объектов.

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

3.3.  Алгоритм функционирования системы, решение задачи.

4. Схемы.

4.1.  Схема иерархии наследования классов.

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

4.3.  Схема взаимодействия объектов.

4.4.  Схема алгоритма решения задачи

5. Код программы.

5.1.  Код описания классов .

5.2.  Код конструирования системы.

5.3.  Код взаимодействия объектов.

5.4.  Код алгоритма решения задачи.

6. Тестирование.

7. Инструкция для пользователя.

 

К данной методике прилагается пример оформления отчета лабораторной работы.

 

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

 

Раздел содержит множество пунктов:

− Схема иерархии наследования классов.

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

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

− Схема алгоритма решения задачи.

 

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

 

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

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

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

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

 

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

  Профиль  

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

 

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

Очное

 

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

 

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

 

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

 

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

Бакалавр

 

               

 

Москва 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.

 

Дата: 2018-12-28, просмотров: 273.