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

Презентации и задания для практики NetCracker / Практика / 03. -инамические структурv, искл чения и интерфейсv

.doc
Скачиваний:
52
Добавлен:
08.06.2015
Размер:
46.59 Кб
Скачать

Практическая работа №3

Задание на практическую работу

В процессе написания тестовых заданий ознакомьтесь с принципами создания динамических структур в Java, механизмом исключений и концепцией интерфейсов.

В процессе выполнения задания НЕЛЬЗЯ пользоваться утилитными классами Java.

Задание 1

Создайте класс Office офиса офисного здания.

Офис не хранит свой номер.

Разные офисы могут иметь разные площади.

Разные офисы могут иметь разное количество комнат.

Конструктор по умолчанию создает офис из 1 комнаты площадью 250 кв.м. (константы)

Конструктор может принимать площадь офиса (создается офис с 1 комнатой).

Конструктор может принимать площадь офиса и количество комнат.

Создайте метод получения количества комнат в офисе.

Создайте метод изменения количества комнат в офисе.

Создайте метод получения площади офиса.

Создайте метод изменения площади офиса.

Задание 2

Создайте класс OfficeFloor этажа офисного здания.

Работа класса должна быть основана на односвязном циклическом списке офисов с выделенной головой.

Номер офиса явно не хранится.

Создайте приватный метод получения узла по его номеру.

Создайте приватный метод добавления узла в список по номеру.

Создайте приватный метод удаления узла из списка по его номеру.

Конструктор может принимать количество офисов на этаже.

Конструктор может принимать массив офисов этажа.

Создайте метод получения количества офисов на этаже.

Создайте метод получения общей площади помещений этажа.

Создайте метод получения общего количества комнат этажа.

Создайте метод получения массива офисов этажа.

Создайте метод получения офиса по его номеру на этаже.

Создайте метод изменения офиса по его номеру на этаже и ссылке на обновленный офис.

Создайте метод добавления нового офиса на этаже по будущему номеру офиса.

Создайте метод удаления офиса по его номеру на этаже.

Создайте метод getBestSpace() получения самого большого по площади офиса этажа.

Задание 3

Создайте класс OfficeBuilding офисного здания.

Работа класса должна быть основана на двусвязном циклическом списке этажей с выделенной головой.

Номер офиса явно не хранится.

Нумерация офисов в здании сквозная и начинается с нуля.

Создайте приватный метод получения узла по его номеру.

Создайте приватный метод добавления узла в список по номеру.

Создайте приватный метод удаления узла из списка по его номеру.

Конструктор может принимать количество этажей и массив количества офисов по этажам.

Конструктор может принимать массив этажей офисного здания.

Создайте метод получения общего количества этажей здания.

Создайте метод получения общего количества офисов здания.

Создайте метод получения общей площади помещений здания.

Создайте метод получения общего количества комнат здания.

Создайте метод получения массива этажей офисного здания.

Создайте метод получения объекта этажа, по его номеру в здании.

Создайте метод изменения этажа по его номеру в здании и ссылке на обновленный этаж.

Создайте метод получения объекта офиса по его номеру в офисном здании.

Создайте метод изменения объекта офиса по его номеру в доме и ссылке типа офиса.

Создайте метод добавления офиса в здание по номеру офиса в здании и ссылке на офис.

Создайте метод удаления офиса по его номеру в здании.

Создайте метод getBestSpace() получения самого большого по площади офиса здания.

Создайте метод получения отсортированного по убыванию площадей массива офисов.

Задание 4

Опишите следующие классы ошибок.

Ошибка выхода за границы номеров помещений SpaceIndexOutOfBoundsException (необъявляемое исключение, расширяет IndexOutOfBoundsException).

Ошибка выхода за границы номеров этажей FloorIndexOutOfBoundsException (необъявляемое, расширяет IndexOutOfBoundsException).

Ошибка некорретной площади помещения InvalidSpaceAreaException (необъявляемое, расширяет IllegalArgumentException).

Ошибка некорретного количества комнат в помещении InvalidRoomsCountException (необъявляемое исключение, расширяет IllegalArgumentException).

Измените имеющиеся классы так, чтобы они корректно обрабатывали возможные ошибки и выбрасывали соответствующие исключения.

Задание 5

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

Задание 6

Создайте интерфейс Space помещения здания.

Интерфейс должен соответствовать общей функциональности Flat и Office и содержать следующие методы:

  • получения количества комнат,

  • изменения количества комнат,

  • получения площади,

  • изменения площади.

Классы, соответственно, должны реализовывать интерфейс (при необходимости измените классы).

Рекомендуется использовать возможности рефакторинга среды разработки.

Задание 7

Создайте интерфейс Floor этажа здания, работающий со ссылками типа Space.

Интерфейс должен соответствовать общей функциональности DwellingFloor и OfficeFloor и должен содержать следующие методы:

  • получения количества помещений на этаже,

  • получения общей площади помещений на этаже,

  • получения общего количества комнат в помещениях этажа,

  • получения массива всех помещений этажа,

  • получения помещения по его номеру,

  • изменения помещения по его номеру и ссылке на новое помещение,

  • вставки помещения по его номеру и ссылке на новое помещение,

  • удаления помещения по его номеру,

  • получения лучшего помещения на этаже.

Классы, соответственно, должны реализовывать интерфейс и работать со ссылками типа Space (с возможностью, например, добавить на жилой этаж офисное помещение).

Рекомендуется использовать возможности рефакторинга среды разработки.

Задание 8

Создайте интерфейс Building здания, работающий со ссылками типа Floor и Space.

Интерфейс соответствует общей функциональности Dwelling и OfficeBuilding и должен содержать следующие методы:

  • получения количества этажей в здании,

  • получения количества помещений в здании,

  • получения общей площади всех помещений здания,

  • получения общего количества комнат в помещениях здания,

  • получения массива этажей здания,

  • получения этажа здания по его номеру,

  • изменения этажа по его номеру и ссылке на новый этаж,

  • получения помещения по его номеру в здании,

  • изменения помещения в здании по номеру и ссылке на новое помещение,

  • вставке помещения в здании по будущему номеру и ссылке на новое помещение,

  • удаления помещения из здания,

  • получения лучшего помещения в здании,

  • получения отсортированного массива всех помещений.

Классы зданий, соответственно, должны реализовывать интерфейс и работать со ссылками типа Space и Floor (с возможностью, например, заменить в офисном здании этаж на жилой).

Рекомендуется использовать возможности рефакторинга среды разработки.