Если нельзя, но очень хочется, то нужно обязательно и ничего в мире не стоит того, чтобы делать из этого проблему!


Интересна Java? Кликай по ссылке и изучай!
Если тебе полезно что-то из того, чем я делюсь в своем блоге - можешь поделиться своими деньгами со мной.
с пожеланием
столько времени читатели провели на блоге - 
сейчас онлайн - 

пятница, 19 декабря 2014 г.

Программа Java Basic

Эту программу я оттачивал на нескольких группах - это ее 5 редакция. Спешу поделиться с теми, кто хочет запускать java тренинг у себя но не знает с чего начать. После java basic хорошо бы углубляться в enterprise мир и набивать шишки с тем же приложением но подключая к нему все более сложные технологии, выводя его в Web.

Сейчас я работаю с напарником над программой goJava в goIT, если интересует хороший тренинг с менторами и тренерами и группой единомышленников - велкам к нам. 

Тренинг состоит из модулей: каждый из которых имеет свою роль и цель.
  • Java Basics 3 дня
    Установим окружение, необходимое для программирование на java. Напишем 4 несложных консольных приложения. Ознакомимся с языковыми конструкциями, используемыми на java. Ознакомимся со средствами для командной работы с кодом (SVN). Получим обратную связь от ментора в виде code review замечаний.

  • OOP Basics 5 дней
    Смоделируем любую выбранную Трейни систему (по-умолчанию это университет) в терминах объектно-ориентированного программирования. Практически овладеем основными понятиями OOP: инкапсуляция, наследование, полиморфизм, интерфейс, агрегация, композиция, абстрактный класс, метод, поле и многие другие. Модель будет представлена в виде UML диаграммы для демонстрации ее коллегам и ментору. Много code review. Много новых терминов. Будем ломать привычки процедурного стиля программирования. Все это позволит научиться думать объектами и абстрагироваться от деталей. Задание будет сформулировано в виде нескольких user stories, отвечающих на вопрос - что я как пользователь будущей системы смогу сделать.

  • Т.к. модель уже готова, то стоит зафиксировать ее в том рабочем состоянии, в котором она находится. Мы научимся дополнять рабочий код таким образом, чтобы он стал самотестирующимся. В этом нам поможет библиотека jUnit. Что такое тест? Как сделать так, чтобы одним кликом можно было сказать, система работает или нет? Как справляться со стрессом в процессе разработки? Все это мы разберем в этом модуле.

  • Если в прошлом модуле мы использовали массивы для агрегации множества однотипных объектов, то теперь мы познакомимся с разными способами хранения информации - Collection, List, Set, Map,... Тесты, написанные в прошлом модуле позволят нам не бояться, что что-то будет поломано - конечный пользователь не заметит перемен. Это называется рефакторинг! Безопасный рефакторинг имеет свои правила. Научимся и этому. Код модели станет чище, более ООП.

  • Немного отвлечемся от нашей модели и углубимся в качественно новый процесс разработки TDD. Если мы раньше писали тест после того как была написана функциональность, то сейчас мы будем писать требование в виде теста до того, как эта функциональность появится. Это перевернет все с ног на голову. Кто-то называет этот способ разработки - программирование для домохозяек - так он упрощает будни программиста. Но на самом деле все не так просто, требуется немало сил, чтобы сломать старые привычки. Это мы и начнем делать. Бинарное сортированное дерево будет нашим подопытным кроликом - в процессе его разработки мы испытаем процесс TDD на себе.

  • После того, как дерево будет реализовано, мы разберем по косточкам наши тесты (функциональные) и выделим ряд их недостатков, а так же рассмотрим альтернативу - тесты модульные. Сделаем ряд превращений нашего дерева так, чтобы было возможным unit тестирование и воспользуемся Mockito фреймворком для написания настоящих! unit тестов. Теперь мы можем вернуться к нашей модели с багажом новых инструментов. В дальнейшем вся твоя разработка будет происходить через TDD с написанием unit тестов.

  • Error handling 3 дня
    Если раньше модель работала в режиме приема идеальных данных, то теперь мы изрядно постараемся и будем передавать на всех все, что только можно передать. Конечно, модель будет вести себя не предсказуемо, а потому мы воспользуемся мощным инструментом, который присутствует в Java наряду с OOP - Exception Handling. Поймем, что такое checked/unchecked exception, что такое error, как обрабатывать исключения (и надо ли вообще) и многое другое. Как это отразится на модели? А ней будет реализована защита от дурака.

  • Java Input/Output 5 дней
    Чтобы наша моделька была полезной - она должна уметь сохранять свое состояние. В качестве альтернативы базе данных мы будем использовать плоские файлы. Как проводить чтение, как проводить запись, множество разных классов для для всевозможных способов чтения/записи - запутаться можно. Но тем не менее мы научимся выбирать именно те классы, которые нам нужны.

А что бы ты хотел добавить в этот план?
Что еще надо знать новичку, изучающем у java?

ПриЁм

5 комментариев:

  1. Сайт GoIT немного криво смотрится при небольшом размере окна браузера: http://img.leprosorium.com/2382859
    #bugreport

    ОтветитьУдалить
    Ответы
    1. Спасибо, передал ответственному. Сайт будет переделываться и там исправят...

      Удалить
  2. Саша, интересная программа.
    А как выбирал мок-фреймворк для этой программы? Почему EasyMock, ведь например Mockito даёт более простой код без всяких там replay?

    ОтветитьУдалить