Отчёт по лабораторной работе №3
.docxФЕДЕРАЛЬНОЕ АГЕНСТВО СВЯЗИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ТЕЛЕКОММУНИКАЦИЙ ИМ. ПРОФ. М. А. БОНЧ-БРУЕВИЧА
Кафедра программной инженерии и вычислительной техники
Отчет по лабораторной работе №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