Gmail / Лабораторная работа №5
.docПрактическая работа №5
Задание на практическую работу
Ознакомиться с возможностями механизма рефлексии, новыми возможностями языка Java, появившимися в версии 5.0, коллекциями.
Задание 1
Написать код (можно в методе main()), который с помощью рефлексии вызывает метод setMark() класса Student.
В параметрах командной строки приложения указывается полное имя класса, имя метода, который следует вызвать у класса (метод нестатический) и числовые параметры для этого метода (типа int).
На экран должен быть выведен результат выполнения этого метода (информация о студенте, включая фамилию, список предметов и оценок).
Задание 2
В классе Pupils написать метод createPupil(), который получает значение фамилии, размер массивов предметов и оценок, ссылку типа Pupil, по которой средствами рефлексии определяет реальный класс объекта, находит в нем конструктор и создает объект средствами рефлексии и того же класса, что и переданный параметр. Если конструктор с параметрами типа String и int отсутствует, то следует вернуть пустую ссылку.
Задание 3
Добавить новый класс Collegeboy, использующий для хранения предметов и оценок коллекцию HashMap, причем в параметризованной форме. Фамилия хранится в поле типа String. В классе должны следующие быть методы:
метод для получения фамилии,
метод для модификации фамилии,
метод, возвращающий список всех предметов,
метод, возвращающий список всех оценок,
метод, возвращающий оценку по заданному предмету,
метод добавления предмета и оценки в коллекцию,
метод для получения размера коллекции,
метод, выводящий на экран список всех предметов,
метод, выводящий на экран список всех оценок.
Последние два метода должны использовать for-each.
Задание 4
Изменить в классе Pupils метод, возвращающий среднее арифметическое оценок ученика, так, чтобы он возвращал среднее арифметическое группы учеников (с использованием аргумента переменной длины).
Задание 5
Изменить методы текстового чтения и записи класса Pupils таким образом, чтобы они использовали возможности форматированного ввода и вывода. Метод записи должен использовать метод printf(), а метод чтения - класс Scanner.
Вопросы
-
Рефлексия. Возможности механизма рефлексии. Участники механизма рефлексии.
-
Получение представления класса. Возможности класса Class. Передача параметров в методы. Создание экземпляров классов. Вызов методов. Вызов статического метода.
-
Статический импорт.
-
Автоупаковка и автораспаковка (автобоксинг).
-
Аргументы переменной длины.
-
Улучшенный цикл for.
-
Настраиваемые типы. Особенности настраиваемых типов.
-
Ограниченные типы. Метасимвольный аргумент. Метасимвол с ограничениями.
-
Настраиваемые методы, конструкторы, интерфейсы.
-
Перечислимые типы.
-
Метаданные.
-
Классы-обертки примитивных типов.
-
Класс Math. Класс String и класс StringBuffer. Класс Arrays.
-
Классы для работы со временем и локализацией. java.util.Random.
-
Коллекции. Интерфейс Collection.
-
Интерфейс Set. Интерфейс List.
-
Интерфейс Iterator. Интерфейс Map.
-
Классы коллекций.
-
Класс Collections. Синхронизированные обертки. Неизменяемые обертки.