Добавьте модификаторы доступа к членам классов, разработанных в лабораторной работе 2 (классы TimeSpan
, BankAccount
и Student
).
Подумайте над тем, какие члены класса сделать приватными, а какие публичными
Для модифицированных классов из второй лабораторной работы нарисуйте диаграммы классов UML.
Необходимо создать класс IntStack
, который реализует функционал стека целых чисел с помощью статического массива.
Нарисуйте класс в диаграмме классов UML
При реализации стека учитывайте следующее:
при реализации класса вам необходимо указать область видимости для полей и методов. Подумайте о том, какие методы необходимо отнести к "интерфейсу", а какие к реализации;
размер стека для внешнего пользователя не имеет значения и теоретически неограничен;
внешний пользователь не должен знать и догадываться, что стек "внутри" реализован с помощью обычного статического массива;
вы должны написать "реализацию" класса таким образом, чтобы можно моделировать динамическое поведение стека с помощью обычного статического массива;
продумайте, какие аргументы методы должны принимать и какие значения возвращать.
Перейдите во вкладку "Подсказка", чтобы получить подсказку, которая поможет вам в реализации класса или попробуйте реализовать класс без подсказки.
При создании объекта стека инициализируйте внутренний статический массив с каким-то изначальным размером;
При вставке элементов проверяйте, не выходите ли вы за пределы внутреннего статического массива;
Если внутренний массив переполнен, создавайте новый массив большего размера: создавайте новый массив, копируйте значения из старого массива в новый, заменяйте новый массив на старый. Помните, что массивы в Java - объекты и что поле - просто указатель на массив и что указатель может указывать на другой массив;
При уменьшении размера стека реализуйте уменьшение внутреннего статического массива. Подумайте, как это лучше сделать, чтобы не уменьшать внутренний массив при каждом удалении элемента из стека.
ВАЖНО! Стек необходимо реализовать с помощью статического целочисленного массива!
НЕ ИСПОЛЬЗУЙТЕ КОЛЛЕКЦИИ И ПОТОКИ ДАННЫХ, ТОЛЬКО МАССИВЫ
Для внешнего пользователя класса, поведение класса выглядит следующим образом:
пользователь может создать новый стек с конструктором без параметров;
пользователю доступна команда pop()
для извлечения элемента из стека. Метод pop()
возвращает извлеченный элемент. При попытке извлечь из пустого стека, метод возвращает 0
или выбрасывает исключение (реализуйте выброс исключения, если вы знаете, как это делать и что такое исключение);
пользователю доступна команда push()
, которая добавляет элемент в стек;
пользователю доступна команда peek()
для просмотра элемента на вершине стека без его исключения.
пользователь может получить значение количества элементов в стеке с помощью метода size()
;
пользователь может проверить, пустой ли стек с помощью метода isEmpty()
;
пользователь может очистить стек полностью с помощью метода clear()
.
Создайте Java-классы исходя из диаграммы, представленной ниже. Код методов реализовывать не нужно, только заголовки и общую структуру классов.