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

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

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

В процессе написания тестовых заданий ознакомьтесь методами класса Object.

Задание 1

Добавьте в классы помещений Flat и Office реализации метода String toString(), выводящего тип помещения, текущее количество комнат помещения и его площадь через запятую в скобках. Например, Flat (3, 55.0)

Добавьте в классы этажей DwellingFloor, OfficeFloor реализации метода String toString(). Методы выводят тип этажа, текущее количество помещений этажа и соответствующую информацию по каждому помещению, используя метод toString() помещения. Например,

DwellingFloor (3, Flat (3, 55.0), Flat (2, 48.0), Flat (1, 37.0))

Переопределите в классе HotelFloor метод String toString(). Метод выводит тип этажа, значение показателя звездности этажа, текущее количество помещений этажа и соответствующую информацию по каждому помещению. Например,

HotelFloor (5, 4, Flat (3, 55.0), Flat (2, 48.0), Flat (1, 37.0), Flat (2, 48.0))

Добавьте в классы зданий Dwelling, OfficeBuilding реализации метода String toString(). Методы выводят текущее количество этажей и соответствующую информацию о каждом помещении каждого этажа, используя toString() уровня этажа и помещения. Например,

Dwelling (2, DwellingFloor (3, Flat (...), ...), DwellingFloor (3, Flat (...), ...)

Переопределите в классе HotelBuilding метод String toString(). Метод выводит значение показателя звездности здания, текущее количество этажей и соответствующую информацию о каждом помещении каждого этажа, используя toString() уровня этажа и помещения. Например,

HotelBuilding (5, 4, HotelFloor(3, 4, Flat(...),...), HotelFloor(4, 4, Flat(...),...), HotelFloor(4, 4, Flat(...),...), HotelFloor(5, 4, Flat(...),...))

Рекомендуется использовать экземпляры класса StringBuffer.

Задание 2

Добавьте в классы помещений реализации методов boolean equals(Object object). Метод должен возвращать true только в том случае, если объект, на который передана ссылка, является помещением соответствующего типа и все соответствующие параметры помещений равны.

Добавьте в классы этажей реализации методов boolean equals(Object object). Метод должен возвращать true только в том случае, если объект, на который передана ссылка, является этажом соответствующего типа, количество помещений совпадает и сами помещения эквивалентны помещениям текущего объекта. Для экземпляров класса HotelFloor также должно проверяться совпадение количества звёзд.

Добавьте в классы зданий реализации методов boolean equals(Object object). Метод должен возвращать true только в том случае, если объект, на который передана ссылка, является зданием соответствующего типа, количество этажей совпадает и сами этажи эквивалентны помещениям текущего объекта.

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

Задание 3

Добавьте в классы помещений реализации методов int hashCode(). Значение хеш-функции помещения можно вычислить как значение последовательного побитового исключающего ИЛИ битового представления количества комнат помещения, и, например, первых 4 байтов и вторых 4-х байтов (для типа double) битовых представлений площадей помещений этажа (следует воспользоваться вспомогательными методами классов-оберток).

Добавьте в классы этажей реализации методов int hashCode(). Значение хеш-функции этажа можно вычислить как значение побитового исключающего ИЛИ количества помещений на этаже и значений хеш-функций помещений этажа. Для этажа отеля - как значение побитового исключающего ИЛИ количества помещений на этаже, показателя звездности этажа и значений хеш-функций помещений этажа.

Добавьте в классы зданий реализации методов int hashCode(). Значение хеш-функции здания вычисляется как значение побитового исключающего ИЛИ количества этажей здания и значений хеш-функций этажей здания.

Задание 4

Добавьте в интерфейс и классы помещений метод Object clone().

Добавьте в интерфейс и классы этажей метод Object clone().

Добавьте в интерфейс и классы зданий метод Object clone().

Клонирование должно быть глубоким.