
- •Основы программирования на языке 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 Контрольные вопросы
- •Многопоточность;
- •РекомендУемая литература
3.3 Порядок выполнения работы
Ознакомиться с заданием на лабораторную работу;
Разработать иерархическую модель классов предметной области согласно варианту, описанному в таблице 3.1;
Создать класс, для проверки работоспособности разработанной в пункте 2 модели;
Составить отчет о выполнении лабораторной работы.
Таблица 3.1 – Варианты заданий
Вариант |
Предметная область |
1 |
Транспортные средства |
2 |
Цветы |
3 |
Фрукты |
4 |
Люди |
5 |
Животные |
6 |
Продукты питания |
3.4 Содержимое отчета
Название и тема лабораторной работы.
Цель лабораторной работы.
Краткие теоретические сведения.
Ход выполнения работы.
Исходные тексты программ.
Выводы.
3.5 Контрольные вопросы
Дайте определение следующим понятиям:
Интерфейс;
Объекты, классы, наследование;
Абстрактный класс;
Наследование;
Полиморфизм;
Инкапсуляция;
Реализация интерфейса;
Охарактеризуйте паттерн Singleton;
Охарактеризуйте паттерн FactoryMethod;
Охарактеризуйте паттерн AbstractFactory;
4ЛАБОРАТОРНАЯ РАБОТА №4 Изучение основ объектно-ориентированного программирования на языке Java. Часть 1
Цель работы: Изучить основные конструкции языка Java для написания объектно-ориентированных программ. Научиться применять их на практике на примере разработки древовидной структуры данных.
4.1 Задание на лабораторную работу
В ходе выполнения данной лабораторной работы необходимо реализовать структуру данных сильноветвящееся дерево или просто дерево (Tree), знакомую по курсу "Структуры и алгоритмы обработки данных". Например:
A
В С D
E F G H J
В дереве могут храниться данные любого типа.
В данной лабораторной работе необходимо привести реализацию дерева на основе списочной структуры, где каждый узел ссылается на следующего брата и на первого сына
|
А |
null |
|
|
|
|
|
||||||
|
|
|
|
|
|
||||||||
|
B |
|
|
null |
C |
|
|
|
D |
null |
|
null |
E |
|
|
null |
F |
null |
|
null |
G |
|
|
null |
H |
|
|
null |
J |
null |
Основное внимание необходимо уделить проектированию структуры данных, а также сокрытию ее реализации.
4.2 Краткие теоретические сведения
4.2.1Классы дерева и узла
Для реализации дерева необходимо использовать композицию, двух классов – класс дерева Tree и класс узла Node.
Рисунок 4.1 – Композиция классов узла и дерева.
Для построения дерева на основе списочной структуры, структура узла Node имеет вид, представленный на рисунке 4.2:
Рисунок 4.2 – Структура узла.
Класс Tree должен предоставить public методы, реализующие следующие операции над деревом:
Добавление дочернего элемента заданного узла addSon(node, data) в начало или конец перечня сыновей этого узла. Метод получает ссылку на узел node, в который необходимо добавить дочерний элемент с данными data;
Удаление дочернего элемента заданного узла delSon(data). Метод получает данные data удаляемого дочернего узла;
Перемещение элемента из одного узла дерева в другой movNode(parentNode, movedNode). Метод получает ссылки на новый родительский узел parentNode и на перемещаемый дочерний узел movedNode;
Получение getData() и установка setData(data) данных определенного узла;
Поиск узла, содержащего определенные данные find(data). Метод получает ссылку на данные искомого узла;
Проход по дереву в прямом forwardTraverse () и обратном порядке backwardTraverse () с возможностью выполнить над каждым пройденным узлом определенные действия, например, вывод на экран данных из узла (подробнее способ передачи выполняемой операции в метод будет описан ниже);
Определение статуса узла (лист или узел) isLeaf() или isNode();
Получение ссылки на корневой узел дерева getRoot().
Очевидно, что только некоторые из перечисленных выше операций имеют отношение непосредственно к интерфейсу дерева - проход по дереву, получение корневого узла, поиск узла с определенными данными, перемещение дочернего элемента из одного узла дерева в другой.
Операции получение и установка ключа, определение статуса узла относятся к понятию узел дерева. Кроме того, операции добавление дочернего элемента и удаление дочернего элемента должны быть доступны как на уровне дерева, так и на уровне узла. В последнем случае методы для выполнения этих операций не должны принимать ссылок на необходимый родительский узел, поскольку им будет служить непосредственно ссылка, на которой выполняется метод.