|
|||
Лабораторная работа №2 ⇐ ПредыдущаяСтр 2 из 2 Лабораторная работа №2 Разработать систему классов для геометрических фигур 1. Определите систему классов: (выбор варианта – остаток от деления номера по журналу на 4)
Вариант 1. Различные общие типы фигур: «Фигура», «Точка», «Прямоугольник», «Эллипс», «Квадрат», «Окружность», «Треугольник», «Многоугольник», «Параллелепипед», «Куб», «Тетраэдр», «Цилиндр», «Конус», «Пирамида», «Призма», «Шар» и т.п.
Вариант 2. Фигуры, состоящие из отрезков: «Фигура», «Точка», «Отрезок», «Прямоугольник», «Квадрат», «Параллелепипед», «Куб», «Параллелограмм», «Многоугольник», «Октаэдр», «Призма», «Наклонная призма», «Пирамида», «Усеченная пирамида», и т.п.
Вариант 3. Фигуры, так или иначе связанные с дугами и окружностями: «Фигура», «Точка», «Окружность», «Дуга», «Сектор», «Сегмент», «Круг», «Эллипс», «Сфера», «Шар», «Цилиндр», «Наклонный цилиндр», «Конус», «Усеченный конус», «Наклонный усеченный конус», «Кольцо», «Тор», и т.п.
Вариант 4(0). Различнейшие «n-угольные» фигуры на плоскости: «Фигура», «Точка», «Треугольник», «Четырехугольник», «Правильный треугольник», «Прямоугольный треугольник», «Прямоугольник», «Квадрат», «Ромб», «Трапеция», «Параллелограмм», «Пятиугольник», «Правильный 5-угольник», «Многоугольник», и т.п.
Исправление: Варианты 4 и 0 суть одно и то же.
Выбор фигур на ваше усмотрение. Можете для удобства добавлять дополнительные классы, например: «Объемная фигура» или «правильный n-угольник» _________ * на «тройку» достаточно первые четыре класса
2. Определите в этих классах методы, которые: • перемещают фигуру по плоскости (на заданное расстояние или в нужную позицию) • масштабируют фигуру • вычисляют и возвращают площадь фигуры, периметр, отношение площади к периметру • возвращают строку символов, отражающую имя класса и состояние объекта • рисуют фигуру в консоли или на форме (для объемных фигур достаточно проекции) • и т.п. _________ * на «тройку» достаточно реализовать три метода
3. Определите в ваших классах свойства и индексаторы (там, где это имеет смысл)
4. Классы должны быть связаны отношением наследования (там, где это имеет смысл) Некоторые классы необходимо сделать абстрактными, а некоторые методы — виртуальными Должен быть хотя бы один полиморфный класс. Максимально исключите дублирование кода (поля, методы, реализация).
5. Объявите класс «Изображение», имеющий свое положение на плоскости и владеющий коллекцией различных фигур Элементами коллекции имеет смысл сделать базовый полиморфный класс (таким образом в одной коллекции можно будет сохранить все фигуры изображения)
6. В классе «Изображение» определите методы: • возвращающие суммарную площадь фигур, суммарный периметр • сдвигающие все фигуры • масштабирующие все фигуры • возвращающие полное состояние изображения в виде строки • объединяющие два изображения • рисующие все фигуры в консоли или на форме (для объемных фигур достаточно проекции) • сохраняют и загружают изображения из файла (добавлено) • и т.п. _________ * на «тройку» достаточно реализовать три метода
** На «пятерку» необходимо выполнить дополнительное задание повышенной сложности. Некоторые примеры заданий: (добавлено) - проверка пересечения каждой фигуры с каждой (придумать разумный подход) - подсчет общей площади, занимаемой фигурами (не просто сумма, а еще учет общих площадей, их нужно считать конечно только один раз) - удобный редактор изображений, позволяющий добавлять, менять фигуры, сохранять изображение и прочее - и т.п.
|
|||
|