Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Отчёт по лабораторной работе №3

.docx
Скачиваний:
20
Добавлен:
03.10.2022
Размер:
71.92 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ

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

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

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

Отчет по лабораторной работе №3

«Конструирование класса, моделирующего работу устройства»

По дисциплине: «Технологии программирования»

Цель лабораторной работы:

Познакомиться с понятием инкапсуляция в объектноориентированном программировании, научиться защищать свойства объекта, моделировать поведение предмета.

Задание:

1.Разработать модель работы устройства, состоящую из 34 свойства, наиболее существенных для описания поведения устройства, и 36 методов, моделирующих поведение объекта.

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

3.Выявить все допустимые состояния объекта данного класса и представить их в виде таблицы следующего вида:

№ состояния

Свойство 1

Свойство 2

1

Значение 1

Значение 2

2

Значение 3

Значение 4

4.На основе модели сконструировать класс. Доступ к свойствам класса должен быть закрытым (private), к методам – открытым (public); изменение значений свойств (состояния) объекта осуществляется соответствующими методами.

5.Разработать консольное приложение, демонстрирующее работу объекта, в составе:

  • главный модуль, содержащий функцию main,

  • модуль, содержащий разработанный класс.

6. Программа должна выполнять следующие действия:

  • создание объекта;

  • демонстрация текущего состояния объекта с помощью сообщений на экране;

  • действия над объектом, меняющие его состояние.

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

8.Разработать тесты для проверки соответствия модели поведения устройства и результатов работы программы.

9.Представить отчёт следующего содержания:

  • постановка задачи;

  • диаграмма файлов проекта, содержащих исходный код (UML диаграмма компонентов);

  • описание класса;

  • текст программы;

  • таблица допустимых состояний.

7 Вариант:

Автоматически регулируемый железнодорожный переезд

Ход работы

Ввод данных с клавиатуры:

Полученный результат:

Ввод данных с клавиатуры:

Полученный результат:

Ввод данных с клавиатуры:

Полученный результат:

UML диаграмма компонентов

Подключение модуля класса к главному модулю:

Main.Cpp

Rail.h

Связь внешней части модуля и его реализации:

Rail.cpp

Rail.h

Таблица допустимых состояний

Состояние

Шлагбаум

Устройство заграждения переезда

Поезд

№1

Открыт

Опущено

Далеко от 500 м до9999 м

№2

Закрыт

Поднято

Близко от 0 м до 499 м

Примечание

Исходный код:

Main.cpp:

#include <iostream>

#include <string.h>

#include <Windows.h>

#include "rail.h"

#include "rail.cpp"

using namespace std;

rail::rail()

{ PositionSH="NoPositionSH";

PositionUZP="NoPositionUZP"; }

int rail::GetUpDistance()

{ return UpDistance; }

int rail::GetDownDistance()

{ return DownDistance; }

void rail::Option1()

{ cout<<"Вы изменили положение шлагбаума на "<<PositionSH<<endl; }

void rail::Option2()

{ cout<<"Вы изменили положение УЗП на "<<PositionUZP<<endl; }

void rail::Option3()

{ cout<<"Вы увеличели расстояние до "<<UpDistance<<" метров"<<endl; }

void rail::Option4()

{ cout<<"Вы уменьшили расстояние до "<<DownDistance<<" метров"<<endl; }

void rail::SetUpDistance(int UDi)

{ UpDistance=UDi; }

void rail::SetDownDistance(int DDi)

{ DownDistance=DDi; }

void rail::SetPositionSH(char PoSH)

{ PositionSH=PoSH; }

void rail::SetPositionUZP(char PoUZP)

{ PositionUZP=PoUZP; }

Rail.cpp:

#include "rail.h"

using namespace std;

rail::rail()

{ PositionSH="NoPositionSH";

PositionUZP="NoPositionUZP"; }

int rail::GetUpDistance()

{ return UpDistance; }

int rail::GetDownDistance()

{ return DownDistance; }

void rail::Option1()

{ cout<<"Вы изменили положение шлагбаума на "<<PositionSH<<endl; }

void rail::Option2()

{ cout<<"Вы изменили положение УЗП на "<<PositionUZP<<endl; }

void rail::Option3()

{ cout<<"Вы увеличели расстояние до "<<UpDistance<<" метров"<<endl; }

void rail::Option4()

{ cout<<"Вы уменьшили расстояние до "<<DownDistance<<" метров"<<endl; }

void rail::SetUpDistance(int UDi)

{ UpDistance=UDi; }

void rail::SetDownDistance(int DDi)

{ DownDistance=DDi; }

void rail::SetPositionSH(string PoSH)

{ PositionSH=PoSH; }

void rail::SetPositionUZP(string PoUZP)

{ PositionUZP=PoUZP; }

Rail.h:

#ifndef RAIL_H

#define RAIL_H

#include <iostream>

using namespace std;

class rail

{public:

rail();

int GetUpDistance();

int GetDownDistance();

string GetPositionSH();

string GetPositionUZP();

void Option1();

void Option2();

void Option3();

void Option4();

void SetUpDistance(int);

void SetDownDistance(int);

void SetPositionSH(string);

void SetPositionUZP(string);

private:

int UpDistance;

int DownDistance;

string PositionSH;

string PositionUZP; };

#endif