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

 

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

Рекомендуется разместить описание класса в двух файлах. Для размещения заголовочной части описания класса используется файл с наименованием класса и расширением «.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
 
 
 
 
 
 

Рисунок 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   ( ); // запуск функционирования системы

}

 

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