В качестве результата пришлите ссылки на ваши GitHub-проекты в личном кабинете студента на сайте netology.ru.
Важно: ознакомьтесь со ссылками на главной странице репозитория с домашними заданиями.
Если у вас что-то не получилось, то оформляйте Issue по установленным правилам.
Нужно сделать все задачи в одном репозитории.
Наконец мы добрались до ООП и можем уже не только решать вычислительные задачи, но и моделировать целые системы.
На лекции мы разобрали упрощённый пример того, как может выглядеть пост, давайте же посмотрим на то, как он выглядит на самом деле. Возьмите себе за правило анализировать системы, с которыми вы работаете в реальной жизни, и продумывать, как бы сделали вы.
В качестве примера возьмём всё тот же VKontakte: https://vk.com/dev/objects/post Если страница недоступна, воспользуйтесь копией из каталога assets).
На что нужно обратить внимание:
- В Kotlin мы используем
camelCase
для полей. - Некоторые поля помечены как
integer [0, 1]
, хотя по логике, должны бытьBoolean
(у вас должны бытьBoolean
). - Игнорируйте поля
post_source
,attachments
,geo
,copy_history
. - Все остальные поля должны быть перечислены.
Что мы хотим получить:
- Data класс
Post
. - Объект
WallService
, который внутри себя хранит посты в массиве.
Теперь нужно разобраться с функциональностью сервиса, отвечающего за стены пользователей: https://vk.com/dev/wall (копия).
Нас будут интересовать следующие методы:
- Создание записи.
- Обновление записи.
Куда же без автотестов? Правильно, никуда. Нужно написать автотесты на ваши методы:
- на
add
- всего один, который проверяет, что после добавления постаid
стал не равным 0. - на
update
- целых два:- изменяем пост с существующим
id
, возвращаетсяtrue
; - изменяем пост с несуществующим
id
, возвращаетсяfalse
.
- изменяем пост с существующим
Почему мы не проверяем, что add
действительно добавил, а update
действительно что-то меняет?
Нам пока совсем немного не хватает знаний, чтобы достроить нашу систему до действительно тестируемой — их мы получим на следующей лекции. Пока же сделаем так.
По факту речь идёт о том, что нам придётся либо дописать специальные вспомогательные методы, либо научиться работать с nullable
значениями.