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