Разделы презентаций


Объектно-ориентированное программирование на алгоритмическом языке С++

Содержание

Объектно-ориентированное программирование на алгоритмическом языке С++Программирование на объектно-ориентированном алгоритмическом языке С++МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайды и текст этой презентации

Слайд 1Объектно-ориентированное программирование на алгоритмическом языке С++
Автор: доцент, канд. физ.-мат.

наук,
Путуридзе Зураб Шотаевич
МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Объектно-ориентированное программирование на алгоритмическом языке С++Автор:  доцент, канд. физ.-мат. наук,Путуридзе Зураб ШотаевичМИРЭА, Институт Информационных технологий, кафедра

Слайд 2Объектно-ориентированное программирование на алгоритмическом языке С++

Программирование на объектно-ориентированном алгоритмическом языке

С++
МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Объектно-ориентированное программирование на алгоритмическом языке С++Программирование на объектно-ориентированном алгоритмическом языке С++МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 3Схема взаимодействия объектов
МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Схема взаимодействия объектовМИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 4Схема приложения (программы) Уровень сложности 2
МИРЭА, Институт Информационных технологий, кафедра Вычислительной

техники

Схема приложения (программы) Уровень сложности 2МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 5Определение ссылки на объект по координате /root/ob_1/ob_3/ob_4/ob_5
МИРЭА, Институт Информационных технологий, кафедра

Вычислительной техники
ob_8

Определение ссылки на объект по координате /root/ob_1/ob_3/ob_4/ob_5МИРЭА, Институт Информационных технологий, кафедра Вычислительной техникиob_8

Слайд 6Определение ссылки на объект по координате
Алгоритм
Получить ссылку на корневой объект

(root)
По координате от root получить ссылку на требуемый объект
Понадобиться метод

выделения элемента из координаты
string cl_base :: get_path_item ( string object_path,
int i_level ) {
int i_item_start, i_item_end, i_lc;

i_lc = i_item_start = 1;
while ( i_item_start ) {
i_item_end = object_path.find ( '/', i_item_start );

if ( i_lc == i_level ) return object_path.substr (
i_item_start, i_item_end - i_item_start );
i_lc ++;
i_item_start = i_item_end + 1;
}
return "";

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Определение ссылки на объект по координатеАлгоритмПолучить ссылку на корневой объект (root)По координате от root получить ссылку на

Слайд 7Определение ссылки на объект по координате
Получить ссылку на корневой объект

(root)

cl_base * cl_base :: get_object_root ( ) {
cl_base

* p_parent_previous; // ссылка на очередной головной объект
//----------------------------------------------------------------

if ( object_name == "root" ) return this;

p_parent_previous = p_parent;

while ( p_parent_previous -> p_parent ) {

p_parent_previous = p_parent_previous -> p_parent;
}

return p_parent_previous;
}

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники


Слайд 8Определение ссылки на объект по координате
По координате от root получить

ссылку на требуемый объект
cl_base * cl_base :: get_object ( string

object_path ) {
string s_path_item;
cl_base * p_parent_next; // ссылка на очередной головной объект
cl_base * p_child; // ссылка на очередной подчиненный объект
int i_level_next = 2;
//------------------------------------------------------------------
p_parent_next = get_object_root ( );
s_path_item = get_path_item ( object_path, 1 );
if ( s_path_item != "root" ) return 0;
s_path_item = get_path_item ( object_path, i_level_next );
while ( ! s_path_item.empty ( ) ) {
p_child = p_parent_next -> get_child ( s_path_item );
if ( p_child ) {
p_parent_next = p_child;
i_level_next ++;
s_path_item = get_path_item ( object_path, i_level_next );
}
else { return 0; }
}
return p_parent_next;
}

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники


Слайд 9Сигналы и обработчики
Сигналы и обработчики организуют интерфейс взаимодействия объектов.

void «имя

сигнала» ( string s_text );
void «имя обработчика» (

string s_text );


МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Сигналы и обработчикиСигналы и обработчики организуют интерфейс взаимодействия объектов.void «имя сигнала»   ( string s_text );void

Слайд 10Реализация сигналов и обработчиков
В заголовочной части cl_base добавить

#define SIGNAL_D( signal_f

) ( ( void ( * ) ( string )

) ( & ( signal_f ) ) )
#define HENDLER_D( hendler_f ) ( ( void ( * ) ( string ) ) ( & ( hendler_f ) ) )


public:
void set_connect ( void ( * s_ignal ) ( string ),
void ( * h_endler ) ( string ) );
void delete_connect ( void ( * s_ignal ) ( string ),
void ( * h_endler ) ( string ) );
void emit_signal ( void ( * s_ignal ) ( string ), string s_command );

private:
multimap < void ( * ) ( string ), void ( * ) ( string ) > connects;
multimap < void ( * ) ( string ), void ( * ) ( string ) > :: iterator
it_connect;

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Реализация сигналов и обработчиковВ заголовочной части cl_base добавить#define SIGNAL_D( signal_f ) ( ( void ( * )

