Задание на лабораторную работу
Для каждого класса необходимо предоставить его графическое представление в диаграмме классов UML. Графическое представление добавить в протокол лабораторной работы и принести на защиту лабораторной работы.
Класс DynamicIntArray
Необходимо создать класс DynamicIntArray, который реализует функционал динамического массива целых чисел.
При реализации динамического массива учитывайте следующее:
при реализации класса вам необходимо указать область видимости для полей и методов. Подумайте о том, какие методы необходимо отнести к "интерфейсу", а какие к реализации;
размер динамического массива для внешнего пользователя не имеет значения и теоретически неограничен;
внешний пользователь не должен знать и догадываться, что динамический массив "внутри" реализован с помощью обычного статического массива;
вы должны предусмотреть различные проверки на некорректность индексов, которые мог ввести пользователь;
вы должны написать "реализацию" класса таким образом, чтобы можно моделировать динамическое поведение массива с помощью обычного статического;
продумайте, какие аргументы методы должны принимать и какие значения возвращать.
Перейдите во вкладку "Подсказка", чтобы получить подсказку, которая поможет вам в реализации класса или попробуйте реализовать класс без подсказки.
При создании динамического массива инициализируйте внутренний статический массив с каким-то дефолтным изначальным размером;
При вставке элементов проверяйте, не выходите ли вы за пределы внутреннего статического массива;
Если внутренний массив переполнен, создавайте новый массив большего размера: создавайте новый массив, копируйте значения из старого массива в новый, заменяйте новый массив на старый. Помните, что массивы в Java - объекты и что поле - просто указатель на массив и что указатель может указывать на другой массив;
При уменьшении размера массива реализуйте уменьшение внутреннего статического массива. Подумайте, как это лучше сделать, чтобы не уменьшать внутренний массив при каждом удалении элемента.
ВАЖНО! Динамический массив необходимо реализовать с помощью статического целочисленного массива!
Для внешнего пользователя класса поведение класса выглядит следующим образом:
пользователь может создать новый динамический массив с конструктором без параметров или с указанием начальных значений динамического массива;
пользователь может вставить элемент в определенный индекс динамического массива (остальные элементы динамического массива сдвигаются вправо) с помощью метода
add(). Если методadd()вызывается без указания индекса, элемент добавляется в конец динамического массива;пользователь может перезаписать значение i-го элемента динамического массива с помощью метода
set();пользователь может удалить элемент динамического массива по индексу с помощью метода
removeAt(). Если методremoveAt()вызывается без указания индекса, то удаляется последний элемент в динамическом массиве.пользователь может удалить первое вхождение значения в динамическом массиве с помощью метода
remove().пользователь может получить индекс первого вхождения элемента в динамическом массиве с помощью метода
indexOf(). Подумайте о том, как сигнализировать пользователю о том, что искомый элемент в динамическом массиве не найден;пользователь может проверить, есть ли такой элемент в массиве с помощью метода
contains();пользователь может получить размер динамического массива с помощью метода
size();пользователь может проверить, пустой ли массив с помощью метода
isEmpty();пользователь может очистить массив полностью с помощью метода
clear().
Last updated
Was this helpful?