Материалы занятий - практика

09/02-9/03



Д.з.
  1. Программа для моделирования телефона и его кнопок для набора SMS-ки (class Phone + class Button). Если можно ввести "hello world" - 5 баллов. (строго самостоятельное выполнение!!)
  2. Приносим и досдаем все, чего вам не хватило в прошлом семестре (до желаемой оценки). Кто не принесет - у того больше такого шанса не будет!

1. 10 обязательных знаний и умений, которые должны быть у всех по результатам прошедшего семестра:
  1. .java-файл должен называться так же, как public-класс в нем. Поэтому рекомендация: файлов в проекте должно быть столько же, сколько классов (кроме редких случаев осознанного использования не-public классов).
  2. Функция main должна находиться в одном из public-классов. Создание вложенных классов (класс в классе), внутри которых main - крайне неуместно.
  3. Если public-классов у Вас в проекте несколько - то необходимо в настройках проекта указать, какой из этих классов следует запускать.
  4. Если программа не компилируется - список ошибок можно открыть из меню Window->Show View->Problems. При двойном щелчке на сообщении об ошибке - курсор переходит на строку, в которой эта ошибка расположена.
  5. В этом же меню можно открыть Project Explorer, Console, Debug, Variables, Watches и др. полезные окна.
  6. Если компилятор показал в программе 100 ошибок - исправлять их всегда надо начинать с самой верхней (после ее исправления другие ошибки могут исчезнуть сами собой).
  7. Если текст сообщения об ошибке Вам не понятен, или ни о чем не говорит - попробуйте ввести его в поисковую строку Googl'а.
  8. Каждый должен уметь пользоваться пошаговым отладчиком (начало/прекращение отладки, step over/step into, просмотр значений переменных и стека вызовов).
  9. Всегда форматируйте код с использованием отступов вложенных блоков. Как здесь: http://docs.oracle.com/javase/tutorial/java/javaOO/objectcreation.html
  10. Справка по всем классам стандартной библиотеки java доступна на сайте java.sun.com по ссылке Java APIs. Это основной источник справочной информации по встроенным классам.

2. Задание на повторение

Разработать программу, которая моделирует набор текста в мобильном телефоне с кнопками.

Требования:

Phone p = new Phone();
p.press("4433555666");
System.out.println(p.getResult());

 - этот код должен выдать на экран "hel". (почему без последней буквы и почему одна 'l' - задание "на подумать")

Совет, как устроить классы (не обязательно к выполнению!):
Дополнительно:
Придумайте, как улучшить программу, чтобы можно было вводить удвоения букв, и не пропадала последняя буква.

9/09-9/10


Д.з.

Л.р. 1 на странице "задания". Срок - две недели. Можно выбрать сложность на 2, 3 или 5 баллов (номинал). От "отличников" и "хорошистов" жду выполнения "бонусной" части - вместе с ней лаба дает 9 баллов.

Порядок защиты лабораторной работы:

  1. Тетрадь на столе. Программа открыта в IDE и запущена.
  2. Объяснить структуру своей программы от общего к частному - от общего ее устройства до принципов работы конкретных классов:
  • Что инкапсулирует в себе каждый класс (т.е. какому понятию из реального мира он соответствует).
  • Какие в этих классах ключевые атрибуты и операции (перечислять все поля и методы - не надо!).
      3. Как устроено хранение объектов и манипулирование ими в main'е (или каком-то главном классе).

Задание на сейчас:
(надо выполнить пункты 1 и 2)

Строка (String) это массив символов (char). Каждый char - это двухбайтное число, задающее символ в кодировке UTF-16.
У строки есть методы codePointAt(int i) и toCharArray() - позволяющие получить эти числа.
1 Определите экспериментально (т.е. путем программирования), из каких кодов символов состоит строка "abc абв". Проанализируйте отличия кодов латиницы и кириллицы.

Однако - чтобы записать строку в файл, надо преобразовать ее в массив байтов. Для этого существует метод getBytes(String encoding) - генерирующий байты в заданной кодировке.

