Содержание

Слайд 2

Кейс 1. Создание игры "Потопи сайт"

Часть 1.

Кейс 1. Создание игры "Потопи сайт" Часть 1.

Слайд 3

Кейс 1. Создание игры "Потопи сайт"

В этой игре вы будете играть против

Кейс 1. Создание игры "Потопи сайт" В этой игре вы будете играть
компьютера. Основное отличие от оригинального «Морского боя» состоит в том, что тут не нужно размещать свои корабли. Вместо этого придется потопить корабли компьютера за минимальное количество ходов. Кроме того, вы будете топить не корабли, а «сайты».
Цель: потопить все «сайты» компьютера за минимальное количество попыток. Вы будете получать баллы в зависимости от того, насколько хорошо играете.
Подготовка: при загрузке программы компьютер разместит три «сайта» на виртуальной доске (7x7). После этого вас попросят сделать первый ход.

Как играть: вы пока не научились создавать GUI (графический пользовательский интерфейс), поэтому данная версия будет работать в командной строке. Компьютер предложит вам ввести предполагаемую ячейку в виде A3, С5 и т. д. В ответ на это в командной строке вы получите результат — либо «Попал», либо «Мимо», либо «Вы потопили Pets.com» (или любой другой «сайт», который вам посчастливилось потопить в этот день). Как только вы отправите на корм рыбам все три «сайта», игра завершится выводом на экран вашего рейтинга.

Слайд 4

Кейс 1. Создание игры "Потопи сайт"

Понятно, что нужны классы и методы, но

Кейс 1. Создание игры "Потопи сайт" Понятно, что нужны классы и методы,
какими они должны быть? Чтобы ответить на этот вопрос, необходимо получить больше информации о том, как игра должна себя вести.
Прежде всего нужно определиться с игровым процессом. Рассмотрим общую идею.

Итак, вы получили представление о том, что должна делать программа. Далее необходимо выяснить, какие для этого понадобятся объекты. Думайте об этом, как Брэд, а не как Ларри; в первую очередь сосредотачивайтесь на элементах, из которых состоит программа, а не на процедурах.

Слайд 5

Кейс 1. Создание игры "Потопи сайт"

Похоже, потребуется минимум два класса — Game

Кейс 1. Создание игры "Потопи сайт" Похоже, потребуется минимум два класса —
и DotCom. Но прежде чем написать полноценную игру, создадим ее упрощенную версию. В этой версии все просто. Вместо двумерной сетки мы будем использовать единственный ряд. И вместо трех «сайтов» у нас будет только один. Тем не менее принцип игры остается тем же: нужно создать экземпляр класса DotCom, присвоить ему положение где-нибудь в ряду, получить пользовательский ввод и, когда все три ячейки «сайта» будут поражены, закончить игру.
Упрощенная версия дает хороший старт для создания полноценной игры. Создав что-то маленькое, позже можно
расширить и усложнить это. В текущем варианте класс игры не содержит переменных экземпляра, а весь игровой код находится в методе main(). Иными словами, после запуска игры и вызова главного метода будет создан только один экземпляр класса DotCom, после чего для него будет выбрано положение (три последовательные ячейки
виртуального ряда). Далее программа предложит пользователю сделать ход, проверит его вариант, и предыдущие два действия станут повторяться, пока все три клетки не будут поражены.
Не забывайте, что виртуальный ряд остается виртуальным, то есть не существует нигде в программе. Пока
игре и пользователю известно, что «сайт» спрятан в трех последовательных ячейках из семи возможных (начиная с нулевой), ряд как таковой не нуждается в программном представлении. Может возникнуть соблазн создать массив из семи элементов и присвоить трем из них числа, представляющие «сайт», но это необязательно делать. Нужен массив, который хранит лишь три клетки, занимаемые «сайтом».

Слайд 6

Кейс 1. Создание игры "Потопи сайт"

Эта полоса будет размещена на следующих страницах,

Кейс 1. Создание игры "Потопи сайт" Эта полоса будет размещена на следующих
чтобы напоминать вам, над какой частью вы в данный момент работаете. Например, если вы видите ее вверху страницы, это означает, что вы пишете псевдокод для класса SimpleDotCom.

Псевдокод
Алгоритм, который поможет вам сосредоточиться на логике, не вникая в синтаксис.
Тестовый код
Класс или метод, с помощью которого можно проверять реальный код и подтверждать, что он работает правильно.
Реальный код
Непосредственная реализация класса. Это рабочий код на языке Java.

Слайд 7

Кейс 1. Создание игры "Потопи сайт"

Ознакомившись с этим примером, вы поймете, как

Кейс 1. Создание игры "Потопи сайт" Ознакомившись с этим примером, вы поймете,
работает вариант псевдокода. Это что-то среднее между реальным кодом на языке Java и описанием класса на человеческом языке. Большая часть псевдокода содержит три раздела: объявление переменных экземпляра, объявление методов, логика методов. Из этих трех составляющих наиболее важна последняя, так как в ней описывается, что должно произойти.