Слайд 11Реализация сигналов и обработчиков
void cl_base :: set_connect ( void (

* s_ignal ) ( string ),

void ( * h_endler ) ( string ) ) {

connects.insert ( { s_ignal, h_endler } );
}


void cl_base :: delete_connect ( void ( * s_ignal ) ( string ),
void ( * h_endler ) ( string ) ) {

if ( connects.empty ( ) ) return;
if ( connects.count ( s_ignal ) == 0 ) return;

it_connect = connects.find ( s_ignal );

while ( it_connect != connects.end ( ) ) {

if ( ( it_connect -> first ) == s_ignal &&
( it_connect -> second ) == h_endler ) {

connects.erase ( it_connect );
return;
}
it_connect ++;
}
}

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Реализация сигналов и обработчиковvoid cl_base :: set_connect ( void ( * s_ignal ) ( string ),

Слайд 12Реализация сигналов и обработчиков
void cl_base :: emit_signal ( void (

* s_ignal ) ( string ),

string s_command ) {

void ( * p_hendler ) ( string );
//------------------------------------------------------

if ( connects.empty ( ) ) return;
if ( connects.count ( s_ignal ) == 0 ) return;

it_connect = connects.find ( s_ignal );

while ( it_connect != connects.end ( ) ) {

if ( ( it_connect -> first ) == s_ignal ) {

p_hendler = it_connect -> second;

( p_hendler ) ( s_command );
}
it_connect ++;
}
}

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Реализация сигналов и обработчиковvoid cl_base :: emit_signal ( void ( * s_ignal ) ( string ),

Слайд 13Использование сигналов и обработчиков

. . . . .

set_connect ( SIGNAL_D ( signal_to_ob_3 ),

HENDLER_D ( p_ob_3 -> hendler_1 ) );

. . . . .

emit_signal ( SIGNAL_D ( signal_to_ob_3 ), "555555" );

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Использование сигналов и обработчиков. . . . .   set_connect ( SIGNAL_D ( signal_to_ob_3 ),

Слайд 14Лабораторная работа № 4 Сигналы и обработчики
МИРЭА, Институт Информационных технологий, кафедра

Вычислительной техники
Построить модель иерархической системы. Реализовать объект приложение и не

менее трех объектов разных классов. Построить интерфейсы (связи) следующих конфигурации:
1. Сигнал_1  обработчик_1
2. Сигнал_2  обработчик_1
└ обработчик_2
3. Сигнал_3  обработчик_3  Сигнал_3  обработчик_4
4. Сигнал_4  обработчик_5  Сигнал_5  обработчик_6
└ обработчик_7
В методе объекта приложения организовать ввод текстовой информации в цикле по следующей структуре:
«номер интерфейса» «текст»
Согласно «номер интерфейса» отработать соответствующую последовательность вызовов сигналов и обработчиков, передав совместно с сигналом введенный текст.
Обработчики должны выводить на консоль информацию:
«имя объекта обработчика» : «текст переданный с сигналом»
Завершить работу программы при вводе «номер интерфейса» равным 0.
Лабораторная работа № 4 Сигналы и обработчикиМИРЭА, Институт Информационных технологий, кафедра Вычислительной техникиПостроить модель иерархической системы. Реализовать

Слайд 15Лабораторные работы
МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Лабораторные работыМИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 16Лабораторные работы
МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Лабораторные работыМИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 17Лабораторные работы
МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Лабораторные работыМИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 18Лабораторные работы
МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Лабораторные работыМИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 19Лабораторные работы
МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Лабораторные работыМИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 20Курсовая работа
МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Курсовая работаМИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Слайд 21Структура struct
Единственным отличием между структурой и классом является то,

что члены класса, по умолчанию, являются закрытыми, а члены структуры

— открытыми.

struct имя_типа {
// открытые функции и данные — члены структуры.
private:
// закрытые функции и данные — члена структуры
} список_объектов

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Структура  structЕдинственным отличием между структурой и классом является то, что члены класса, по умолчанию, являются закрытыми,

Слайд 22Объединение union
Объединение состоит из нескольких переменных, которые разделяют одну

и ту же область памяти. Члены объединения, по умолчанию, являются

открытыми.

union имя_типа {
// открытые функции и данные — члены объединения
private:
// закрытые функции и данные — члена объединения
} список_объектов

МИРЭА, Институт Информационных технологий, кафедра Вычислительной техники

Объединение  unionОбъединение состоит из нескольких переменных, которые разделяют одну и ту же область памяти. Члены объединения,

Слайд 23Пояснения к объединению union
union u {
char

c;
short s;
int i;
};


c
s

i

МИРЭА, Институт Информационных технологий, кафедра вычислительной техники

Пояснения к объединению  unionunion u {  char  c;  short s;  int

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика