Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_ООП_2010.doc
Скачиваний:
0
Добавлен:
05.02.2020
Размер:
1.81 Mб
Скачать

5.3 Порядок выполнения работы

  1. Ознакомится с заданием на лабораторную работу.

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

  3. Написать тестовую программу, демонстрирующую работоспособность всех методов двух реализаций деревьев. За основу взять GUI разработанный в лабораторной работе №4, добавив элемент выбора реализации дерева (например, Radiobutton). Тестовая программа должна оперировать с интерфейсным типом дерева. При обходе дерева, операции над узлами должны осуществляться с помощью безымянных классов.

  4. Составить отчет о выполнении лабораторной работы.

5.4 Содержимое отчета

  1. Название и тема лабораторной работы.

  2. Цель лабораторной работы.

  3. Краткие теоретические сведения.

  4. Ход выполнения работы (реальный, а не переписанный из раздела 3.3)

  5. Исходные тексты программ.

  6. Диаграмма классов.

  7. Выводы.

5.5 Контрольные вопросы

  1. Назначение пакетов;

  2. Спецификаторы доступа;

  3. Понятие программного интерфейса в Java;

  4. Абстрактные классы и методы;

  5. Синтаксис наследования;

  6. Особенности внутренних классов;

  7. Назначение безымянных внутренних классов;

  8. Инициализация объектов в Java;

  9. Отложенная инициализация;

  10. Внутренние безымянные классы;

  11. Охарактеризуйте паттерн CallBack;

  12. Охарактеризуйте паттерн Event;

  13. Охарактеризуйте паттерн Command;

  14. Охарактеризуйте паттерн Enum.

6Лабораторная работа №6 Изучение коллекций Java и системы ввода-вывода

Цель работы: Изучить основы работы с классами коллекций Java, а также системой ввода-вывода. Научиться применять встроенные механизмы сериализации Java.

6.1 Задание на лабораторную работу

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

Контейнерная библиотека Java решает вопрос хранения объектов, рассматривая его как совокупность двух различных концепций – коллекции, реализующие интерфейс Collection и таблицы (или карты отображений, ассоциативные массивы) реализующие интерфейс Map.

В лабораторной работе должны быть реализованы следующие способы представления и реализации совокупности дочерних элементов узла дерева:

    1. Списков (интерфейс java.util.List). Все дочерние элементы в узле должны храниться в виде элементов списка.

    2. Множеств (наборов) Java (интерфейс java.util.Set). Все дочерние элементы в узле должны храниться в виде элементов множества.

    3. Ассоциативных массивов (карт отображений) Java (интерфейс java.util.Map). Все дочерние элементы в узле должны храниться в виде элементов ассоциативного массива, при этом каждому узлу должен быть сопоставлен определенный ключ.

Выполнение задания на лабораторную работу предполагает четыре этапа:

  1. Представление и реализация дерева на основе коллекций и ассоциативных массивов;

  2. Модернизация результатов 1-го этапа с использованием итераторов;

  3. Модернизация результатов 1-го или 2-го этапов с использованием обобщений Java 5;

  4. Дополнение результатов 1-го, 2-го или 3-го этапов средствами сериализации и архивирования.

6.2 Краткие теоретические сведения

6.2.1Представление и реализация дерева на основе коллекций

Коллекция это группа определенным образом организованных объектов. В Java различают интерфейсы коллекций и классы коллекций.

В состав интерфейсов коллекций входят собственно интерфейс Collection и его расширения – List, Set и SortedSet, которые предназначены соответственно для обработки списков, множеств и сортированных множеств. В дополнение к этим интерфейсам коллекции используют следующие интерфейсы: Comparator, Iterator и ListIterator.

Методы интерфейсов коллекций List, Set и SortedSet интуитивно понятны и могут быть предоставлены средствами визуальной среды разработки программ.

Классы коллекций реализуют методы интерфейсов коллекций. Стандартные классы коллекций Java можно разбить на две группы – абстрактные и конкретные классы коллекции.

Абстрактные классы коллекций обеспечивают частичную реализацию интерфейсов и используются для создания конкретных классов коллекций (AbstractCollection, AbstractList, AbstractSet).

Конкретные классы коллекций коллекции расширяют абстрактные классы и обеспечивают полную реализацию интерфейсов коллекций. Конкретные классы могут использоваться для непосредственного создания экземпляров этих классов.

К конкретным классам коллекций относятся классы: LinkedList (связный список), ArrayList (список - динамический массив ссылок), HashSet (множество в виде хеш-таблицы), TreeSet (множество в виде упорядоченного дерева) и LinkedHashSet (отличается от HashSet тем, что хранит элементы множества в порядке добавления).

Примечание. Следует обратить внимание, что с целью универсальности коллекции содержат ссылки на тип Object. Поэтому для получения из коллекции ссылки на конкретный объект ссылку типа Object приходится типизировать конкретным типом.

В рамках данной лабораторной работы следует использовать два класса коллекций, например, ArrayList для списка и LinkedHashSet для набора.

Общая структура использования классов коллекций следующая: