Программирование на Java | Модемы | Дипломы по радиотехнике и связи |
Программирование на языке Java
Революция по имени Java
История создания
Апплеты Java
Революционный язык программирования
Простота и мощь
Безопасность
Объектная ориентированность
Надежность
Интерактивность
Независимость от архитектуры ЭВМ
Интерпретация плюс высокая производительность
Простота изучения
Богатая объектная среда
Отличия Java от C
Глобальные переменные
Goto
Указатели
Распределение памяти
Хрупкие типы данных
Ненадежное приведение типов
Ненадежные списки аргументов
Раздельные файлы заголовков
Ненадежные структуры
Препроцессорная обработка
QED
Введение в язык Java
Типы

В этой главе вы познакомитесь со всеми основными типами языка Java и увидите, как надо объявлять переменные, присваивать им значения и использовать выражения со смешанными типами. В данной главе мы и обсудим простые типы языка Java, оставив сложные типы до главы 7.

Простые типы
Целые числа
Числа с плавающей точкой
Приведение типа
Автоматическое преобразование типов в выражениях
Символы
Тип boolean
Массивы
Многомерные массивы
Знай свои типы
Операторы

Операторы в языке Java—это специальные символы, которые сообщают транслятору о том, что вы хотите выполнить операцию с некоторыми операндами. Некоторые операторы требуют одного операнда, их называют унарными. Одни операторы ставятся перед операндами и называются префиксными, другие—после, их называют постфиксными операторами. Большинство же операторов ставят между двумя операндами, такие операторы называются инфиксными бинарными операторами. Существует тернарный оператор, работающий с тремя операндами.

В Java имеется 44 встроенных оператора. Их можно разбить на 4 класса—арифметические, битовые, операторы сравнения и логические.

Арифметические операторы
Целочисленные битовые операторы
Сдвиги влево и вправо
Битовые операторы присваивания
Операторы отношения
Булевы логические операторы
Тернарный оператор if-then-else
Приоритеты операторов
Явные приоритеты
Управление выполнением программы
Условные операторы
Циклы
Исключения
Классы

Базовым элементом объектно-ориентированного программирования в языке Java является класс. В этой главе Вы научитесь создавать и расширять свои собственные классы, работать с экземплярами этих классов и начнете использовать мощь объектно-ориентированного подхода. Напомним, что классы в Java не обязательно должны содержать метод main. Единственное назначение этого метода—указать интерпретатору Java, откуда надо начинать выполнение программы. Для того, чтобы создать класс, достаточно иметь исходный файл, в котором будет присутствовать ключевое слово class, и вслед за ним—допустимый идентификатор и пара фигурных скобок для его тела.

class Point
Переменные представителей (instance variables)
Оператор new
Объявление методов
Вызов метода
Скрытие переменных представителей
Конструкторы
Совмещение методов
this в конструкторах
Наследование
super
Замещение методов
Динамическое назначение методов
final
finalize
static
abstract
Классическое заключение
Пакеты и интерфейсы

Пакет (package)—это некий контейнер, который используется для того, чтобы изолировать имена классов. Например, вы можете создать класс List, заключить его в пакет и не думать после этого о возможных конфликтах, которые могли бы возникнуть если бы кто-нибудь еще создал класс с именем List.

Интерфейс
Пакеты
Оператор package
Трансляция классов в пакетах
Оператор import
Ограничение доступа
Интерфейсы
Оператор interface
Оператор implements
Переменные в интерфейсах
Использование пакетов
Работа со строками

В этой главе обсуждаются средства языка Java для работы со строками. В языках С и C отсутствует встроенная поддержка такого объекта, как строка. В них при необходимости передается адрес последовательности байтов, содержимое которых трактуется как символы до тех пор, пока не будет встречен нулевой байт, отмечающий конец строки. В пакет java.lang встроен класс, инкапсулирующий структуру данных, соответствующую строке. Этот класс, называемый String, не что иное, как объектное представление неизменяемого символьного массива. В этом классе есть методы, которые позволяют сравнивать строки, осуществлять в них поиск и извлекать определенные символы и подстроки. Класс StringBuffer используется тогда, когда строку после создания требуется изменять.

Конструкторы
Специальный синтаксис для работы со строками
Создание строк
Слияние строк
Последовательность выполнения операторов
Преобразование строк
Извлечение символов
Сравнение
Равенство
Упорядочение
indexOf и lastIndexOf
Модификация строк при копировании
valueOf
StringBuffer
Конструкторы
ensureCapacity
setLength
charAt и setCharAt
append
insert
Без строк не обойдешься
Обработка исключений

В этой главе обсуждается используемый в Java механизм обработки исключений. Исключение в Java—это объект, который описывает исключительное состояние, возникшее в каком-либо участке программного кода. Когда возникает исключительное состояние, создается объект класса Exception. Этот объект пересылается в метод, обрабатывающий данный тип исключительной ситуации. Исключения могут возбуждаться и <вручную> для того, чтобы сообщить о некоторых нештатных ситуациях.

Основы
Типы исключений
Неперехваченные исключения
try и catch
Несколько разделов catch
Вложенные операторы try
throw
throws
finally
Подклассы Exception
Заключительное резюме
Легковесные процессы и синхронизация

Параллельное программирование, связанное с использованием легковесных процессов, или подпроцессов (multithreading, light-weight processes) — концептуальная парадигма, в которой вы разделяете свою программу на два или несколько процессов, которые могут исполняться одновременно.

