Студопедия

КАТЕГОРИИ:

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

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




 

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

Рекомендуется разместить описание класса в двух файлах. Для размещения заголовочной части описания класса используется файл с наименованием класса и расширением «.h». Для размещения части реализации описания класса используется файл с наименованием класса и расширением «.cpp». В начало файла с расширением «.cpp» надо добавить инструкцию:

#include “имя_класса.h”

 

Описание класса можно разместить в одном файле. Заголовочная часть должна располагаться перед описанием части реализации. Рекомендуется в качестве наименования файла использовать имя класса, а расширение «.h».

 

 

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

 

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

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

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

3. Сигналу.

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

 

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

 

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

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

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

 

 

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

 

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

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

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

root
ob_1
ob_2
ob_6
ob_4
ob_3
ob_5
ob_7
 
 
 
 
 
 

Вид координаты (идентификации) объекта 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;          // ссылка на головной объект

};

 

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

 

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

− методы:

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

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

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

 

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

 

#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_applicationob_application;   // объявление объекта приложение

 

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

 

returnob_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. Инструкция для пользователя.

 

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

 

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

 

Раздел содержит описание постановки задачи. Дается описание системы. Определяется задача или задачи, решаемые системой. Приводятся требования к объектам системы и к самой системе.

Описываются входные и выходные данные системы.

 

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

 

Раздел содержит перечень описания используемых методов.

Содержит перечень и описание используемых для конструирования системы объектов.

Описание объектов представляется посредством таблицы5:

 

Объект Пояснение
1.    

 

Столбец «№» - содержит нумерацию объектов.

Столбец «Объект» - содержит наименование объекта отражающее его назначение.

Столбец «Пояснение» - содержит: описание объекта, состав свойств, функциональные возможности; наименование класса описания объекта в программной реализации.

 

 

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

 

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

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

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

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

 










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

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