ОБЪЯВЛЯЕМ целочисленный массив для хранения адреса ячеек. Даем ему имя locationCells.
ОБЪЯВЛЯЕМ переменную типа int для хранения количества попаданий. Называем ее numOfHits и ПРИСВАИВАЕМ ей 0.
ОБЪЯВЛЯЕМ метод checkYourself(), который принимает ход пользователя в качестве параметра String (1, 3 и т. д.), проверяет его и возвращает результат: «Попал», «Мимо» или «Потопил».
ОБЪЯВЛЯЕМ сеттер setLocationCells(), который принимает целочисленный массив (хранящий адрес трех ячеек в виде переменных типа int — 2, 3,4 и т. д.).
МЕТОД: String checkYourself(String userGuess)
ПОЛУЧАЕМ ход пользователя в виде строкового параметра.
ПРЕОБРАЗУЕМ полученные данные в тип int.
ПОВТОРЯЕМ это с каждой ячейкой массива.
//СРАВНИВАЕМ ход пользователя с местоположением клетки.
ЕСЛИ пользователь угадал,
ИНКРЕМЕНТИРУЕМ количество попаданий.
//ВЫЯСНЯЕМ, была ли это последняя ячейка.
ЕСЛИ количество попаданий равно 3, ВОЗВРАЩАЕМ «Потопил».
ИНАЧЕ потопления не произошло, значит, ВОЗВРАЩАЕМ «Попал».
КОНЕЦ ВЕТВЛЕНИЯ
ИНАЧЕ пользователь не попал, значит, ВОЗВРАЩАЕМ «Мимо».
КОНЕЦ ВЕТВЛЕНИЯ
КОНЕЦ ПОВТОРЕНИЯ
КОНЕЦ МЕТОДА
МЕТОД: void setLocationCells(int[] cellLocations)
ПОЛУЧАЕМ адреса ячеек в виде параметра с целочисленным массивом.
ПРИСВАИВАЕМ полученный параметр полю, хранящему адреса ячеек.
КОНЕЦ МЕТОДА

Слайд 8

Кейс 1. Создание игры "Потопи сайт"

Нужно написать тестовый код, который позволит создать

Кейс 1. Создание игры "Потопи сайт" Нужно написать тестовый код, который позволит
объект SimpleDotCom и запустить его методы. В данном случае нам интересен только метод chackYourSelf(), но для его правильной работы нам придется также реализовать метод setLocationCells(). Внимательно изучите псевдокод для метода chackYourSelf(), приведенный ниже. Здесь метод setLocationCells() — обычный сеттер, поэтому мы не обращаем на него внимания. Однако в реальном приложении может понадобиться более сложный метод с необходимостью тестирования.
Теперь спросите себя: «Если метод checkYourSelf() уже реализован, какой тестовый код я могу написать, чтобы убедиться в его корректной работе?»

МЕТОД: String checkYourself(String userGuess)
ПОЛУЧАЕМ ход пользователя в виде строкового параметра.
ПРЕОБРАЗУЕМ полученные данные в int.
ПОВТОРЯЕМ это с каждой ячейкой массива.
// СРАВНИВАЕМ ход пользователя с адресом ячейки.
ЕСЛИ ход пользователя совпал,
ИНКРЕМЕНТИРУЕМ количество попаданий.
//ВЫЯСНЯЕМ, была ли это последняя ячейка.
ЕСЛИ количество попаданий равно 3, ВОЗВРАЩАЕМ «Потопил»
ИНАЧЕ потопления не произошло, то ВОЗВРАЩАЕМ «Попал».
КОНЕЦ ВЕТВЛЕНИЯ
ИНАЧЕ пользователь не попал, ВОЗВРАЩАЕМ «Мимо».
КОНЕЦ ВЕТВЛЕНИЯ
КОНЕЦ ПОВТОРЕНИЯ
КОНЕЦ МЕТОДА

Слайд 9

Кейс 1. Создание игры "Потопи сайт"

Кейс 1. Создание игры "Потопи сайт"

Слайд 10

Кейс 1. Создание игры "Потопи сайт"

Не существует идеального перехода от псевдокода к

Кейс 1. Создание игры "Потопи сайт" Не существует идеального перехода от псевдокода
коду на языке Java всегда будут вноситься некоторые изменения. Псевдокод позволил лучше понять, что должен делать метод, и теперь нужно подобрать Java-код, с помощью которого можно выразить, как ему это следует делать.
Посмотрите на этот код и подумайте, что бы вам хотелось в нем улучшить.
Числами обозначаются такие особенности синтаксиса и языка, с которыми вы еще не знакомы. Они будут подробно разобраны на следующем слайде.

Слайд 11

Кейс 1. Создание игры "Потопи сайт"

