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

Лабораторная работа1-2

.rtf
Скачиваний:
21
Добавлен:
14.04.2015
Размер:
21.47 Кб
Скачать

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

Разрабатываемый класс должен содержать следующие элементы: скрытые поля, конструкторы с параметрами и без параметров, методы, свойства. Методы и свойства должны обеспечивать непротиворечивый, полный, минимальный и удобный интерфейс класса. При возникновении ошибок должны выбрасываться исключения.

1. Класс «Десятичный счетчик»

Объявите класс «Десятичный счетчик», который может увеличивать или уменьшать свое значение на единицу в заданном диапазоне. Предусмотреть инициализацию счетчика значениями по умолчанию и произвольными значениями. Счетчик имеет два метода: увеличения и уменьшения, и свойство, позволяющее получить его текущее состояние.

2. Класс «Комплексное число»

Объявите класс «Комплексное число», полями которого являются действительная и мнимая части числа, а методами — сложение и умножение на другое комплексное число, определение модуля и вывод на экран. Рассмотрите различные варианты методов сложения и умножения.

3. Класс «Прямоугольник»

Объявите класс «Прямоугольник» с полями: x1, y1, x2, y2 (координаты левого верхнего и правого нижнего углов) и методами: пересечься с другим прямоугольником, проверить, попадает ли точка в данный прямоугольник, масштабировать при условии неподвижности верхнего левого угла, передвинуть по плоскости без вращения.

4. Класс «Вектор»

Объявите класс «Вектор», полем которого является массив чисел в свободной памяти, а методами — очистить вектор, добавить элемент в конец, вставить элемент в i-ю позицию, вставить элемент перед числом со значением n, удалить i-й элемент, удалить элемент со значением n, вывести на экран. Проверяйте допустимость значений параметров перед выполнением кода методов.

5. Класс «Односвязный список»

Объявите класс, который реализует односвязный рекурсивный список строк в свободной памяти. Список представляется двумя указателями: указателем на строку в свободной памяти (поле info) и указателем на список же, только более короткий (поле tail). В частном случае одноэлементного списка этот указатель равен null. Методы такие же как и у класса «Вектор».

На оценку «Удовлетворительно» решить задание 1, 2

На оценку «Хорошо» решить задание 3, 4

На оценку «Отлично» решить задание 4, 5

Во время защиты необходимо обьяснить решение, ответить на вопросы (в том числе по теории).

При защите на оценку «Хорошо» или «Отлично» может быть выдано дополнительное практическое задание.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

_________

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

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

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

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

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

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

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

• и т.п.

_________

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

• и т.п.

_________

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

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

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

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

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

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

- и т.п.