Заметки к занятиям: Приветствие: Всем привет ещё раз, я Сергей, профессиональный разработчик и преподаватель. Со стеком Java работаю 5 лет. Буду вести у вас четырёхнедельный курс Java. Уровень 1, 8 занятий. Наша первая встреча состоится в xxxxxxx, XX xxxxx в XX.00 МСК. В рамках курса планирую: 1. Доступно и ясно изложить базовый учебный материал. 2. Предложить дополнительный материал для интересующихся. 3. Дать качественную обратную связь, отвечая на вопросы и комментируя домашние задания. В то же время ожидаю, что вы: 1. Приложите максимум старания при освоении учебного материала. 2. Будете сдавать домашние задания в срок (возможные исключения оговариваем персонально). 3. Будете задавать вопросы, если что-то будет непонятно. Для общения предпочитаю использовать телеграм-чат группы. Личные сообщения в телеграм - только в особых случаях. Лайфхак по отсрочке сдачи дз: Загрузите пустой файл, я помечу его как "не сдано". После этого вы можете загрузить выполненное дз без согласнования со службой поддержки. Ссылки на все методички: Методичка 1. Java. Уровень 1. Введение в платформу Java 1. https://docs.google.com/document/d/1zbo8fNRPDHNr6kJ9DJynn5Mi4_ncDYVAIF9pTFjngiI/ Методичка 2. Java. Уровень 1. Основные конструкции 2. https://docs.google.com/document/d/1Ewxcleh5IgFE1CEUGty5sr0_qH1BSonK3cuN6fpG4Io/ Методичка 3. Java. Уровень 1. Практика 3. https://docs.google.com/document/d/1dHxZd2wTRe4Kqo0cj4SnP1AZEYNzrxCQn2sg0C-0YFA/ Методичка 4. Java. Уровень 1. Крестики-нолики в процедурном стиле 4. https://docs.google.com/document/d/1Rk_xwF65CJvJ0mzxVO1LOSM4I-5DBdOqub0TWXfflls/ Методичка 5. Java. Уровень 1. Введение в ООП 5. https://docs.google.com/document/d/11EhLrIXlloOmm5Znufff36RBkMnDwLSkS-L2BeUqX7k/ Методичка 6. Java. Уровень 1. Продвинутое ООП 6. https://docs.google.com/document/d/1EKdUfBQ9snU8gSgCUWFALke1b5p46A_Iq9Xgn2X2myo/ Методичка 7. Java. Уровень 1. Практика ООП и работа со строками 7. https://docs.google.com/document/d/1HxvN5jvGyRJ_b_LspE2kEmg7fw24SQdyCnJu7OQSGQ8/ Методичка 8. Java. Уровень 1. Написание приложения с графическим интерфейсом 8. https://docs.google.com/document/d/1x8x3rFxZ4a64gMi9EwNnodgrlIM3hRn6y_QlQ8vjiuE/ Взлом анонимности отзывов: fetch('https://gb.ru/api/v2/feedbacks?&feedbackable_type=Stream&feedbackable_id=36621', {headers:{'Range': '0-100'}}).then(res=>res.json()).then(json=>{json.map(i=>{console.log(`https://geekbrains.ru/courses/${i.feedback.course_id}/${i.feedback.url}`)})}) Информировать до начала занятий: - пройти курс по Git и создать свой профиль на сайте github.com - завести учётную запись Google, чтобы иметь возможность писать в чате занятия - Яндекс-практикум https://practicum.yandex.ru/java-developer/ 1. Java. Введение 1. Вводные замечания - краткий обзор 8 занятий (нужны все методички?) - как можно проходить курс, делать ли ДЗ? - Git. Быстрый старт https://gb.ru/courses/1117 или https://habr.com/ru/post/125799/ - как сдавать дз через github https://docs.google.com/document/d/1RAT_ukE39iOfbz1xa39QXae2hBUEZ4U6Fko_wFDdrsM/ - общение в процессе курса: - вопросы в чате ютуб во время занятий - вопросы на страницах занятия (Обсуждение) - телеграм-чат https://t.me/joinchat/kGoTwtNfd_gwMmEy - организационные вопросы: телеграм-чат группы - личные сообщения на сайте - нет, нет и нет! - файлы рекомендации к чтению, список навыков - рекомендованные книги в браузере (МакГратт, Сьерра, Шилдт) - Как учить Java: 10 практических советов для новичков https://gb.ru/posts/kak-uchit-java-10-prakticheskih-sovetov-dlya-novichkov - IntelliJ IDEA для новичков: советы и секреты https://www.youtube.com/watch?v=mcvnjaLqVWQ - Пишем код на Java и Go в текстовом редакторе https://gb.ru/posts/pishem-kod-na-java-i-go-v-tekstovom-redaktore - Как обмануть мозг и эффективно учиться программированию https://proglib.io/p/effective-learning/ - Java Code Conventions, соглашение о написании кода 2. Основная тема - комментарии к методичке (использование IntelliJ IDEA CE, maven, использование пакетов) - инструменты разработчика (JDK 8 или 11), инструмент для написания кода - первая программа, компиляция, выполнение - обратить внимание на правила именования классов (полей, методов, переменных) - переменные и типы данных - арифметические операции - условный оператор if, тернарный оператор - методы без параметров, с параметрами, возвращаемые значения 3. Дополнение (перенос с занятия №2) - оператор switch 2. Основные конструкции 1. Вводные замечания - тест Java как финальное дз №8 https://gb.ru/tests/39 - напомнить Java Code Conventions, форматирование кода - форматирование кода, плагин JSTool для Notepad++ - напомнить про дополнительное чтение (файл Java1RecommendedBooks.txt) - почему используем Notepad++, настройка (файл Java1KnowledgeAndSkills.txt) - работа с git, настройка .gitignore 2. Разбор ДЗ - стиль кода, отступы, пробелы, пустые строки, аккуратность - java-doc комментарий в начале, @author и @version - не использовать пакеты, если не понятно - зачем они? - внимательно читать задание - реализовывать только то, что требуют, YAGNI (You aren't gonna need it) 3. Тема, порядок изложения - switch, коротко, перенесён в тему №1 - массивы, введение (подробнее на следующем занятии) - for, несколько переменных, for для итерируемых объектов - while, do-while - break и continue - кодовые блоки, область видимости переменных 4. Дополнение - принципы программирования DRY (DIE), KISS, YAGNI 3. Практика 1. Вводные замечания - тест Java уровень 1 https://gb.ru/tests/39 - английский язык https://geekbrains.ru/courses/98 + www.duolingo.com 2. Разбор ДЗ - стиль кода (отступы, имена) и аккуратность - не использовать пакеты, если не понятно - зачем они? - внимательно читать задание - реализовывать только то, что требуется, YAGNI 3. Тема, порядок изложения - массивы, одномерные, двухмерные, многомерные, нерегулярные - импорт пакетов (библиотек), пакет по умолчанию java.lang - получение информации о пакетах: http://docs.oracle.com/javase/8/docs/api/ - методы класса Arrays (манипуляции с массивами): - toString() вывод в виде строки - fill() заполнение одним значением - sort() сортировка - binarySearch() бинарный поиск - быстрое решение задачи о максимуме/минимуме: Arrays.sort(arr); arr[0] -> min arr[arr.length - 1] -> max - генерация случайных чисел, класс Random - ввод данных из консоли, класс Scanner - printf форматированный вывод 4. Дополнение - статические и нестатические методы - классы и объекты - списочные массивы, класс ArrayList - класс Arrays, метод toString(), пакет java.util - запись и чтение текстовых файлов, перехват исключений статья: Эволюция Java на примере чтения строк из файла https://habr.com/ru/post/269667/ 4. Крестики-нолики в процедурном стиле 1. Вводные замечания - используйте чат, не стесняться спрашивать - тест Java уровень 1 https://gb.ru/tests/39 - рекомендательное письмо, образец https://career.habr.com/ilshat0-0, linkedin.com 2. Разбор ДЗ 3. Написание консольной игры крестики-нолики 4. Дополнение - статические и нестатические методы - классы и объекты 5. Введение в ООП 1. Вводные замечания - напомнить про текст по Java как финальное дз - порекомендовать online IDE https://replit.com/ - порекомендовать начать осваивать IntelliJ IDEA 2. Разбор ДЗ 3. Основная тема - три основных принципа объектно-ориентированного программирования - что такое класс (абстракция), его отличие от объекта - поля и методы класса, создание объектов - конструкторы, параметризированные конструкторы - перегрузка конструкторов (и методов, в принципе) - ключевое слово this - инкапсуляция, модификаторы доступа, геттеры и сеттеры 4. Дополнение - переопределение метода toString() - основы работы со swing: HelloSwing.java ООП с примерами: класс, объект, интерфейс https://habr.com/ru/post/87119/ ООП с примерами: инкапсуляция, абстракция, полиморфизм, наследование https://habr.com/ru/post/87205/ 6. Продвинутое ООП 1. Вводные замечания - напомнить про тест как финальное дз №8 - напомнить о важности ежедневных упражнений 2. Разбор ДЗ, обратить внимание на private и getter 3. Основная тема - краткий повтор изученного на прошлом занятии: - три принципа, что такое инкапсуляция, класс и объект - поля и методы, конструкторы, this - наследование, запрет наследования - final - прародитель всех классов Object - переопределение методов @Override - предотвращение переопределения - final - абстрактные методы и классы, полиморфизм 4. Дополнение - интерфейс - swing компоненты и Layout компоновщик 7. Практика ООП и работа со строками 1. Вводные замечания - напомнить про тест как финальное дз №8 2. Разбор ДЗ 3. Основная тема - работа со строками, класс String - строки StringBuffer (safethread)/StringBuider против String - взаимодействие объектов, задача про кормление кота - plate.setFood(plate.getFood() - cat.getAppetite()); - plate.decreaseFood(cat.getAppetite()); - cat.eat(plate); 4. Дополнение - Java для тестировщиков: https://ru.wikipedia.org/wiki/Selenium - чтение файлов FileReader против BufferedReader - паттерны проектирования https://habr.com/post/210288/ Singleton - обработка событий в swing 8. Написание приложения с графическим интерфейсом 1. Вводные замечания - напомнить про тест как финальное ДЗ - обратить внимание на файл Java1KnowledgeAndSkills.txt 2. Разбор ДЗ 3. Основная тема - пустое окно, компоновщики - обработка событий, рисование - крестики-нолики, 2 варианта - сборка проектов, ant, maven и gradle - бонусы: ссылка на гит, tester, рекомендации