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

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

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

  2. Разработать иерархическую модель классов предметной области согласно варианту, описанному в таблице 3.1;

  3. Создать класс, для проверки работоспособности разработанной в пункте 2 модели;

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

Таблица 3.1 – Варианты заданий

Вариант

Предметная область

1

Транспортные средства

2

Цветы

3

Фрукты

4

Люди

5

Животные

6

Продукты питания

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

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

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

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

  4. Ход выполнения работы.

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

  6. Выводы.

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

Дайте определение следующим понятиям:

  1. Интерфейс;

  2. Объекты, классы, наследование;

  3. Абстрактный класс;

  4. Наследование;

  5. Полиморфизм;

  6. Инкапсуляция;

  7. Реализация интерфейса;

  8. Охарактеризуйте паттерн Singleton;

  9. Охарактеризуйте паттерн FactoryMethod;

  10. Охарактеризуйте паттерн 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 методы, реализующие следующие операции над деревом:

  1. Добавление дочернего элемента заданного узла addSon(node, data) в начало или конец перечня сыновей этого узла. Метод получает ссылку на узел node, в который необходимо добавить дочерний элемент с данными data;

  2. Удаление дочернего элемента заданного узла delSon(data). Метод получает данные data удаляемого дочернего узла;

  3. Перемещение элемента из одного узла дерева в другой movNode(parentNode, movedNode). Метод получает ссылки на новый родительский узел parentNode и на перемещаемый дочерний узел movedNode;

  4. Получение getData() и установка setData(data) данных определенного узла;

  5. Поиск узла, содержащего определенные данные find(data). Метод получает ссылку на данные искомого узла;

  6. Проход по дереву в прямом forwardTraverse () и обратном порядке backwardTraverse () с возможностью выполнить над каждым пройденным узлом определенные действия, например, вывод на экран данных из узла (подробнее способ передачи выполняемой операции в метод будет описан ниже);

  7. Определение статуса узла (лист или узел) isLeaf() или isNode();

  8. Получение ссылки на корневой узел дерева getRoot().

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]