Хелпикс

Главная

Контакты

Случайная статья





Лабораторная работа №2



Лабораторная работа №2

Разработать систему классов для геометрических фигур

1. Определите систему классов:

(выбор варианта – остаток от деления номера по журналу на 4)

 

Вариант 1. Различные общие типы фигур:

«Фигура», «Точка», «Прямоугольник», «Эллипс», «Квадрат», «Окружность», «Треугольник», «Многоугольник», «Параллелепипед», «Куб», «Тетраэдр», «Цилиндр», «Конус», «Пирамида», «Призма», «Шар» и т.п.

 

Вариант 2. Фигуры, состоящие из отрезков:

«Фигура», «Точка», «Отрезок», «Прямоугольник», «Квадрат», «Параллелепипед», «Куб», «Параллелограмм», «Многоугольник», «Октаэдр», «Призма», «Наклонная призма», «Пирамида», «Усеченная пирамида», и т.п.

 

Вариант 3. Фигуры, так или иначе связанные с дугами и окружностями:

«Фигура», «Точка», «Окружность», «Дуга», «Сектор», «Сегмент», «Круг», «Эллипс», «Сфера», «Шар», «Цилиндр», «Наклонный цилиндр», «Конус», «Усеченный конус», «Наклонный усеченный конус», «Кольцо», «Тор», и т.п.

 

Вариант 4(0). Различнейшие «n-угольные» фигуры на плоскости:

«Фигура», «Точка», «Треугольник», «Четырехугольник», «Правильный треугольник», «Прямоугольный треугольник», «Прямоугольник», «Квадрат», «Ромб», «Трапеция», «Параллелограмм», «Пятиугольник», «Правильный 5-угольник», «Многоугольник», и т.п.

 

Исправление: Варианты 4 и 0 суть одно и то же.

 

Выбор фигур на ваше усмотрение.

Можете для удобства добавлять дополнительные классы, например: «Объемная фигура» или «правильный n-угольник»

_________

* на «тройку» достаточно первые четыре класса

 

2. Определите в этих классах методы, которые:

• перемещают фигуру по плоскости (на заданное расстояние или в нужную позицию)

• масштабируют фигуру

• вычисляют и возвращают площадь фигуры, периметр, отношение площади к периметру

• возвращают строку символов, отражающую имя класса и состояние объекта

• рисуют фигуру в консоли или на форме (для объемных фигур достаточно проекции)

• и т.п.

_________

* на «тройку» достаточно реализовать три метода

 

3. Определите в ваших классах свойства и индексаторы (там, где это имеет смысл)

 

4. Классы должны быть связаны отношением наследования (там, где это имеет смысл)

Некоторые классы необходимо сделать абстрактными, а некоторые методы — виртуальными

Должен быть хотя бы один полиморфный класс.

Максимально исключите дублирование кода (поля, методы, реализация).

 

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

Элементами коллекции имеет смысл сделать базовый полиморфный класс (таким образом в одной коллекции можно будет сохранить все фигуры изображения)

 

6. В классе «Изображение» определите методы:

• возвращающие суммарную площадь фигур, суммарный периметр

• сдвигающие все фигуры

• масштабирующие все фигуры

• возвращающие полное состояние изображения в виде строки

• объединяющие два изображения

• рисующие все фигуры в консоли или на форме (для объемных фигур достаточно проекции)

• сохраняют и загружают изображения из файла (добавлено)

• и т.п.

_________

* на «тройку» достаточно реализовать три метода

 

** На «пятерку» необходимо выполнить дополнительное задание повышенной сложности.

Некоторые примеры заданий: (добавлено)

- проверка пересечения каждой фигуры с каждой (придумать разумный подход)

- подсчет общей площади, занимаемой фигурами (не просто сумма, а еще учет общих площадей, их нужно считать конечно только один раз)

- удобный редактор изображений, позволяющий добавлять, менять фигуры, сохранять изображение и прочее

- и т.п.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.