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

Курсовик по ООП / Пояснительная записка

.doc
Скачиваний:
68
Добавлен:
01.05.2014
Размер:
91.14 Кб
Скачать

1. Задание

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

Из третьей лабораторной работы имеем систему классов, обеспечивающую работу с объектами следующего вида:

Из четвертой лабораторной работы имеем систему классов, обеспечивающую обмен сообщениями между независимыми объектами. Параметры связи: двухсторонняя, один сервер, отчет о доставке.

Задание:

Обеспечить возможность передачи сообщений между планетами системы. Сервером выступает система.

2. Идея обмена сообщениями:

Предполагается, что сообщение, посылаемое планетой, содержит время. Планета, при приеме сообщения должна вывести свои координаты в запрашиваемый момент времени. Схема сообщения включает в себя адрес отправителя, адрес получателя, сообщение. Таким образом, каждая планета должна иметь интерфейс, обеспечивающий передачу сообщений, описанный в лабораторной работе 4. Центр системы также должен иметь этот интерфейс.

Обмен сообщениями производится вызовом функции «принять сообщение» сервера от сообщения, сформированного одной планетой и адресованного другой планете. Такой способ соответствует общей идее, так как метод интерфейса «послать сообщение» должен определять действия по формированию сообщения, а метод «принять сообщение» - действия по обработке сообщения.

Указывая в качестве адресата систему, производится отправка сообщения всем планетам.

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

2. Формирование с помощью наследования классов новых проблемных объектов, способных обмениваться сообщениями.

Так как каждая планета является наследником класса, задающего интерфейс «Планета».

Чтобы обеспечит передачу сообщений, планета должна является наследником класса «Объект», задающего интерфейс объекта передачи сообщений.

Таким образом, должны быть модернизированы классы «Элемент списка планет» и «Список планет», чтобы обеспечить обращение к соответствующим методам передачи сообщений каждой конкретной планеты в списке.

Класс «Система», выступающий в роли сервера, должен быть наследником класса «Объект» и обеспечивать передачу сообщений между планетами.

3. Проектирование конструкторов и деструкторов.

Конструктор класса «Планета» должен задавать адрес созданной планеты – номер по порядку создания.

Конструктор класса «Система» должен задавать адрес системы.

Описание остальных конструкторов не отличаются от приведенных в лабораторных работах 3 и 4.

4. Файловая система.

Adress.h файл объявления класса «Адресс»

Adress.cpp файл описания класса «Адресс»

Message.h файл объявления класса «Сообщение»

Message.cpp файл описания класса «Сообщение»

Figure.h файл объявления класса «Фигура»

Planeta.h файл объявления класса «Планета»

Planeta.cpp файл описания класса «Планета»

Krug.h файл объявления класса «Круг»

Krug.cpp файл описания класса «Круг»

Kvadrat.h файл объявления класса «Квадрат»

Kvadrat.cpp файл описания класса «Квадрат»

Treug.h файл объявления класса «Треугольник»

Treug.cpp файл описания класса «Треугольник»

Ellips.h файл объявления класса «Эллипс»

Ellips.cpp файл описания класса «Эллипс»

Object.h файл объявления класса «Объект»

PlElem.h файл объявления класса «Элемент списка плаенет»

PlElem.cpp файл описания класса «Элемент списка плаенет»

PlList.h файл объявления класса «Список планет»

PlList.cpp файл описания класса «Список планет»

Sistema.h файл объявления класса «Система»

Sistema.cpp файл описания класса «Система»

5

Message

+getOtp:Adress

+getPol:Adress

+getMsg:int msg

+setOtp(Adress)

+setPol(Adress)

+setMsg(int )

. Схема классов:

Krug

+getR():double R

+getArea():double S

+ getAngle():double Angle

+Print()

Квадрат

+getA():double A

+getArea():double S

+ getAngle():double Angle

+Print()

Треугольник

+getA():double A

+getArea():double S

+ getAngle():double Angle

+Print()

Эллипс

+getLmax():double lmax

+getLmin():double lmin

+getAngle():double Angle

+getArea():double S

+Print()

+setLmax(double _Lmax)

+setLmin(double _Lmin)

+setAngle(double _Angle)

