Coder Social home page Coder Social logo

homework_nc's People

Contributors

jeremenko avatar

Watchers

 avatar

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 photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.