Эксперт по сдаче вступительных испытаний в ВУЗах
Практическое задание №4. Классы и объекты. Инкапсуляция.
Разработать программу с текстовым интерфейсом для расчета длины ломаной линии на декартовой плоскости и поиска вершин ломаной с определенными координатами.
Линия задается списком точек с вещественными координатами (x;y) – вершин звеньев ломаной линии. Количество вершин ломаной линии заранее не определено, пользователь задает координаты вершин последовательно.
Функциональность класса Точка:
хранение координат x и y точки на плоскости;
создание точки с координатами (0;0) по умолчанию либо с заданными координатами;
чтение и установка значений координат (x;y);
перемещение данной точки в указанную точку плоскости;
расчет расстояния от данной точки до центра координат или до указанной точки плоскости;
представление точки в виде строки: “(X;Y)” (например, для последующего вывода на консоль);
сравнение двух точек (x1 = x2 AND y1 = y2).
Функциональность класса Ломаная:
хранение точек ломаной линии в виде последовательности (списка), реализация последовательности на основе массива объектов Point;
создание ломаной линии с размером массива точек по умолчанию либо с заданным размером (но в случае нехватки длины массива, он в любом случае должен быть увеличен в процессе работы);
добавление точки к ломаной линии (в конец списка);
извлечение объекта точки из списка по номеру (индексу);
служебная функция: увеличение размера массива точек в случае нехватки места в текущем массиве для добавления очередной точки, т.о. массив динамически расширяется, при этом стратегия расширения массива остается на усмотрение программиста;
расчет длины звеньев ломаной;
поиск вершин ломаной, координаты которых совпадают с координатами заданной точки;
представление ломаной в виде строки: “(X0;Y0) – (X1;Y1) – … – (Xn;Yn)” (например, для последующего вывода на консоль).
Функциональность классов текстового интерфейса пользователя:
опционально: возможность указать начальное количество точек ломаной линии;
последовательный ввод значений координат точек ломаной линии;
вывод информации о линии в виде строки: “(X0;Y0) – (X1;Y1) — … — (Xn;Yn)” ;
вывод суммарной длины всех звеньев ломаной;
вывод вершин ломаной, координаты которых совпадают с координатами заданной пользователем точки;
выход из программы либо задание координат точек новой ломаной линии.
При реализации классов соблюдать принцип инкапсуляции.
Ссылка на первоисточник:
http://ivgpu.com