Материал: ИКПИ. Пример отчета по практике

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М.А. БОНЧ-БРУЕВИЧА» (СПбГУТ)

________________________________________

Факультет Инфокоммуникационных сетей и систем Кафедра Программной инженерии и вычислительной техники

Отчет по производственной практике

Предприятие: ООО «НТЦ Севентест»

Период прохождения практики: 28.06.21 – 15.07.21

Выполнил Коваленко Леонид Александрович, ИКПИ-84

(Ф.И.О., № группы)

Подпись студента_____________________

Руководитель практики от базы практики:

_____________________________________

(Ф.И.О., Подпись)

Оценка ______________________________

Руководитель практики от кафедры:

_____________________________________

(кафедра, Ф.И.О.)

_____________________________________

(Подпись)

Санкт-Петербург

2021

СОДЕРЖАНИЕ

Введение.........................................................................................................

3

Задания на производственную практику ....................................................

3

Выполнение заданий.....................................................................................

4

Первое задание ..........................................................................................

4

Второе задание ........................................................................................

12

Дневник производственной практики.......................................................

38

Заключение ..................................................................................................

39

Список литературы .....................................................................................

39

2

ВВЕДЕНИЕ Производственная практика — практическая часть учебного процесса

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

Перенос учебного процесса в условия, максимально схожие с обстановкой будущей профессиональной деятельностью студента, – обязательный этап на пути получения высшего образования, обусловленный требованиями госстандартов и регламентированный приказом Минобразования и науки РФ № 1383.

ЗАДАНИЯ НА ПРОИЗВОДСТВЕННУЮ ПРАКТИКУ

1.Разработать клиент-серверное приложение с помощью CORBA.

2.Разработать библиотеку для парсинга файлов выписки плана нумерации ФАС.

3

ВЫПОЛНЕНИЕ ЗАДАНИЙ Первое задание

IDL — декларативный язык для формального описания интерфейсов взаимодействия клиентов и серверов в распределенных приложениях. IDL не привязан к какому-либо языку программирования, но для большинства современных языков программирования существуют спецификации,

определяющие правила трансляции конструкций IDL в конструкции этих языков.

Описание интерфейса для первого задания представлено в таблице 1.

Таблица 1. Описание интерфейса взаимодействия клиента и сервера

Data.idl

module Data

{

interface ServiceA

{

string HelloWorld(in string message);

boolean Div(in long a, in long b, out long r); void CaesarCipher(inout string str, in short k);

};

};

Конструкция module определяет пространство имен, в котором будут существовать включенные в нее интерфейсы.

Конструкция interface определяет программный интерфейс, с помощью которого объекты общаются друг с другом.

Втеле конструкции interface объявляются операции, которые должен быть способен выполнять сервер по запросу клиента.

Врезультате компиляции будут созданы 2 файла: Data.hh и DataSK.cc.

Они содержат описание интерфейса CServiceA и вспомогательных классов.

Серверная часть проекта состоит из 5 файлов:

1.Server/CServiceA.h и Server/CServiceA.cpp (см. таблицы 2-3) содержат реализацию интерфейса CServiceA — класс CServiceA_i.

2.Server/CServiceARunner.h и Server/CServiceARunner.cpp (см. таблицы 4-

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

3.Server/Server.cpp (см. таблицу 6) описывает работу точки входа.

4

Таблица 2. Файл Server/CServiceA.h Server/CServiceA.h

#ifndef CSERVICEA_H #define CSERVICEA_H

#include "../Data.hh"

class CServiceA_i : public POA_Data::ServiceA,

public PortableServer::RefCountServantBase

{

public: CServiceA_i();

virtual ~CServiceA_i();

virtual char *HelloWorld(const char *) override;

virtual CORBA::Boolean Div(CORBA::Long, CORBA::Long, CORBA::Long &) override; virtual void CaesarCipher(char *&, CORBA::Short) override;

};

#endif // CSERVICEA_H

Таблица 3. Файл Server/CServiceA.cpp Server/CServiceA.cpp

#include "CServiceA.h" #include <cstring> #include <iostream>

CServiceA_i::CServiceA_i()

{

}

CServiceA_i::~CServiceA_i()

{

}

char *CServiceA_i::HelloWorld(const char *)

{

return CORBA::string_dup("Hello, world!");

}

CORBA::Boolean CServiceA_i::Div(CORBA::Long a, CORBA::Long b, CORBA::Long &r)

{

r = 0;

if (b == 0)

{

r = 0;

return false; // error

}

r = a / b;

return true; // success

}

void CServiceA_i::CaesarCipher(char *&str, CORBA::Short k)

{

for (size_t i = 0, size = strlen(str); i < size; ++i)

{

bool lower = ('a' <= str[i] && str[i] <= 'z'); bool upper = ('A' <= str[i] && str[i] <= 'Z'); if (lower || upper)

{

short t = ('a' ^ (upper ? 32 : 0));

str[i] = static_cast<char>((str[i] - t + k) % ('z' - 'a' + 1) + t);

}

}

}

5