Изучаем Java
Книга «Изучаем Java» научит вас теории языка Java и объектно-ориентированного программирования и сделает вас настоящим программистом. В основу материала положен уникальный метод обучения на практике. В отличие от классических учебников информация дается не в текстовом, а в визуальном представлении. Вы освоите в деле все самое нужное: синтаксис и концепции языка Java, работу с потоками, взаимодействие в сети, распределенное программирование. Вся теория закрепляется интереснейшими примерами и тестами. Изучение комплекса нового языка не является легкой задачей, особенно, когда речь идет о таком объектно-ориентированном языке программирования, как Java.
Обзор книги «Изучаем Java»
Погружаемся: Java открывает новые возможности. Еще во времена первой версии 1.02 этот язык покорил разработчиков своим дружественным синтаксисом, объектно-ориентированной направленностью, управлением памятью и, что важнее всего, перспективой переносимости на разные платформы. Соблазн написать код один раз и запускать его везде оказался слишком велик. Однако, по мере того как программистам приходилось бороться с ошибками, ограничениями и чрезвычайной медлительностью Java, первоначальный интерес к языку остывал. Но это было давно. Сегодня Java достаточно мощный и работает быстрее.
- Как работает Java
- Краткая история Java
- Структура кода в Java
- Структура класса
- Создание класса с методом main
- Что можно разместить внутри главного метода
- Зацикливаем, зацикливаем и…
- Условное ветвление
- Создание серьезного бизнес-приложения
- Генератор фраз
Путешествие в Объектвилль. Размещение всего кода программы в методе main – это не совсем объектно-ориентированный подход. По сути, он не имеет ничего общего с объектами. Даже если при этом используются некоторые объекты библиотечных классов, но не создаются свои собственные типы объектов. Теперь вам предлагается оставить позади мир процедур и самим начать разрабатывать объекты. Вы узнаете, чем же так удобно объектно-ориентированное программирование на языке Java, и почувствуете разницу между классом и объектом.
- Война за кресло, или Как объекты могут изменить вашу жизнь
- Создаем первый объект
- Создание и тестирование объектов Movie
- Скорее! Выбирайтесь из главного метода!
- Запускаем нашу игру
Свои переменные нужно знать в лицо. Переменные делятся на два вида: примитивы – простые типы, и ссылки. В жизни должно быть что-то помимо чисел, строк и массивов. Как быть с объектом PetOwner с переменной экземпляра типа Dog? Или Cat с переменной экземпляра Engine? Вы узнаете, что именно можно объявлять в качестве переменных, какие значения присваивать им и как вообще с ними работать.
- Объявление переменной
- Простые типы
- Ключевые слова в Java
- Управление объектом
- Управление объектом с помощью ссылки
- Массивы
Как себя ведут объекты: состояние влияет на поведение, а поведение – на состояние. Вы знаете, что объекты характеризуются состоянием и поведением, которые представлены переменными экземпляра и методами. До этого момента вопрос о связи между состоянием и поведением не поднимался. Вам уже известно, что каждый экземпляр класса может иметь уникальные значения для своих переменных экземпляра. Суть объектов заключается в том, что их поведение зависит от состояния. Иными словами, методы используют значения переменных экземпляра. Теперь пришло время узнать, как изменить состояние объекта.
- Класс описывает, что объект знает и делает
- Передаем методу разные значения
- Получаем значения обратно из метода
- Передаем в метод сразу несколько значений
- Трюки с параметрами и возвращаемыми значениями
- Инкапсуляция
- Объекты внутри массива
- Объявление и инициализация переменных экземпляра
- Разница между переменными экземпляра и локальными переменными
- Сравниваем переменные (примитивы или ссылки)
Особо мощные методы: сделаем методы еще более мощными. Вы уже поработали с переменными, несколькими объектами и написали небольшой код. Но для полноценной работы требуется гораздо больше инструментов, например операторы и циклы. Почему бы вам во время учебы не создать что-нибудь настоящее, чтобы собственными глазами увидеть, как с нуля пишутся и тестируются программы.
- Создадим аналог Морского боя: игра Потопи сайт
- Плавное введение в игру Потопи сайт
- Разработка класса
- Записываем реализацию метода
- Тестовый код для класса SimpleDotCom
- Метод checkYouself()
- Метод main() в игре
- Поговорим о циклах for
- Путешествия сквозь цикл
- Улучшенный цикл for
- Приведение простых типов
Использование библиотеки Java: вместе с Java поставляются сотни готовых классов. Можете не тратить время на изобретение собственного велосипеда, если знаете, как отыскать нужное в библиотеке Java, называемой еще Java API. При написании кода сосредоточьтесь на той части, которая уникальна для вашего приложения. Стандартная библиотека Java представляет собой гигантский набор классов, готовых к применению в качестве строительных блоков.
- Небольшая интрига из предыдущей главы – ошибка
- Примеры использования ArrayList
- Сравнение ArrayList с обычным массивом
- Исправляем код класса DotCom
- Новый и улучшенный класс DotCom
- Создаем настоящую игру Потопи сайт
- Что делает каждый элемент в игре DotComBust (и в какой момент)
- Псевдокод для настоящего класса DotComBust
- Окончательная версия класса DotCom
- Супермощные булевы выражения
- Использование библиотеки (Java API)
- Как работать с API
Прекрасная жизнь в Объектвилле: планируйте свои программы с прицелом на будущее. Как вы оцените способ создания Java-приложений, при котором у вас останется много свободного времени? Заинтересует ли вас создание гибкого кода, которому не страшны досадные изменения в техническом задании, возникающие в последний момент? Поверьте, вы можете получить все это лишь за три простых подхода по 60 минут каждый. Изучив принципы полиморфизма, вы узнаете о пяти шагах грамотного проектирования классов, трех приемах для достижения полиморфизма и восьми способах создания гибкого кода.
- Принципы наследования
- Использование наследования для предотвращения дублирования кода в дочерних классах
- Ищем новые возможности, которые дает наследование
- Проектирование иерархии наследования
- Отношения IS-A и HAS-A
- Как узнать, что наследование оформлено правильно
- Настоящая ценность наследования
- Перегрузка метода
Серьезный полиморфизм: наследование – это только начало. Чтобы задействовать полиморфизм, нужны интерфейсы. Новый уровень гибкости и масштабируемости может обеспечить только архитектура, основанная на интерфейсах. Вероятно, вы захотите их использовать. Вы удивитесь, как могли жить без них раньше. Что такое интерфейс? Это на 100% абстрактный класс. Что такое абстрактный класс? Это класс, для которого нельзя создать экземпляр.
- Абстрактный против Конкретного
- Абстрактные методы
- Полиморфизм в действии
- Класс Object
- Использование полиморфических ссылок типа Object
- Интерфейс спешит на помощь!
Жизнь и смерть объектов: объекты рождаются и умирают. Вы управляете их жизненным циклом. Вы решаете, когда и как создавать их. И вы решаете, когда их уничтожать. Но на самом деле вы не уничтожаете их, а просто делаете брошенными и недоступными. Уже после этого безжалостный сборщик мусора может аннулировать объекты, освобождая используемую память. Вы узнаете, как создаются объекты, где размещаются, как эффективно использовать их и делать недоступными.
- Стек и куча: где все хранится
- Методы размещаются в стеке
- Как работают локальные переменные, являющиеся объектами
- Создание объекта
- Создаем объект Duck
- Инициализация состояния нового объекта Duck
- Роль конструкторов родительского класса в жизни объекта
- Как вызвать конструктор родительского класса
- Конструкторы родительских классов с аргументами
- Вызов одного перегруженного конструктора из другого
- Сколько живет объект
Числа имеют значение: поговорим о математике. В Java API есть множество удобных и простых в использовании методов для работы с числами. Поскольку большинство из них статические, то сначала нужно разобраться, какими особенностями обладают статические переменные и методы, включая константы, которые в Java считаются статическими финализированными переменными.
- Математические методы – наиболее близкие к глобальным
- Разница между обычными (не статическими) и статическими методами
- Что значит иметь класс со статическими методами
- Инициализация статической переменной
- Автоматическая упаковка: стираем границы между примитивом и объектом
- Форматирование чисел
- Спецификатор форматирования
- Работа с датами
- Работа с объектами Calendar
- Основные методы класса Calendar
- Статический импорт
Опасное поведение. В жизни случается всякое: то файл пропадает, то сервер падает. Не важно, насколько хорошо вы программируете, ведь невозможно контролировать все. Что-то может пойти не так. При создании опасного метода вам понадобится код, который будет обрабатывать возможные нестандартные ситуации. Но как узнать, опасен ли метод? И куда поместить код для обработки непредвиденной ситуации? Вам предлагается разработать музыкальный MIDI-проигрыватель, использующий опасный JavaSound API.
- Что происходит, если вы вызываете опасный метод
- Методы в Java используют исключения, чтобы сообщить вызывающему коду: "Случилось нечто плохое. Я потерпел неудачу"
- Исключение – объект типа Exception
- Управление программным потоком в блоках try / catch
- Finally: для действий, которые нужно выполнить несмотря ни на что
- Исключения поддерживают полиморфизм
- Приложение для проигрывания звуков
- Создание MIDI-событий (данных о композиции)
- MIDI-сообщение: сердце MidiEvent
- Как изменить сообщение
Очень графическая история: соберитесь вам предстоит придумать GUI – графический пользовательский интерфейс. Даже если вы уверены, что всю оставшуюся жизнь будете писать код для серверных программ, где работающий на клиентской стороне пользовательский интерфейс представляет собой веб-страницу, рано или поздно вам придется создавать инструменты, и вы захотите применить графический интерфейс. Вы узнаете, как поместить на экран кнопку и заставить ее реагировать на нажатие. Кроме того, вы научитесь рисовать на экране, добавлять изображение в формате JPEG и даже создавать анимацию.
- Ваш первый графический интерфейс: кнопка во фрейме
- Пользовательское событие
- Слушатели, источники и события
- Вернемся к графике…
- Личный виджет для рисования
- Что интересного можно сделать в paintComponent()
- За каждой хорошей графической ссылкой стоит объект Graphics2D
- Компоновка графических элементов: помещаем несколько виджетов во фрейм
- Попробуем сделать это с двумя кнопками
- Как создать экземпляр внутреннего класса
- Используем внутренний класс для анимации
- Легкий способ создания сообщений / событий
Улучшай свои навыки: Swing – это просто. Код для работы со Swing выглядит просто, но, скомпилировав его, запустив и посмотрев на экран, вы подумаете: "Эй, этот объект должен быть в другом месте". Инструмент, который упрощает создание кода, одновременно усложняет управление им – это диспетчер компоновки. Приложив небольшие усилия, вы можете подчинить диспетчер компоновки. Вам предлагается поработать со Swing и ближе познакомиться с виджетами.
- Компоненты Swing
- Диспетчеры компоновки
- Как диспетчер компоновки принимает решения
- Три главных диспетчера компоновки: border, flow и box
- Играем со Swing-компонентами
Сохранение объектов: объекты могут быть сплющенными и восстановленными. Они характеризуются состоянием и поведением. Поведение содержится в классе, а состояние определяется каждым объектом в отдельности. Что же происходит при сохранении состояния объекта? Если вы создаете игру, вам понадобится функция сохранения / восстановления игрового процесса. Если вы пишете приложение, которое рисует графики, вам также необходима функция сохранения / восстановления. Вы можете сделать это легким объектно-ориентированным способом – нужно просто сублимировать / сплющить / сохранить / опустошить сам объект, а затем реконструировать / надуть / восстановить / наполнить его, чтобы получить снова.
- Сохранение состояния
- Запись сериализованного объекта в файл
- Что на самом деле происходит с объектом при сериализации
- Десериализация: восстановление объекта
- Сохранение и восстановление игровых персонажей
- Запись строки в текстовый файл
- Пример текстового файла: электронные флеш-карты
- Quiz Card Builder: структура кода
- Класс java.io.File
- Чтение из текстового файла
- Quiz Card Player: структура кода
- Разбор текста с помощью метода split() из класса String
- Использование serialVersionUID
- Сохранение схемы BeatBox
- Восстановление схемы BeatBox
Устанавливаем соединение: свяжитесь с внешним миром. Обо всех низкоуровневых сетевых компонентах заботятся классы из библиотеки java.net. В Java отправка и получение данных по Сети – это обычный ввод / вывод, разве что со слегка измененным соединительным потоком в конце цепочки. Получив класс BufferedReader, вы можете считывать данные. Ему все равно, откуда они приходят – из файла или по сетевому кабелю. Вы узнаете, как установить связь с внешним миром с помощью сокетов и создадите клиентские и серверные сокеты. В итоге у вас будут клиенты и серверы. После того как вы сделаете так, чтобы они смогли общаться между собой, вы получите полноценный многопоточный клиент для чатов.
- Чат в BeatBox в режиме реального времени
- Подключение, отправка и прием
- Устанавливаем сетевое соединение с помощью сокета
- BufferedReader для считывания данных из сокета
- PrintWriter для записи данных в сокет
- DailyAdviceClient
- Код программы DailyAdviceClient
- Создание простого сервера
- Код приложения DailyAdviceServer
- Создание чат-клиента
- Несколько стеков вызовов
- Планировщик потоков
- Приостановление потока
- Метод sleep()
- Создание и запуск двух потоков
- Использование блокировки объектов
- Новая улучшенная версия SimpleChatClient
- Очень-очень простой чат-сервер
Структуры данных. У вас уже есть все необходимые инструменты для сбора данных и управления ими, поэтому не нужно писать собственные алгоритмы для сортировки. Фреймворк для работы с коллекциями в Java – Java collections framework, содержит структуры данных, которые должны подойти практически для всего, что вам может понадобиться.
- Коллекции
- Сортировка ArrayList методом Collections.sort()
- Обобщения и безопасность типов
- Коллекция API – List (Список), Set (Множество) и Map (Отображение, или Ассоциативный массив)
- Переопределение hashCode() и equals()
- Использование полиморфических аргументов и обобщений
Выпусти свой код. Вы написали код, протестировали и откорректировали, но что же дальше? Теперь пришло время узнать про организацию и упаковывание вашего кода – это то, что нужно знать вне зависимости от выбранного варианта доставки приложения конечным пользователям.
- Варианты развертывания
- Отделение исходных файлов от скомпилированных
- Помещаем программу в JAR-архив
- Помещаем классы в пакеты
- Предотвращение конфликтов при именовании пакетов
- Компилируем и запускаем, используя пакеты
- Флаг -d
- Создание исполняемых Java-архивов с пакетами внутри
- Java Web Start
- JNLP-файл
Распределенные вычисления: находиться далеко – это не всегда плохо. Конечно, задача упрощается, когда все компоненты приложения собраны в одном месте и всем этим управляет одна JVM. Но это не всегда возможно. И это не всегда целесообразно. Как быть, если ваше приложение выполняет сложные вычисления и должно работать на маленьком симпатичном пользовательском устройстве? Что делать, если вашему приложению нужна информация из базы данных, но в целях безопасности к ней может получить доступ только код на вашем сервере? Вы узнаете про технологии EJB – Enterprise Java Beans, и Jini, а также в каких случаях их работа зависит от RMI.
- Технология RMI
- Создание удаленного сервиса
- Сервлеты
- Enterprise JavaBeans
- Немного о Jini
- Создаем обозреватель универсальных сервисов
В книге «Изучаем Java» приводится большое количество примеров Java-программ. Для работы над ним вам не потребуются какие-либо специализированные инструменты, такие как интегрированные среды разработки – IDE. Авторы настоятельно рекомендуют не использовать ничего, кроме простого текстового редактора, поскольку среда IDE может скрыть от вас действительно важные детали. При изучении языка лучше пользоваться командной строкой, а уже потом, вникнув в происходящее, перейти к работе с инструментами, которые автоматизируют процесс разработки.
Формат: PDF + файлы примеров
Качество: eBook
Страниц: 720
Купить книгу «Изучаем Java»
Интернет-магазин OZON.RU: Изучаем Java / Интернет-магазин OZON.RU / Описание товара / Изучаем Java / Интернет-магазин OZON.RU / Оформить заказ
Скачать бесплатно книгу «Изучаем Java»
- Архив Java_HeadFirst.rar 84.54 Мб: Изучаем Java / Depositfiles.com / Архив Java_HeadFirst.rar