Showing posts with label самостоятельное изучение. Show all posts
Showing posts with label самостоятельное изучение. Show all posts

12 July, 2014

Занятие 12

На двенадцатом занятии изучили механизм обработки исключений
Рассмотрели иерархию классов исключений (Throwable, Error, Exception, RuntimeException), классификацию (checked-unchecked), способы декларирования исключений в методах (throws), генерацию исключений (throw) и их обработку (try-catch-finally).
К сожалению не успели рассмотреть создание собственных классов исключений
К прочтению рекомендуется глава 11 у Хорстманна, или официальный туториал - http://docs.oracle.com/javase/tutorial/essential/exceptions/

Домашка

В ранее реализованных заданиях - "Ханойская башня" и "список-массив/связный список" добавить обработку ошибок при помощи искючений.
Т.к. создание собственных классов исключений еще не рассмотрели, то допускается использование исключений из библиотеки Java SE
Но я все же рекомендую использовать собственные классы исключений.

Самостоятельное изучение

У Хорстманна в главе 11 также рассмотрены диагностические утверждения (assertion), протоколирование при помощи класса java.util.logging.Logger, и приемы отладки приложений
Эти темы мы проходить не будем, я рекомендую изучить их самостоятельно.

08 July, 2014

Занятия 10-11

На 10 и 11 занятиях рассмотрели
  • Enum (перечисления)
  • Методы с переменным числом параметров
  • Шаблон проектирования Listener (слушатель), также называемый Callback. Рассмотрели пример реализации слушателя из книги Хорстманна.
  • Вложенные классы. Статические вложенные классы, доступ к приватным полям внешнего класса из вложенных классов.
К прочтению рекомендуются главы 5 и 6 Хорстманна.
Для самостоятельного изучения оставили рефлексию (описана в главе 5) и программирование графики при помощи пакета Swing (главы 7-8)
К рефлексии мы возможно вернемся, если будет время.

17 June, 2014

Итоги 4 и 5 занятий

На четвертом и пятом занятиях рассмотрены основные принципы ООП.
Детально прошлись по инкапсуляции
Кратко рассмотрели пакеты и путь поиска классов (classpath).

К прочтению рекомендуется вся 4-я глава Хорстманна
В конце этой главы приводится подробная информация по пакетам, classpath, и встроенной возможности документирования - эта часть рекомендуется к самостоятельному изучению.

В качестве примера рассмотрели задачу о Ханойской башне

Для решения задачи логика программы разделена на два модуля - игрок и игра.
Вначале игрок создает новый экземпляр игры с указанием количества дисков в башне.
Игра предоставляет игроку возможность переместить диск с одного стержня на другой - метод move(), в аргументы которого передается имя диска-источника, и имя диска назначения.
Игрок, выполняя последовательные вызовы метода move(), перемещает башню с водного стержня на другой.

На занятии рассмотрели реализацию игры - класс Tower

Домашнее задание

Расширить логику класса Tower. Реализовать проверку правил игры - больший диск нельзя класть на меньший, с пустого стержня нельзя пытаться снять диск.
При попытке пользователя выполнить неправильное действие, нужно вывести на экран сообщение об ошибке.

Так как для реализации этой логики потребуется производить множество одинаковых проверок для каждого стержня, то следует всю логику, относящуюся к стержню, вынести в отдельный класс - Rod.
Стержень предоставляет для игры возможность поместить на стержень диск, и снять диск со стержня. Соответственно - метод putDisc, в аргумент метода передается размер диска, и takeOffDisc - не принимает аргументов, возвращает размер снятого диска.
При инициализации, игра создает три экземпляра класса Rod, и один из них наполняет дисками.
При вызове игроком метода move, игра должна снять диск с одного стержня и поместить его на другой.

Диаграмма классов:

Как вариант - реализовать в методах putDisc и takeOffDisc возврат кода ошибки, в случае неудачного помещения или снятия диска.

Реализовать логику игрока - запросить у пользователя высоту башни, и вывести трассировку решения задачи для указанной высоты.

15 June, 2014

Регулярные выражения

Я рекомендую самостоятельно разобраться с регулярными варыжениями. Не обязательно выучивать наизусть все подстановочные символы, достаточно понять основные принципы.

Начать можно с Хорстманна, у него регулярки описаны во втором томе в конце первой главы. Несмотря на то что он вынес их во второй том, изучать их можно совершенно независимо от остального материала.

Помимо Хорстманна есть еще оффициальный туториал - Regular Expressions (англ.)
Вся справочная информация по классам пакета java.util.regex - http://docs.oracle.com/javase/7/docs/api/java/util/regex/package-summary.html
Например - класс Pattern с описанием всех подстановочных символов.

10 June, 2014

Дискретная математика

Для желающих параллельно изучить дискретку рекомендую книжку Андерсона - "Дискретная математика и комбинаторика"


Андерсон, Джеймс А. Дискретная математика и комбинаторика. 2004 год. 960 стр. 8.1 Мб.
Книга представляет собой современный учебник по дискретной математике. Кроме таких разделов, как математическая логика, теория множеств, комбинаторика, теория графов, теория алгоритмов и вычислений, традиционно включаемых в основной курс дискретной математики, она содержит обширные сведения по теории вероятностей, алгебре и теории чисел. Особое внимание уделено теории доказательств. Чтение книги требует некоторой математической культуры, хотя для изучения основных глав достаточно знаний по математике в объеме средней школы. Материал сопровождается многочисленными примерами, в конце каждого раздела приводится большое количество упражнений. Книга адресована в первую очередь преподавателям и студентам технических специальностей. Она будет также полезна тем, кто интересуется дискретной математикой и желает изучить ее самостоятельно.