Планета

+getNom():int Nom

+getV():int V

+Print()

+getLmax():double lmax

+getLmin():double lmin

+getAngle():double Angle

+getFi0():double Fi0

+getXpt(double t):double X

+getYpt(double t):double Y

+PrintS(double t)

+setV(int _V)

+setLmax(double _Lmax)

+setLmin(double _Lmin)

+RevolO(double dFi)

+MashtO(double dN)

+MoveO(double dX,double dY)

Фигура

+ getX()

+getY()

+Move(double dX,double dY)

+Revol(double dFi)

+Masht(double dN)

Элемент списка

+getPred():Plelem* Pred

+getNom():int Nom

+getV():int V

+getLmax():double lmax

+getLmin():double lmin

+getAngle():double Angle

+getFi0():double Fi0

+getXpt(double t):double X

+getYpt(double t):double Y

+PrintS(double t)

setPred(Plelem* Pred0)

+setV(int _V)

+setLmax(double _Lmax)

+setLmin(double _Lmin)

+RevolO(double dFi)

+MashtO(double dN)

+MoveO(double dX,double dY)

Список планет

+getNomp(int nom):int id

+getXp(int nom):double X

+getYp(int nom): double Y

+ getXpt(int nom,double t) :double X

+ getYpt(int nom,double t): double Y

+ getV(int nom): int V

+ PrintS(int nom,double t)

+ getNel():unsigned int Nel

+ PrintList(double t)

+ setV(int nom,int _V)

+ setLmax(int nom,int _Lmax)

+ setLmin(int nom,int _Lmin)

+ RevolO(int nom,double dFi)

+ MashtO(int nom,double dN)

+ MoveO(int nom,double dX,double dY)

+ goPred()

+ goHead()

+ insLast(int _X,int _Y,int _Lmax,int _Lmin,double Fi,double Fi0,int _V,int form,double _Angle)

+ DelPlanet(int nom)

Система

+PrintSys(int t)

+ ParadPl():double t

+getXc():double X

+ getYc():double Y

+NewPlanet(_Lmax,int _Lmin,double Fi,double Fi0,int _V,int form,double _Angle

+ Move(double dX,double dY)

Adress

+getAdress:int id

+setAdress(int id)

Object

+Send:Message

+Receive(Message)

+getAdr:Adress

6. Количественные характеристики программы.

Общие количественные характеристики:

Общая длина текста программы: 2236

Общее количество классов: 12

Количество новых классов: 3

Общее количество заголовочных файлов: 12

Общее количество файлов кодов: 10

Обусловленные применением наследования:

Количество иерархий наследования: 2

Максимальное количество уровней в созданных иерархиях наследования: 3

Количество использованных ранее разработанных классов: 9

Количество тех из них, в которые потребовалось внести изменения: 7

Суммарная длина текстов новых программных компонентов: 215

7. Таблица новых функций по отношению к 3 и 4 лабораторным работам.

Класс «Планета»

Название

Назначение

Параметры

Предусловия

Постусловия

Send(_Pol,_Msg)

Послать сообщение

Тип double, Adress

входные

Планета существует

Сообщение послано

getAdr()

Вернуть адрес

нет

Планета существует

Значение возвращено

Receive(_Msg)

Принять сообщение

Тип Massage входные

Планета существует

Класс «Список планет»

Название

Назначение

Параметры

Предусловия

Постусловия

SendP(nom,_Pol, _Msg)

Послать сообщение по номеру планеты

Тип int, double, Adress

входные

Планета существует

Сообщение послано

getAdr(nom)

Вернуть адрес по номеру

Тип int

входные

Планета существует

Значение возвращено

ReceiveReg(_Msg)

Принять сообщение

Тип Massage входные

Планета существует

Сообщение передано адресату

Класс «Система»

Название

Назначение

Параметры

Предусловия

Постусловия

getAdr()

Вернуть адрес

нет

Система существует

Значение возвращено

Send(_Pol,_Msg)

Послать сообщение

Тип double, Adress

входные

Система существует

Сообщение послано

Receive(_Msg)

Принять сообщение(переслать адресату)

Тип Massage входные

Система существует

Сообщение отослано адресату