Напишите библиотеку, предоставляющую API для работы с расписанием лекций из первого задания.
Здесь мы хотим проверить ваши знания в области JavaScript и способность реализовать простые алгоритмы. Также нам важно увидеть, что вы можете выделить основные компоненты приложения и организовать их взаимодействие. Кроме того, мы хотим оценить ваше умение принимать обоснованные технические решения и объяснять их.
- Студенты «Мобилизации» обучаются в нескольких школах и посещают лекции.
- Лекции проходят в аудиториях в определённые часы и дни.
- Некоторые лекции проводятся одновременно для студентов нескольких школ.
К примеру, лекция «Параллельные и распределённые вычисления» проводилась 15 июня с 19:00 до 21:30 в аудитории «Синий кит» для студентов Школы разработки интерфейсов и Школы дизайна.
- У каждой лекции есть свое название и указана фамилия лектора.
- У каждой школы есть название и указано количество студентов.
- У каждой аудитории есть название, указана вместимость и дано описание, где она находится.
- просмотр расписания школы в заданный интервал дат;
- просмотр графика лекций в аудитории в заданный интервал дат;
- ввод и редактирование данных о лекциях;
- ввод и редактирование данных о школах;
- ввод и редактирование данных об аудиториях.
- Для одной школы не может быть двух лекций одновременно.
- В одной аудитории не может быть одновременно двух разных лекций.
- Вместимость аудитории должна быть больше или равной количеству студентов на лекции. Пожалуйста, придумайте и добавьте другие проверки.
Любое из этих заданий не обязательно, но их выполнение будет плюсом.
- Сериализация / десериализация в разные форматы данных.
- Постоянное хранение данных где-либо.
- Тесты к библиотеке.
- Веб-интерфейс или интерфейс командной строки для реализованной библиотеки.
- Schedule.create(type, options)
- Schedule.get(type, options)
- Schedule.change(type, options)
- Schedule.delete(type, options)
-
Classroom
- Classroom.id
- Classroom.name
- Classroom.capacity
- Classroom.description
- Classroom.lecturesId
- Classroom.getId()
- Classroom.getName()
- Classroom.setName(newName)
- Classroom.getCapacity()
- Classroom.setCapacity(newCapacity)
- Classroom.getDescription()
- Classroom.setDescription(newDescription)
- Classroom.getLecturesId()
- Classroom.addLecturesId(newLectureId)
- Classroom.deleteLecturesId(LectureId)
-
School
- School.id
- School.name
- School.amount
- School.lecturesId
- School.getId()
- School.getName()
- School.setName(newName)
- School.getAmount()
- School.setAmount(newAmount)
- School.getLecturesId()
- School.addLecturesId(newLectureId)
- School.deleteLecturesId(LectureId)
-
Lecture
- Lecture.id
- Lecture.name
- Lecture.lecturer
- Lecture.time
- Lecture.classroomId
- Lecture.schoolsId
- Lecture.getId()
- Lecture.getName()
- Lecture.setName(newName)
- Lecture.getLecturer()
- Lecture.setLecturer(newLecturer)
- Lecture.getLectureTime()
- Lecture.setLectureTime(newTime)
- Lecture.getClassroomId()
- Lecture.setClassroomId(newClassroomId)
- Lecture.getSchoolsId()
- Lecture.setSchoolsId(newSchoolsId)
Создание элемента расписания
Строка
, может принимать следующие значения:
- school - при добавлении школа
- classroom - при добавлении аудитории
- lecture - при добавлении лекции
Объект
, содержащий свойства, необходимые для создания экземпляра класса.
В зависимости от type принимает следующие значения:
- name -
строка
Название школы - amount -
число
Количетво студентов в школе
- name -
строка
Название аудитории - capacity -
число
Вместимость аудитории - description -
строка
Описание местоположения аудитории
- name -
строка
Название название лекции - lecturer -
строка
ФИО лектора - time -
массив вида [начало лекции, конец лекции]
Время проведения лекции - classroomId -
число
Id аудитории, в которой проводится лекция - schoolsId -
массив чисел
Массив школ
Получение элемента расписания
Строка
, может принимать следующие значения:
- school - при получении школа
- classroom - при получении аудитории
- lecture - при получении лекции
Объект
, содержащий свойства запрашиваемого элемента
В зависимости от type принимает следующие значения:
- id -
число
id школы
- id -
число
id аудитории
-
id -
число
id лекции -
request = 'ownObject' -
строка
вернутся экземпляр класса Lecture -
id -
число
id аудитории -
request = 'classroomLectures' -
строка
вернется массив экземпляров класса Lecture, которые проводятся для школы с соответствующим id -
id -
число
id аудитории -
request = 'classroomLecturesInterval' -
строка
вернется массив экземпляров класса Lecture, которые проводятся в аудитории с соответствующим id в определенный временной период -
time -
массив
- [начало интервала, конец интервала] -
id -
число
id школы -
request = 'schoolLectures' -
строка
вернутся массив экземпляров класса Lecture, которые проводятся для школы с соответствующим id -
id -
число
id школы -
request = 'schoolLecturesInterval' -
строка
вернутся массив экземпляров класса Lecture, которые проводятся для школы с соответствующим id в определенный временной период -
time -
массив вида [начало иинтервала, конец интервала]
- запрашиваемый временной интервал
Получение элемента расписания
Строка
, может принимать следующие значения:
- school - при изменении данных школы
- classroom - при изменении данных аудитории
- lecture - при изменении данных лекции
Объект
, содержащий свойства запрашиваемого элемента
В зависимости от type принимает следующие значения:
-
id -
число
id школы -
request = 'name' -
строка
новое название школы -
id -
число
id школы -
request = 'amount' -
число
новое количество учащихся
-
id -
число
id аудитории -
request = 'name' -
строка
новое название аудитории -
id -
число
id аудитории -
request = 'description' -
строка
новое описание местоположения аудитории -
id -
число
id аудитории -
request = 'capacity' -
число
новая вместимость аудитории
-
id -
число
id лекции -
request = 'name' -
строка
новое название лекции -
id -
число
id лекции -
request = 'lecturer' -
строка
новое ФИО лектора -
id -
число
id лекции -
request = 'time' -
массив вида [начало лекции, конец лекции]
новое время проведения лекции -
id -
число
id лекции -
request = 'classroomId' -
число
id новой аудитории -
id -
число
id лекции -
request = 'schoolsId' -
массив чисел
массив id школ, для которых будет чистаться лекция
Удаление элемента расписания
Строка
, может принимать следующие значения:
- school - при добавлении школа
- classroom - при добавлении аудитории
- lecture - при добавлении лекции
Объект
, содержащий свойства удаляемого элемента
В зависимости от type принимает следующие значения:
- id -
число
id удаляемой школы Для удаления школы, для нее не должны проводиться лекции
- id -
число
id удаляемой аудитории Для удаления аудитории, в ней не должны проводиться лекции
- id -
число
id удаляемой лекции Для удаления аудитории, в ней не должны проводиться лекции