понедельник, 7 ноября 2016 г.

Первый экзамен

Вчера состоялся мой первый экзамен на курсе Петра Арсентьева "Программирование на Java".
Пётр ошибочно полагал, что до Java я изучал программирование  на Паскале. Поэтому все его вопросы были направлены в основном на отличия между Java и Паскалем (например, про динамические и статические массивы). Я же Паскаль видел только краем глаза, да и то издалека, и до Java изучал C. Поэтому не сразу понимал, что от меня хочет услышать Пётр, отвечал сбивчиво и задавал много уточняющих вопросов. Другими словами, "тупил". ))
Но, вроде как, сдал. Перешёл на второй модуль курса (а всего их 14). 

В скайп-чате среди студентов курса ходили слухи о том, что только один человек смог пройти весь курс за один год, все остальные застряли где-то посередине. Пётр говорил, что можно пройти весь курс за 8 месяцев. Значит, это и будет мой план на ближайший год - пройти весь курс и найти работу.

В качестве итогового задания по первому модулю курса Пётр попросил написать программу, которая объединяет два отсортированных массива в один, который также должен быть отсортирован.
Сначала я хотел сделать одновременную сортировку с объединением (т.е. брать по одному элементу из каждого source-массива (источника), сравнивать их и класть в destination-массив (результирующий). Но, по здравом размышлении, решил, что написать такой код сложнее, чем написать классу, копирующий 2 массива в один и прикрутить к нему имеющийся у меня класс-сортировщик (сортирует методом перестановки или, как ещё называют, "пузырьковым" методом).
Итоговый алгоритм получился таким:
1) копируем первый source-массив в destination-массив;
2) следом за ним копируем в destination-массив второй source-массив;
3) после этого сортируем destination-массив.

Получился код в духе Java-way и в ООП-стиле - из уже имеющихся классов создал новую программу. Написал только один новый класс Copier - для копирования двух массивов в третий. Ну, и, соответственно junit-тест писал только для класса Copier, т.к. тесты для всех остальных классов уже были написаны в другой программе.

На правах рекламы буду в каждом сообщении указывать ссылку на свой GitHub.
В ближайшее время добавлю на GitHub в chapter_001 ещё 2 программы из первого модуля и создам новый каталог chapter_002 для программ второго модуля.

До        После