forked from biblelamp/JavaExercises
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathJava1NotesRU.txt
More file actions
221 lines (196 loc) · 15.1 KB
/
Java1NotesRU.txt
File metadata and controls
221 lines (196 loc) · 15.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
Заметки к занятиям:
Приветствие:
Всем привет ещё раз, я Сергей, профессиональный разработчик и преподаватель. Со стеком 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, рекомендации