2 Сохраните строку "abc абв" в три разных ФАЙЛА в трех разных кодировках - UTF-8, WINDOWS-1251 и UTF-16. Откройте эти файлы в браузере (или "умном" текстовом редакторе) и проверьте корректность кодирования.

Для записи в файл используйте FileOutputStream и его метод write(byte[]).

3 Бонусное - при помощи DataOutputStream (и, возможно, ByteArrayOutputStream) запишите в файл строку "как есть" (без преобразования кодировки). Получится ли открыть результирующий файл как UTF-16?

9/16-9/17

Д.з.

Л.р. 2 на странице "задания". Срок - две недели. Можно выбрать сложность на 2, 3 или 5 баллов (номинал). От "отличников" и "хорошистов" жду выполнения "бонусной" части - вместе с ней лаба дает 9 баллов.

Задание на сейчас:
1 Напишите программу для копирования файлов: из FileInputStream'а в цикле читается по 1 байту, которые тут же записываются в FileOutputStream. Измерьте (хоть ручным секундомером) скорость копирования. Затем "оберните" файловые потоки в BufferedInputStream/BufferedOutputStream - и измерьте скорость повторно.
2 У кого останется время - отправьте HTTP-запрос на какой-нибудь сервер в интернете и выведите на экран ответ (см. материалы лекции).

9/23-9/24

Защита л.р.1

Задание - скачать данные о своих друзъяв из ВК. В читабельной кодировке.

9/30-10/01

Д.з. - Л.р.3 потоки

Задание на потоки:

  1. Создать поток, вычисляющий (бесконечно) число Пи через сумму ряда Лейбница.
  2. В main'е выдать пользователю меню с двумя опциями: 1) смотреть текущий результат, 2) выход.

10/07-10/08

Д.з. - Л.р.4 анализ + самостоятельно поразбираться с GUI (см. л.р.5).

  1. Если есть вопросы - обсуждаем ТЗ и задание по нему.
  2. Хорстманн, т.1, глава 7 "Программирование графики": программа, которая рисует на панели "Hello, World".
  3. Разместите надпись в середине окна и напишите на ней текущие его (окна) размеры.
  4. Досрочная защита л.р.3 + кто что недосдал (в том числе по прошлому семестру).

10/14-10/15

  1. Хорстманн, т.1, глава 8 "Обработка событий": программа, которая при нажатиях на кнопки меняет цвет панели.
  2. Показываем и обсуждаем ваши ТЗ по итерациям 1.1, 1.2 (не дедлайн). Можно в бумажном виде.
  3. Дедлайн на л.р.3 потоки.

10/21-10/22

Задание:

На 1 балл на паре: прочитать про git (на википедии и в п.1); пройти туториал из п.2.

Дома: создать аккаунт на github, разбиться на команды по 2-3 человека (для работы над ChatApp), выполнить инструкции из README.md репозитория https://github.com/dimalit/chatapp и сделать по 1 коммиту (НЕ из веб-интерфейса) от каждого члена команды (+1 балл). Если коммиты не "для теста", а напоминают реальное начало работы над проектом - то еще +1 балл автору коммитов.

  1. Основы git: https://git-scm.com/book/ru/v1/%D0%92%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5-%D0%9E%D1%81%D0%BD%D0%BE%D0%B2%D1%8B-Git
  2. Туториал, который надо пройти: https://try.github.io/levels/1/challenges/1
  3. Как настроить у себя на ПК: http://rogerdudler.github.io/git-guide/
  4. Неинтерактивный туториал чуть подлиннее: http://githowto.com/ru
  5. Длинный интерактивный туториал: http://pcottle.github.io/learnGitBranching/

10/28-10/29

Дедлайн л.р.5 GUI.

11/04-11/05

11/11-11/12

11/18-11/19

Дедлайн на итерацию 1.1 ChatApp

11/25-11/26

12/02-12/03

Дедлайн на итерацию 2 ChatApp

12/09-12/10

Еще один дедлайн на итерацию 2

12/16-12/17

Досдаем: лабы, ChatApp. У всех спрашиваю темы курсовых!

12/23-12/24

Окончательная сдача курсовых!
Comments