Примеры практического задания №3

1) Создать обобщенный класс Array, предназначенный для хранения одномерного массива из N элементов. В классе должны быть реализованы следующие методы:

- конструктор, принимающий N в качестве аргумента;

- метод setItem для изменения произвольного элемента по индексу;

- метод getItem для получения произвольного элемента по его индексу;

- метод getCurrentItem для получения текущего элемента;

- метод nextItem для получения следующего элемента;

- метод prevItem для получения предыдущего элемента.

Для реализации методов getCurrentItem, nextItem, prevItem потребуется внутренний индекс текущего элемента (начальное значение 0). В методах nextItem, prevItem этот индекс должен смещаться в пределах допустимого диапазона (0…N-1). В случае выхода индекса за пределы диапазона методы nextItem, prevItem должны возвращать null. Написать главную функцию, демонстрирующую работу класса. В методах класса предусмотреть проверки на корректность передаваемых параметров.

 

2) Создать обобщенный класс Enum, предназначенный для хранения множества элементов. Отличие данного класса от обычного массива заключается в том, что в классе все элементы должны быть уникальны, без повторений. Например, новый элемент добавляется во множество, только если такого элемента там еще не было. В классе должны быть реализованы следующие методы:

- конструктор, принимающий N в качестве аргумента. Значение N – максимальное количество элементов во множестве;

- метод setItem для записи нового элемента во множество;

- метод getItems для получения всех элементов из множества;

- метод getIntersect для получения нового множества, представляющего собой пересечение множеств (элемент включается в результат, если он есть и в одном и во втором множестве одновременно);

- метод getUnion для получения нового множества, представляющего собой объединение множеств (элемент включается в результат, если он есть хотя бы в одном любом множестве);

- метод getDifferent для получения нового множества, представляющего собой разность множеств (элемент включается в результат, если он есть хотя бы в одном любом множестве, но не в двух множествах одновременно);

Написать главную функцию, демонстрирующую работу класса. В методах класса предусмотреть проверки на корректность передаваемых параметров.

 

3) Создать обобщенный класс CycleQueue, предназначенный для хранения элементов в виде структуры данных типа “циклическая очередь”. Эта структура данных представляет собой одномерный массив, заполнение элементов в котором всегда производится в конец, а извлечение элементов – с начала. Если в такую очередь поместить большее количество элементов, чем она способна принять, то элементы с начала очереди должны быть перезаписаны. При извлечении элементов из такой очереди всегда должен извлекаться самый первый из числа добавленных ранее (но не перезаписанных) элементов. В классе должны быть реализованы следующие методы:

- конструктор, принимающий N в качестве аргумента. Значение N – максимальное количество элементов в очереди;

- метод setItem для записи нового элемента в очередь;

- метод getItem для получения элемента из очереди;

- метод getCount для получения количества элементов в очереди;

- метод isEmpty, определяющий является ли очередь пустой.

Написать главную функцию, демонстрирующую работу класса. В методах класса предусмотреть проверки на корректность передаваемых параметров.

 

4) Создать обобщенный класс DoubleQueue, предназначенный для хранения элементов в виде структуры данных типа “двусторонняя очередь”. Эта структура данных представляет собой одномерный массив, заполнение элементов в котором может производиться как в конец, так и в начало. Извлечение элементов также может производиться как с начала, так и с конца очереди. В классе должны быть реализованы следующие методы:

- конструктор, принимающий N в качестве аргумента. Значение N – максимальное количество элементов в очереди;

- метод setItemStart для записи нового элемента в начало очереди;

- метод getItemStart для получения элемента из начала очереди;

- метод setItemEnd для записи нового элемента в конец очереди;

- метод getItemEnd для получения элемента из конца очереди;

- метод getCount для получения количества элементов в очереди.

Написать главную функцию, демонстрирующую работу класса. В методах класса предусмотреть проверки на корректность передаваемых параметров.

 

5) Создать обобщенный класс PriorityQueue, предназначенный для хранения элементов в виде структуры данных типа “приоритетная очередь”. Эта структура данных представляет собой одномерный массив, запись элементов в котором производиться с конца, а извлечение только с начала. При записи элементов указывается также его приоритет (целое число). При извлечении элементов в аргументах метода можно указывать приоритет, и тогда будет извлекаться первый элемент, имеющий указанный приоритет. В классе должны быть реализованы следующие методы:

- конструктор, принимающий N в качестве аргумента. Значение N – максимальное количество элементов в очереди;

- метод setItem для записи нового элемента в очередь (имеет 2 аргумента – элемент и приоритет);

- метод getItem для получения первого элемента из очереди;

- метод getItemPriority для получения первого элемента из очереди, но только имеющего указанный приоритет;

- метод getCount для получения количества элементов в очереди.

Написать главную функцию, демонстрирующую работу класса. В методах класса предусмотреть проверки на корректность передаваемых параметров.