# Третье занятие ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Разбор домашнего задания](https://drive.google.com/open?id=0B_4NpoQW1xfpVVFEX0tOS3UtLXM) **Коммиты:** - [`HW1`](https://github.com/JavaWebinar/basejava/tree/ec51b1158f07789b62dadf457c25b0864a126b1d/src) - [`Introduce package and encapsulation`](https://github.com/JavaWebinar/basejava/commit/68e4d8652320d487a0716179e7d01723fffc4b8d) - [`lesson03 HW02`](https://github.com/JavaWebinar/basejava/tree/08adbede7c25bc34807c3cebecb8b67921366793/src/ru/javawebinar/basejava) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 1. [Объектная модель в Java](https://drive.google.com/open?id=0B_4NpoQW1xfpNW54RGFlZkRWbk0) **Коммиты:** - [`Lesson03 equals&hashCode, static`](https://github.com/JavaWebinar/basejava/tree/9d8464cc24be306b0dbce112607122149ec327d8/src/ru/javawebinar/basejava) - [`Lesson03 implements interface`](https://github.com/JavaWebinar/basejava/tree/ba20418d59dcc998c2cab218d84ca1f7099676c8/src/ru/javawebinar/basejava/storage) **Ресурсы:** - [Руководство по модификатору static в Java](https://topjava.ru/blog/rukovodstvo-po-modifikatoru-static-v-java) - [Модификатор static](http://www.intuit.ru/studies/courses/16/16/lecture/27119) - [10 заметок о модификаторе static в Java](https://javarush.ru/groups/posts/modifikator-static-java) - [Класс Object. Контракт equals/hashCode](http://www.intuit.ru/studies/courses/16/16/lecture/27129?page=1) - [Абстрактные классы](https://www.youtube.com/watch?v=ZjiFL2Yo2fw) (youtube) - [Интерфейсы](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=3) - [Полиморфизм](http://www.intuit.ru/studies/courses/16/16/lecture/27119?page=4) - [Отличия абстрактного класса от интерфейса](https://topjava.ru/blog/razlichiya-mezhdu-abstraktnymi-klassami-i-interfeysami-v-java) - **Дополнительно:** - [Что такое полиморфизм?](https://github.com/ichimax/Core-Java-Interview-Questions/blob/master/Questions/1.%20OOP.md#%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D0%BF%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC) - [Ключевое слово static](https://www.youtube.com/watch?v=GZzVfeY7yEM) (youtube) - [Интерфейсы, абстрактные классы, полиморфизм](https://www.youtube.com/watch?v=7NMFk2oj1-c&index=4&list=PLkKunJj_bZefB1_hhS68092rbF4HFtKjW) (youtube) - [Разбираемся с hashCode() и equals()](https://www.pvsm.ru/java/26304) - [История эволюции интерфейсов в Java](https://habr.com/ru/post/482498/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 2. [Сложность алгоритмов](https://drive.google.com/open?id=0B_4NpoQW1xfpQldyRk5oc3Z1S00) - [Про сложность алгоритмов и Big O Notation](https://threadreaderapp.com/thread/1470666237286010881) - [Алгоритмы и структуры данных для начинающих: сложность алгоритмов](https://tproger.ru/translations/algorithms-and-data-structures) - [Time complexity](https://drive.google.com/file/d/0B9Ye2auQ_NsFNEJWRFJkVDA3TkU/view?resourcekey=0-MPCuoLVdSLiSc7hlE2jefQ) - [Бинарное дерево поиска](https://www.youtube.com/watch?time_continue=447&v=HBMlhZAOhoI) (youtube) - **Дополнительно** - Легко написанная книга по алгоритмам и их сложности [Грокаем алгоритмы](https://www.litres.ru/book/aditya-bhargava/grokaem-algoritmy-71518519/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) 3. [Паттерн проектирования Шаблонный метод](https://drive.google.com/open?id=0B_4NpoQW1xfpT0tyYXR0RHBpUWM) **Коммиты:** - [`Lesson03 abstract storage & sorted storage`](https://github.com/JavaWebinar/basejava/tree/0bf48cf81987ddb9d59880f10920f3994923f8c0/src/ru/javawebinar/basejava) **Ресурсы:** - [Руководство по Шаблонному методу в Java](https://topjava.ru/blog/pattern-shablonnyy-metod-v-java) - [Шаблонный метод (Template Method)](https://youtu.be/mNcmp-Msi6U) (youtube) - [Шаблонный метод](https://refactoring.guru/ru/design-patterns/template-method/java/example) - **Дополнительно** - Книга из известной серии Head First — [Паттерны проектирования](https://www.litres.ru/book/elizabet-robson/head-first-patterny-proektirovaniya-39123671/) ## ![video](https://cloud.githubusercontent.com/assets/13649199/13672715/06dbc6ce-e6e7-11e5-81a9-04fbddb9e488.png) [Домашнее задание HW3](https://drive.google.com/open?id=0B_4NpoQW1xfpdkdlV2xPbE5VM2c) - Закончите реализацию `AbstractArrayStorage`, `ArrayStorage`, `SortedArrayStorage`, используя паттерн Шаблонный метод - В `SortedArrayStorage` храните элементы отсортированными: - для их упорядочивания воспользуйтесь Arrays.binarySearch (бинарный поиск). Разберитесь с тем, какие значения он возвращает, и как их можно применить для упорядочивания резюме - не используйте `Arrays.sort()` или самописные методы для сортировки - сортировать весь массив не надо