Замечание
Цикл обработки событий в случае единственного подпроцесса
Модель легковесных процессов в Java
Приоритеты подпроцессов
Синхронизация
Сообщения
Подпроцесс
Runnable
Приоритеты подпроцессов
Синхронизация
Взаимодействие подпроцессов
Клинч (deadlock)
Методы класса
Методы объекта start
А дорога дальше вьется
Утилиты

Библиотека классов языка включает в себя набор вспомогательных классов, широко используемых в других встроенных пакетах Java. Эти классы расположены в пакетах java.lang и java.util. Они используются для работы с наборов объектов, взаимодействия с системными функциями низкого уровня, для работы с математическими функциями, генерации случайных чисел и манипуляций с датами и временем.

Простые оболочки для типов.
Number
Double и Float
Бесконечность и NaN
Integer и Long
Character
Boolean
Перечисления
Интерфейс Enumeration
Vector
Stack
Dictionary
HashTable
Properties
StrinsTokenizer
Runtime
Управление памятью
Выполнение других программ
System
Свойства окружения
Date
Сравнение
Строки и часовые пояса
Math
Ввод/Вывод

Обобщенное понятие источника ввода относится к различным способам получения информации: к чтению дискового файла, символов с клавиатуры, либо получению данных из сети. Аналогично, под обобщенным понятием вывода также могут пониматься дисковые файлы, сетевое соединение и т.п. Эти абстракции дают удобную возможность для работы с вводом-выводом (I/O), не требуя при этом, чтобы каждая часть вашего кода понимала разницу между, скажем, клавиатурой и сетью. В Java эта абстракция называется потоком (stream)

и реализована в нескольких классах пакета java.io. Ввод инкапсулирован в классе InputStream, вывод — в OutputStream. В Java есть несколько специализаций этих абстрактных классов, учитывающих различия при работе с дисковыми файлами, сетевыми соединениями и даже с буферами в памяти.
File
Каталоги
Filename Filter
InputStream
OutputStream
Файловые потоки
Фильтруемые потоки
Буферизованные потоки
Сетевые средства

Эта глава посвящена описанию пакета java.net. Java поддерживает протокол TCP/IP, во-первых, расширяя свой интерфейс потоков ввода-вывода, описанного в предыдущей главе, и во вторых, добавляя возможности, необходимые для построения объектов ввода-вывода при работе в сети.

InetAddress
Фабричные методы
Дейтаграммы
Сокеты "для клиентов"
Сокеты "для серверов"
URL
URLConnection
Сеть и только сеть
Апплеты

Апплеты—это маленькие приложения, которые размещаются на серверах Internet, транспортируются клиенту по сети, автоматически устанавливаются и запускаются на месте, как часть документа HTML. Когда апплет прибывает к клиенту, его доступ к ресурсам ограничен.

Тег HTML
Передача параметров
Контекст апплета
Порядок инициализации апплета
Перерисовка
Простые методы класса Graphics
Цвет
Методы класса Color
Шрифты
Использование шрифтов
Позиционирование и шрифты: FontMetrics
Центрирование текста
Набор абстракций для работы с окнами

Трудность при создании независимой от платформы библиотеки заключается в том, что ее разработчикам либо приходится требовать, чтобы все приложения на всех платформах вели себя и выглядели одинаково, либо для поддержки, скажем, трех различных разновидностей интерфейса приходится писать в три раза больше кода. Существуют два взгляда на эту проблему. Один подход заключается в том, что упор делается на графику низкого уровня— рисование пикселей, при этом разработчики библиотеки сами заботятся о внешнем виде каждого компонента. При другом подходе создаются абстракции, подходящие для библиотек каждой из операционных систем, и именно "родные" пакеты данной операционной системы служат подъемной силой для архитектурно-нейтральной библиотеки на каждой из платформ. В Java при создании библиотеки Abstraction Window Toolkit (AWT) выбран второй подход.

Компоненты
Container
Panel
Canvas
Label
Button
Checkbox
CheckboxGroup
Choice
Scrollbar
TextField
TextArea
Layout
LayoutManager
BorderLayout
GridLayout
Insets
CardLayout
Window
Frame
Меню
AWT при свете дня
Модели обработки событий

Несмотря на существенные изменения механизма обработки событий в AWT, Java1.1 поддерживает обратную совместимость с моделью обработки событий, принятой в Java 1.0. Однако такая совместимость относится к типу "все или ничего"—эти две модели настолько отличаются друг от друга, что их невозможно использовать в одном приложении одновременно.

Модель обработки событий Java 1.0
Элементы и связанные с ними события
Модель обработки событий Java 1.1
Рисование "каракулей" с использованием встроенных классов
Работа с изображениями

Java работает с наиболее популярными во Всемирной паутине форматами изображений—JPEG и GIF. JPEG лучше подходит для естественных цветных изображений, таких, как фотографии, а формат GIF является наилучшими для графических эмблем, изображений кнопок, и т.п.

Простой загрузчик изображений
ImageObserver
MediaTracker
ImageProducer
MemorylmageSource
ImageFilter и ImageFilterSource
CropImageFilter
RGBImageFilter
Мультимедиа-горизонты
Инструментальные средства JDK
appletviewer — программа просмотра апплетов Java
Java — интерпретатор Java
javac — компилятор Java
javadoc — генератор документации
javah — генератор С-файлов
javakey — программа управления ключами и цифровыми подписями
javap — дизассемблер классов Java
native2ascii — преобразование исходных текстов Java в ASCII
serialver — генератор номера версии класса