- •Основы программирования на языке java в среде eclipse
- •Ответственный за выпуск: в.И. Павловський, зав. Кафедрою информационных и компьютерных систем, канд. Техн. Наук, доцент.
- •2.1 Задание на лабораторную работу 19
- •7.3 Порядок выполнения работы 103
- •7.4 Содержимое отчета 103
- •7.5 Контрольные вопросы 104
- •Введение
- •1Лабораторная работа №1 Изучение среды разработки Eclipse
- •1.1 Задание на лабораторную работу
- •1.2 Краткие теоретические сведения
- •1.2.1Создание проекта
- •1.2.2Создание нового класса Java
- •1.3 Порядок выполнения работы
- •1.4 Содержимое отчета
- •Краткие теоретические сведения.
- •1.5 Контрольные вопросы
- •2Лабораторная работа №2 Основы языка Java
- •2.1 Задание на лабораторную работу
- •2.2 Краткие теоретические сведения
- •2.2.1Создание объектов
- •2.2.2Примитивные типы
- •2.2.3Числа высокой точности
- •2.2.4Уничтожение объектов
- •2.2.5Видимость имен
- •2.2.6Использование других компонентов
- •2.2.7Ключевое слово static
- •2.2.8Массивы
- •2.2.9Обработка ошибок с помощью исключений
- •2.3 Порядок выполнения работы
- •2.4 Содержимое отчета
- •2.5 Контрольные вопросы и задания
- •3Лабораторная работа №3 Объектная модель языка Java
- •3.1 Задание на лабораторную работу
- •3.2 Краткие теоретические сведения
- •3.3 Порядок выполнения работы
- •Краткие теоретические сведения.
- •4.2 Краткие теоретические сведения
- •4.2.1Классы дерева и узла
- •4.2.2Вопросы сокрытия реализации
- •4.2.3Пользовательский интерфейс
- •4.3 Порядок выполнения работы
- •4.4 Содержимое отчета
- •Краткие теоретические сведения.
- •4.5 Контрольные вопросы
- •5Лабораторная работа №5 Изучение основ объектно-ориентированного программирования на языке Java. Часть 2
- •5.1 Задание на лабораторную работу
- •5.2 Краткие теоретические сведения
- •5.2.1Классы деревьев и интерфейсы
- •5.2.2Рекурсивный проход по деревьям разных классов
- •5.2.3Расширение ранее созданных классов специфическими операциями пользователей
- •5.2.4Вопросы оптимизации кода
- •5.3 Порядок выполнения работы
- •5.4 Содержимое отчета
- •Краткие теоретические сведения.
- •5.5 Контрольные вопросы
- •6Лабораторная работа №6 Изучение коллекций Java и системы ввода-вывода
- •6.1 Задание на лабораторную работу
- •6.2 Краткие теоретические сведения
- •6.2.1Представление и реализация дерева на основе коллекций
- •В описании узла дерева необходимо создать и инициализировать объект класса список или набор сыновей, например
- •Количество сыновей узла дерева определяется следующим образом:
- •Элементу набора с индексом I выполняется путем получения массива из набора
- •6.2.2Представление и реализация дерева на основе ассоциативных массивов (карт отображений)
- •В описании узла дерева необходимо создать и инициализировать объект ассоциативный массив сыновей, например
- •Количество сыновей узла дерева определяется следующим образом:
- •6.2.3Доступ к коллекции или ассоциативному массиву через итератор
- •6.2.4Использование обобщений Java 5
- •В описании узла дерева необходимо создать и инициализировать коллекцию настраиваемый список, например
- •6.2.5Сериализация и десериализация дерева в файл
- •6.2.6Ввод и вывод в потоки со сжатием данных
- •6.3 Порядок выполнения работы
- •Краткие теоретические сведения.
- •7.2 Краткие теоретические сведения
- •7.2.1Многопоточность
- •7.2.2Процессы, потоки и приоритеты
- •7.2.3Приоритеты потоков в приложениях Java
- •7.2.4Реализация многопоточности в Java
- •7.2.5Функциональность класса Thread
- •7.2.6Реализация интерфейса Runnable
- •7.2.7Синхронизация потоков
- •7.2.8Синхронизация методов
- •7.2.9Блокировка потока
- •7.2.10Синхронизация доступа к совместно используемым данным.
- •7.2.11Избыточная синхронизация
- •7.2.12Вызов метода wait
- •7.2.13Документирование уровней безопасности
- •7.2.14Работа с графикой Графика 2d
- •Пространства координат
- •Режим рисования
- •Создание цвета
- •Основные методы рисования
- •Рисование фигур средствами Java2d
- •Класс BasicStroke
- •Класс GeneralPath
- •Классы GradientPaint и TexturePaint
- •7.3 Порядок выполнения работы
- •7.4 Содержимое отчета
- •Краткие теоретические сведения;
- •7.5 Контрольные вопросы
- •Многопоточность;
- •РекомендУемая литература
В описании узла дерева необходимо создать и инициализировать объект класса список или набор сыновей, например
/* ListNode.java */ 1 import java.util.*; 2 public class ListNode implements INode{ 3 protected List listSon = new ArrayList(); 4 5 } 6 } |
/* SetNode.java */ 1 import java.util.*; 2 public class SetNode implements INode{ 3 protected Set setSon = new LinkedHashSet(); 4 5 } 6 } |
Количество сыновей узла дерева определяется следующим образом:
int countList = listSon.size();
int countSet = setSon.size();
Добавление сына в список или набор сыновей реализуется с помощью вызова метода add( ).
INode node;
node.setData(…);
listSon.add(node);
setSon.add(node);
Доступ к сыну узла дерева:
элементу списка с индексом i выполняется следующим образом
node = (INode)listSon.get(i); |
или путем получения массива из списка
node = (INode)listSon.toArray()[i]; |
Элементу набора с индексом I выполняется путем получения массива из набора
node = (INode)setSon.toArray()[i]; |
Следует обратить внимание на типизацию ссылки типа Object, получаемой из коллекции.
6.2.2Представление и реализация дерева на основе ассоциативных массивов (карт отображений)
Ассоциативный массив или карта отображений (map) - это объект, который хранит ассоциации (связи) между ключами и значениями, или иначе – пары ключ/значение, например <ЧГТУ, объект-ЧГТУ>, <№зачетки, объект-СТУДЕНТ>. В качестве ключей не могут использоваться примитивные типы, могут использоваться только объекты.
В Java различают интерфейсы карт отображений и классы карт отображений.
В состав интерфейсов карт отображений входят – Map, Map.Entry и SortedMap, которые предназначены:
Map - для отображения уникальных ключей в значения;
Map.Entry – для описания отдельного элемента (пары ключ/значение) карты;
SortedMap – расширяет Map и поддерживает ключи или пары в отсортированном порядке.
К наиболее часто используемым методам интерфейса Map относятся:
Object put (Object k, Object v) – добавляет новую пару ключ/значение в вызывающую карту, например put (ЧГТУ, objectSTU);
Object get (Object key) – возвращает значение, связанное с ключом key;
Set entrySet() – переводит карту в множество пар <ключ, значение>, т.е. возвращает набор (множество), который содержит объекты типа Map.Entry;
Set keySet() – возвращает набор (множество) ключей карты;
Collection values() – возвращает коллекцию значений всех пар ассоциативного массива;
int size() – возвращает размер карты.
К наиболее часто используемым методам интерфейса Map.Entry относятся:
Object getKey() – возвращает ключ текущей пары (входа) вызывающей карты;
Object getValue() – возвращает значение текущей пары (входа) вызывающей карты;
Классы ассоциативных массивов (карт отображений) реализуют методы интерфейсов ассоциативных массивов. Стандартные классы ассоциативных массивов Java можно разбить на две группы – абстрактные и конкретные классы.
Абстрактные классы ассоциативных массивов обеспечивают частичную реализацию интерфейсов и используются для создания конкретных классов ассоциативных массивов.
Конкретные классы ассоциативных массивов расширяют абстрактные классы и обеспечивают полную реализацию интерфейсов ассоциативных массивов. Конкретные классы могут использоваться для непосредственного создания экземпляров этих классов.
К конкретным классам ассоциативных массивов относятся классы:
HashMap - ассоциативный массив в виде хеш-таблицы, обеспечивают быстрый доступ к объектам;
TreeMap - ассоциативный массив в виде сбалансированного дерева, поддерживающего сортированный порядок элементов;
LinkedHashMap - отличается от HashMap, тем что хранит элементы порядке добавления.
Примечание. Следует обратить внимание, что с целью универсальности ассоциативные массивы содержат ссылки типа Object. Поэтому для получения из ассоциативного массива ссылки на конкретный объект ссылку типа Object приходится типизировать конкретным типом.
В рамках данной лабораторной работы следует использовать один из классов ассоциативных массивов, например, LinkedHashMap.
Общая структура использования классов ассоциативных массивов следующая:
