homework_nc's People
homework_nc's Issues
Practice 3
Практическая работа.
Операторы, типы данных и структуры данных
в Java
Продолжая работать над проектом коллекции задач необходимо описать класс списка задач, который будет
хранить и работать со списком объектов, описанных в практической работе №2 (предполагается, что вы
скопируете файлы предыдущей практики в текущую, изменив номер практики).
Обязательное задание
Описать абстрактный класс ua.edu.sumdu.ta.yourname.prN.AbstractTaskList, который
должен содержать следующие методы:
● abstract void add(Task task) – метод для добавления не уникальных задач. Возможность
добавления пустых задач должна быть запрещена реализацией.
● abstract void remove(Task task) – метод для удаления всех задач равных входной.
Возможность удаления пустой задачи должна быть запрещена реализацией.
● abstract int size() — количество задач в текущем списке.
● abstract Task getTask(int index) — получить задачу под заданным номером (с нуля). Должна
быть реализована проверка корректности входного значения – допустимыми значениями является не
отрицательные числа не превышающие size().
Описать класс ua.edu.sumdu.ta.yourname.prN.ArrayTaskList, унаследовав его от
AbstractTaskList, который будет хранить список задач в массиве. Список реализовать своими
силами, без использования классов, реализующих java.util.List.
Размер массива задаётся с запасом. Когда массив полностью заполняется, его размер нужно увеличить
(создать массив большего размера и скопировать в него задачи из предыдущего). Для этого объявить
переменную, являющаяся константой для каждого из списков задач и указывающая количество элементов,
на которое следует расширить массив.
Список задач должен содержать следующие методы (определенные абстрактными в родительском классе):
● Методы добавления/удаления задачи:
○ void add(Task task)
○ void remove(Task task)
● Task getTask(int index) — получить задачу под заданным номером (с нуля).Объявить переменную, в которой будет храниться актуальное количество созданных списков задач (значение
должно быть одинаковым, независимо от списка задач, в котором вызывается). Она будет использоваться
конструктором класса ArrayTaskList.
Объявить текстовую константу (значение должно быть одинаковым, независимо от списка задач, в котором
вызывается). Заголовок каждой задачи из списка должен начинаться со значения, которое хранит в себе эта
переменная. Значение этой переменной – [EDUCTR][TA].
Изменить в классе AbstractTaskList метод size() убрав абстрактность и добавив реализацию, так как
его реализация не зависит от способа хранения данных в списке.
● int size() — количество задач в текущем списке.Дополнительное задание
● Task[] incoming(int from, int to) — массив задач из списка, время оповещения которых
находится между from (исключительно) и to (включительно).
Тестирование
Необходимо добавить в проект тесты, которые находятся в архиве pr3.unittests.zip (будут
доступны на занятии), а так же использовать тесты из предыдущей практики.
Practice 2
Задание
Создать класс ua.edu.sumdu.ta.yourname.pr2.Task, обладающий следующими методами
установки и получения значений полей класса:
● Методы получения и установки заголовка задачи:
- String getTitle()
- void setTitle(String title), где title – заголовок (название) задачи
● Методы проверки статуса задачи (задачу будем считать активной, если оповещение о ней должно
происходить в заданное время, иначе – будем считать задачу неактивной): - boolean isActive()
- void setActive(boolean active), где active – булев индикатор активности задачи
● Методы задания и получения времени оповещения о задаче: - void setTime(int time) — для единоразовой задачи, где time – время оповещения о задаче
- void setTime(int start, int end, int repeat) — для повторяющейся задачи, где start – время
начала оповещения о задаче, end – время прекращения оповещения о задаче , repeat –
интервал времени, через который необходимо повторить оповещение о задаче - int getTime() — время начала оповещения (для повторяющейся задачи) или время
единственного оповещения (для единоразовой задачи)○ int getStartTime() — время начала оповещения (для повторяющейся задачи) или время
единственного оповещения (для единоразовой задачи) - int getEndTime() — время окончания оповещения (для повторяющейся задачи) или время
единственного оповещения (для единоразовой задачи) - int getRepeatInterval() — интервал времени, через который необходимо повторить
оповещение о задаче (для повторяющейся задачи) или 0 (для единоразовой задачи) - boolean isRepeated() — информация о том, повторяется ли задача
● Метод, возвращающий описание данной задачи: - String toString() — возвращает строку со следующей информацией:
■ Task “<title>” is inactive – для неактивных задач
■ Task “<title>” at – для активных единоразовых задач
■ Task “<title>” from to every seconds – для активных
повторяющихся задач
Пример: Task “Сделать зарядку для зрения” from 3600 to 28800 every 1800 seconds
● Метод, возвращающий время следующего оповещения, после указанного времени time (не включая
его): - int nextTimeAfter(int time) — если после указанного времени оповещений больше нет или
задача неактивна, то результат должен быть -1.
Используя описанные выше методы, создайте два конструктора класса Task так, чтобы новая задача при
создании считалась неактивной: - Task(String title, int time) – для единоразовой задачи
- Task(String title, int start, int end, int repeat) – для повторяющейся задачи
Предусмотрите валидацию аргументов методов и конструкторов класса Task с помощью оповещения
пользователя о заданных невалидных аргументах методов или конструкторов.
Обратите, пожалуйста, внимание на то, чтобы Ваша реализация методов setTime(...) предусматривала
возможность конвертации созданных повторяющихся задачи в неповторяющиеся и наоборот.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.