Кейс 1. Создание игры "Потопи сайт"

Слайд 12

Кейс 1. Создание игры "Потопи сайт"

Кейс 1. Создание игры "Потопи сайт"

Слайд 13

Кейс 1. Создание игры "Потопи сайт"

Есть некоторые вещи, которые нужно принять на

Кейс 1. Создание игры "Потопи сайт" Есть некоторые вещи, которые нужно принять
веру. Например, одна из строк псевдокода гласит: «ПОЛУЧАЕМ пользовательский ввод из командной строки». На текущий момент это немного больше, чем нам нужно реализовать. К счастью, мы используем ООП, то есть можно попросить другой класс/объект о выполнении определенного действия и не задумываться, как именно он это сделает. При написании псевдокода вы должны понимать, что когда-нибудь у вас будет возможность сделать что угодно, а сейчас нужно направить все умственные усилия на продумывание логики.

Слайд 14

Кейс 1. Создание игры "Потопи сайт"

Как и в случае с классом SimpIeDotCom,

Кейс 1. Создание игры "Потопи сайт" Как и в случае с классом
подумайте о фрагментах кода, которые вам хочется (или нужно) улучшить. Отметки предназначены для элементов, на которые нам хотелось бы обратить ваше внимание. Они рассматриваются на следующей странице. Мы пропустили создание тестового класса для игры, потому что он просто здесь не нужен. Класс SimpleDotComGame состоит лишь из одного метода, поэтому нет смысла писать для него проверочный код. Делать отдельный класс, который будет вызывать метод main() из этого класса? Нет необходимости.

Слайд 15

Кейс 1. Создание игры "Потопи сайт"

Кейс 1. Создание игры "Потопи сайт"

Слайд 16

Кейс 1. Создание игры "Потопи сайт"

Остался вспомогательный класс, который содержит метод getUserInput().

Кейс 1. Создание игры "Потопи сайт" Остался вспомогательный класс, который содержит метод
Код для получения пользовательского ввода включает в себя элементы, которые мы пока не рассматривали. Сейчас вам многое будет непонятно, поэтому оставим его на потом.
Просто перепишите код, приведенный справа, и скомпилируйте его в класс GameHelper. Поместите все три класса (SimpleDotCom, SimpleDotComGame, GameHelper) в один каталог, который будет рабочим.

Слайд 17

Кейс 1. Создание игры "Потопи сайт"

Кейс 1. Создание игры "Потопи сайт"

Слайд 18

Часть 5. Знакомство с Java API

Вместе c Java поставляются сотни классов .

Часть 5. Знакомство с Java API Вместе c Java поставляются сотни классов
Можете не тратить время на изобретение собственного велосипеда, если знаете, как отыскать нужное в библиотеке Java, называемой еще Java API. Думаем, что у вас найдутся более важные дела. При написании кода сосредоточьтесь на той части, которая уникальна для вашего приложения. Наверняка вы знаете программистов, которые приходят на работу не раньше 10 часов утра и уходят ровно в 5 часов вечера. Они используют Java API.
На следующих страницах вы займетесь тем же. Стандартная библиотека Java представляет собой гигантский набор классов, готовых к применению в качестве «строительных блоков». Они позволят вам создавать приложения преимущественно из готового кода. Java API содержит большое количество кода, который даже набирать не нужно. Все, что от вас требуется, — научиться его использовать.

Слайд 19

Часть 5. Знакомство с Java API

В кейсе №1 мы оставили небольшую интригу,

Часть 5. Знакомство с Java API В кейсе №1 мы оставили небольшую интригу, а именно -ошибку
а именно -ошибку

Слайд 20

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API

Слайд 21

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API

Слайд 22

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API

Слайд 23

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API

Слайд 24

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API

Слайд 25

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API

Слайд 26

Часть 5. Знакомство с Java API

Словно по волшебству, такой массив действительно появился.
Но

Часть 5. Знакомство с Java API Словно по волшебству, такой массив действительно
это не совсем массив — это ArtayList.
Это класс из стандартной библиотеки Java (API).
Java Standard Edition (версия Java, с которой вы сейчас работаете; поверьте, вы бы знали, если бы это была Micro Edition, предназначенная для небольших устройств) поставляется с сотнями готовых классов. Это похоже на код, который мы подготовили для вас, где стандартные классы уже скомпилированы.
Это значит, что их не нужно перепечатывать. Просто используйте их.

Слайд 27

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API

Слайд 28

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API

Слайд 29

Часть 5. Знакомство с Java API

Заполните таблицу, глядя на код слева и

Часть 5. Знакомство с Java API Заполните таблицу, глядя на код слева
подбирая его аналог для обычных массивов. Скорее всего, у вас не получится избежать ошибок, поэтому просто попытайтесь угадать.

Слайд 30

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API

Слайд 31

Часть 5. Знакомство с Java API

Часть 5. Знакомство с Java API