Класс Точка / Клосс_Точка_л2
.docПостановка задачи:
Разработать класс Точка. При этом состояние экземпляра это декартовые координаты точки, состояние задаваемое пользователем – так же полярные координаты. Требуется реализовать проблемные действия: ее смещение на задаваемые величины. При этом сдвиг производится на величины, заданные в декартовых координатах.
Так же требуется реализовать селекторы относительно полярных координат. Конструкторы: без параметров и с параметрами в полярных координатах.
Анализ задачи:
Задача реализуется с использованием типа данных класс на языке С++. В роли входных данных выступает пара координат точки в полярной системе, а также величины смещения точки в декартовой системе в процессе тестирования класса. В роли выходных данных выступает пара координат точки после каждой операции над экземпляром в процессе тестирования.
Формальная постановка задачи:
-
Исходные данные: Так как в роли входных данных выступает пара координат. В описании класса присутствует 2 атрибута класса - пара декартовых координат. Доступ к членам-данным класса выбран как “private”, что объясняется стремлением обезопасить класс от неконтролируемого метода доступа.
-
Ограничения на исходные данные: Ограничения на координаты определяются диапазоном применяемого в классе типа для вещественных чисел, в данном случае типом “double”. В данной программе применены ограничения (-10000..10000). Ограничения на количество экземпляров класса определяется наличием свободной памяти. Ограничения на входные денные в программе определяют входные условия, а так же инвариант класса.
-
Выходные данные: В роли выходных данных служит пара координат точки после каждой операции над экземпляром в процессе тестирования. Ограничения на выходные данные такие же как и на исходные, вследствие тех же причин.
-
Связь выходных данных с исходными данными: Связь выходных данных с исходными определяется действиями, которые выполнялись при тестировании класса. Собственно связь входных с выходными данными определяет постусловия метода.
-
Размещение
Как было сказано доступ к членам- данным класса выбран как “Private”. Доступ к членам- функциям класса выбран как “public”, чтобы обеспечить доступ к членам- функциям из вызывающей программы.
Определение методов:
-
Конструктор “Cpoint()” без параметров, для простоты вызова при создании точки в начале координат.
-
Конструктор “Cpoint(double, double)” с параметрами, при создании точки не только в начале координат.
-
Селекторы “getR()” и “getFi()” возвращают значения угла о радиуса в полярных координатах.
-
Операция (корректор) “Move(double, double )”, производит сдвиг на вектор.
Все перечисленные методы объявлены в разделе “public”.
Таблица параметров функций:
Название |
Назначение |
Параметры |
Предусловия |
Постусловия |
Cpoint() |
Создание точки в начале координат |
Нет |
|
X=0 Y=0 |
Cpoint(x0,y0) |
Создание точки с заданными координатами |
Типа Double, входные, не изменяются |
X0, Y0 : [-10000..10000] |
X=X0 Y=Y0 |
getR() |
Возврат радиуса в полярных координатах |
Нет |
|
|
getFi() |
Возврат угла поворота в полярных координатах |
Нет |
|
|
Move(dx,dy) |
Сдвиг точки на вектор |
Типа Double, входные |
X0, Y0: [-10000..10000] |
X1=X0+dX Y1=Y0+dY |
Определение инварианта класса:
Инвариант определяется попаданием параметров точки в допустимый диапазон.
В нашем случае: x:[-10000..10000].
Проверка инварианта производится в ходе выполнения программы, между вызовами членов- функций.
Тестирование:
Начальные значения |
Сдвиговые значения |
Конечные значения |
Схема сдвига |
R=5.83 Fi=0.54 |
Dx=1 Dy=3 |
R=8.84 FI=0.78 |
|
R=2 FI= -1.57 |
Dx=0 Dy=4 |
R=2 FI=1.57 |
|
R=2 FI=1.57 |
Dx=-2 Dy=0 |
R=2.82 FI= -0.785 |
|
R=2.23 FI=0.46 |
Dx=-6 Dy=-4 |
R=5 FI=0.64 |
|
Вывод:
Данный класс может быть использован при создании других приложений.
Также достоинством является простота работы с классом.
Недостатки: - Малый набор функций класса, не позволяющий работать с классом с должной легкостью.
- Отсутствие проверки вводимых значений.
Работоспособность класса подтверждается тестированием.
Министерство образования РФ
СПБГЭТУ
Кафедра МО-ЭВМ
Отчет по практической работе №1
«Разработка класса «точка»»
Студент гр. 3342: Митягин Сергей
Преподаватель: Борис Казаков
С-Петербург.
2005