- •Аннотация
- •Лекция 1. Что такое Java? История создания.
- •1. Что такое Java?
- •2. История создания Java
- •2.1. Сложности внутри Sun Microsystems
- •2.2. Проект Green
- •2.3. Компания FirstPerson
- •2.4. World Wide Web
- •2.5. Возрождение Oak
- •2.6. Java выходит в свет
- •3. История развития Java
- •3.1. Браузеры
- •3.2. Сетевые компьютеры
- •3.3. Платформа Java
- •4. Заключение
- •5. Контрольные вопросы
- •Аннотация
- •1. Основы объектно-ориентированного программирования
- •1.1. Методология процедурно-ориентированного программирования
- •1.2. Методология объектно-ориентированного программирования
- •1.3. Объекты
- •1.3.1. Состояние.
- •1.3.2. Поведение
- •1.3.3. Уникальность
- •1.4. Классы
- •1.4.1. Инкапсуляция
- •1.4.2. Полиморфизм
- •1.5. Типы отношений между классами
- •1.5.1. Агрегация
- •1.5.2. Ассоциация
- •1.5.3. Наследование
- •1.5.4. Метаклассы
- •1.6. Достоинства ООП
- •1.7. Недостатки ООП
- •1.8. Заключение
- •1.9. Контрольные вопросы
- •Аннотация
- •Лекция 3. Лексика языка
- •1. Лексика языка
- •1.1. Кодировка
- •1.2. Анализ программы
- •1.2.1. Пробелы
- •1.2.2. Комментарии
- •1.2.3. Лексемы
- •1.3. Виды лексем
- •1.3.1. Идентификаторы
- •1.3.2. Ключевые слова
- •1.3.3. Литералы
- •1.3.3.1. Целочисленные литералы
- •1.3.3.2. Дробные литералы
- •1.3.3.3. Логические литералы
- •1.3.3.4. Символьные литералы
- •1.3.3.5. Строковые литералы
- •1.3.3.6. Null литерал
- •1.3.3.7. Разделители
- •1.3.3.8. Операторы
- •1.3.3.9. Заключение
- •1.4. Дополнение: Работа с операторами
- •1.4.1. Операторы присваивания и сравнения
- •1.4.2. Арифметические операции
- •1.4.3. Логические операторы
- •1.4.4. Битовые операции
- •1.5. Заключение
- •1.6. Контрольные вопросы
- •Аннотация
- •Лекция 4. Типы данных
- •1. Введение
- •2. Переменные
- •3. Примитивные и ссылочные типы данных
- •3.1. Примитивные типы
- •3.2. Целочисленные типы
- •4. Дробные типы
- •5. Булевский тип
- •6. Ссылочные типы
- •6.1. Объекты и правила работы с ними
- •6.2. Класс Object
- •6.3. Класс String
- •6.4. Класс Class
- •7. Заключение
- •8. Заключение
- •9. Контрольные вопросы
- •Аннотация
- •Лекция 5. Имена. Пакеты
- •1. Введение
- •2. Имена
- •2.1. Простые и составные имена. Элементы.
- •2.2. Имена и идентификаторы
- •2.3. Область видимости (введение)
- •3. Пакеты
- •3.1. Элементы пакета
- •3.2. Платформенная поддержка пакетов
- •3.3. Модуль компиляции
- •3.3.1. Объявление пакета
- •3.3.2. Импорт-выражения
- •3.3.3. Объявление верхнего уровня
- •3.4. Уникальность имен пакетов
- •4. Область видимости имен
- •4.1. "Затеняющее" объявление (Shadowing)
- •4.2. "Заслоняющее" объявление (Obscuring)
- •5. Соглашения по именованию
- •6. Заключение
- •7. Контрольные вопросы
- •Аннотация
- •Лекция 6. Объявление классов
- •1. Введение
- •2. Модификаторы доступа
- •2.1. Предназначение модификаторов доступа
- •2.2. Разграничение доступа в Java
- •3. Объявление классов
- •3.1. Заголовок класса
- •3.2. Тело класса
- •3.3. Объявление полей
- •3.4. Объявление методов
- •3.5. Объявление конструкторов
- •3.6. Инициализаторы
- •4. Дополнительные свойства классов
- •4.1. Метод main
- •4.2. Параметры методов
- •4.3. Перегруженные методы
- •5. Заключение
- •6. Контрольные вопросы
- •Аннотация
- •Лекция 7. Преобразование типов
- •1. Введение
- •2. Виды приведений
- •2.1. Тождественное преобразование
- •2.2. Преобразование примитивных типов (расширение и сужение)
- •2.3. Преобразование ссылочных типов (расширение и сужение)
- •2.4. Преобразование к строке
- •2.5. Запрещенные преобразования
- •3. Применение приведений
- •3.1. Присвоение значений
- •3.2. Вызов метода
- •3.3. Явное приведение
- •3.4. Оператор конкатенации строк
- •3.5. Числовое расширение
- •3.5.1. Унарное числовое расширение
- •3.5.2. Бинарное числовое расширение
- •4. Тип переменной и тип ее значения
- •5. Заключение
- •6. Контрольные вопросы
- •Аннотация
- •1. Введение
- •2. Статические элементы
- •3. Ключевые слова this и super
- •4. Ключевое слово abstract
- •5. Интерфейсы
- •5.1. Объявление интерфейсов
- •5.2. Реализация интерфейса
- •5.3. Применение интерфейсов
- •6. Полиморфизм
- •6.1. Поля
- •6.2. Методы
- •6.3. Полиморфизм и объекты
- •7. Заключение
- •8. Контрольные вопросы
- •Аннотация
- •Лекция 9. Массивы
- •1. Введение
- •2. Массивы, как тип данных в Java
- •2.1. Объявление массивов
- •2.2. Инициализация массивов
- •2.3. Многомерные массивы
- •2.4. Класс массива
- •3. Преобразование типов для массивов
- •3.1. Ошибка ArrayStoreException
- •3.2. Переменные типа массив, и их значения
- •4. Клонирование
- •4.1. Клонирование массивов
- •5. Заключение
- •6. Контрольные вопросы
- •Аннотация
- •Лекция 10. Операторы и структура кода
- •1. Управление ходом программы
- •2. Нормальное и прерванное выполнение операторов
- •3. Блоки и локальные переменные
- •4. Пустой оператор
- •5. Метки
- •6. Оператор if
- •7. Оператор switch
- •8. Управление циклами
- •8.1. Цикл while
- •8.2. Цикл do
- •8.3. Цикл for
- •9. Операторы break и continue
- •9.1. Оператор continue
- •9.2. Оператор break
- •10. Именованные блоки
- •11. Оператор return
- •12. Оператор synchronized
- •13.1. Причины возникновения ошибок
- •13.2. Обработка исключительных ситуаций
- •13.2.1. Конструкция try-catch
- •13.2.2. Конструкция try-catch-finally
- •13.3. Использование оператора throw
- •13.4. Обрабатываемые и необрабатываемые исключения
- •13.5. Создание пользовательских классов исключений
- •13.6. Переопределение методов и исключения
- •13.7. Особые случаи
- •14. Заключение
- •15. Контрольные вопросы
- •Аннотация
- •Лекция 11. Пакет java.awt
- •1. Введение
- •2. Апплеты
- •2.1. Тег HTML <Applet>
- •2.2. Передача параметров
- •2.3. Контекст апплета
- •2.4. Отладочная печать
- •2.5. Порядок инициализации апплета
- •2.6. Перерисовка
- •2.7. Задание размеров графических изображений
- •2.8. Простые методы класса Graphics
- •2.9. Цвет
- •2.9.1. Методы класса Color
- •2.10. Шрифты
- •2.10.1. Использование шрифтов
- •2.10.2. Позиционирование и шрифты: FontMetrics
- •2.10.3. Использование FontMetrics
- •2.10.4. Центрирование текста
- •3. Базовые классы
- •4. Основные компоненты
- •5. Менеджеры компоновки
- •6. Окна
- •7. Меню
- •8. Обработка событий
- •8.1. Рисование "каракулей" в Java
- •8.2. Рисование "каракулей" с использованием встроенных классов
- •9. Заключение
- •10. Контрольные вопросы
- •Аннотация
- •Лекция 12. Потоки выполнения. Синхронизация
- •1. Введение
- •2. Многопоточная архитектура
- •3. Базовые классы для работы с потоками
- •3.1. Класс Thread
- •3.2. Интерфейс Runnable
- •3.3. Работа с приоритетами
- •3.4. Демон-потоки
- •4. Синхронизация
- •4.1. Хранение переменных в памяти
- •4.2. Модификатор volatile
- •4.3. Блокировки
- •5. Методы wait(), notify(), notifyAll() класса Object
- •6. Контрольные вопросы
- •Аннотация
- •Лекция 13. Пакет java.lang.
- •1. Введение
- •2. Object
- •3. Class
- •4. Wrapper Classes
- •4.1. Integer
- •4.2. Character
- •4.3. Boolean
- •4.4. Void
- •5. Math
- •6. Строки
- •6.1. String
- •6.2. StringBuffer
- •7. Системные классы
- •7.1. ClassLoader
- •7.2. SecurityManager - менеджер безопасности
- •7.3. System
- •7.4. Runtime
- •7.5. Process
- •8. Потоки исполнения
- •8.1. Runnable
- •8.2. Thread
- •8.3. ThreadGroup
- •9. Исключения
- •10. Заключение
- •11. Контрольные вопросы
- •Аннотация
- •Лекция 14. Пакет java.util
- •1. Введение
- •2. Работа с датами и временем
- •2.1. Класс Date
- •2.2. Классы Calendar и GregorianCalendar
- •2.3. Класс TimeZone
- •2.4. Класс SimpleTimeZone
- •3. Интерфейс Observer и класс Observable
- •4. Коллекции
- •4.1. Интерфейсы
- •4.1.1. Интерфейс Collection
- •4.1.2. Интерфейс Set
- •4.1.3. Интерфейс List
- •4.1.4. Интерфейс Map
- •4.1.5. Интерфейс SortedSet
- •4.1.6. Интерфейс SortedMap
- •4.1.7. Интерфейс Iterator
- •4.2. Aбстрактные классы используемые при работе с коллекциями.
- •4.3. Конкретные классы коллекций
- •4.4. Класс Collections
- •5. Класс Properties
- •6. Интерфейс Comparator
- •7. Класс Arrays
- •8. Класс StringTokenizer
- •9. Класс BitSet
- •10. Класс Random
- •11. Локализация
- •11.1. Класс Locale
- •11.2. Класс ResourceBundle
- •12. Заключение
- •13. Контрольные вопросы
- •Аннотация
- •Лекция 15. Пакет java.io
- •1. Система ввода/вывода. Потоки данных (stream)
- •1.1. Классы InputStream и OutputStream
- •1.2. Классы-реализации потоков данных
- •1.2.1. Классы ByteArrayInputStream и ByteArrayOutputStream
- •1.2.2. Классы FileInputStream и FileOutputStream
- •1.2.3. PipedInputStream и PipedOutputStream
- •1.2.4. StringBufferInputStream
- •1.2.5. SequenceInputStream
- •1.3. Классы FilterInputStreeam и FilterOutputStream. Их наследники.
- •1.3.1. BufferedInputStream и BufferedOutputStream
- •1.3.2. LineNumberInputStream
- •1.3.3. PushBackInputStream
- •1.3.4. PrintStream
- •1.3.5. DataInputStream и DataOutputStream
- •2. Serialization
- •2.1. Версии классов
- •3. Классы Reader и Writer. Их наследники.
- •4. Класс StreamTokenizer
- •5. Работа с файловой системой.
- •5.1. Класс File
- •5.2. Класс RandomAccessFile
- •6. Заключение
- •7. Контрольные вопросы
- •Аннотация
- •Лекция 16. Введение в сетевые протоколы
- •1. Основы модели OSI
- •2. Physical layer (layer 1)
- •3. Data layer (layer 2)
- •3.1. LLC sublayer.
- •3.2. MAC sublayer.
- •4. Network layer (layer 3)
- •4.1. Class A
- •4.2. Class B
- •4.3. Class CClass DClass E
- •5. Transport layer (layer 4)
- •6. Session layer (layer 5)
- •7. Presentation layer (layer 6)
- •8. Application layer (layer 7)
- •9. Утилиты для работы с сетью
- •9.1. IPCONFIG (IFCONFIG)
- •9.3. Ping
- •9.4. Traceroute
- •9.5. Route
- •9.6. Netstat
- •9.7. Задания для практического занятия
- •10. Пакет java.net
- •11. Заключение
- •12. Контрольные вопросы
Стр. 34 из 38 |
Заключение |
});
//Создает кнопку Clear. Button b = new Button("Clear");
//Определяет, создает и регистрирует объект слушателя
//для обработки события, связанного с нажатием кнопки. b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//стирание каракулей
Graphics g = getGraphics(); g.setColor(getBackground());
g.fillRect(0, 0, getSize().width, getSize().height);
}
});
// Добавляет кнопку в апплет. this.add(b);
}
}
Теперь апплет выглядит так:
Обратите внимание, что в этот пример порождает 3 вспомогательных класса: Scribble3$1,2,3.
9. Заключение
В этой главе изучается построение графического интерфейса пользователя (GUI) с помощью Java, в которой для этой цели предназначена библиотека AWT.
Рассмотрение начинается с апплетов, небольших программ, которые предназначены для работы в браузерах как небольшие части HTML-страниц. Во-первых, необходимо использовать специальный тег, чтобы разместить апплет на странице. В частности, можно указывать специальные параметры, чтобы апплет можно было настраивать без перекомпиляции кода. Во-вторых, рассматриваются этапы жизненного цикла апплета, который отличается от цикла обычного приложения, которое запускается методом main. Наконец, рассматриваются способы рисования в Java – абстрактный класс Graphics, работа с цветами, шрифтами.
Затем описываются стандартные компоненты AWT, которые иерархически упорядочены в дерево наследования с классом Component в вершине. Важным его наследником является класс Container, который может хранить набор компонент. Прямые наследники Component
Программирование на Java
Rendered by www.RenderX.com
Стр. 35 из 38
составляют набор управляющих элементов («контролов» от англ. controls), а наследники Container – набор контейнеров для группировки и расположения компонент. Для упрощения размещения отдельных элементов пользовательского интерфейса применяются менеджеры компоновки (Layout managers).
Один из наследников Container – класс Window, который представляет собой самостоятельное окно в многооконной операционной системе. Два его наследника – Dialog и Frame. Для работы с файлами определен наследник Dialog – FileDialog.
Для построения меню используется свое небольшое дерево наследования с MenuComponent в качестве вершины.
Наконец, излагаются принципы модели событий от пользователя, позволяющей обрабатывать все действия, которые производит клиент, работая с программой. 11 событий и соответствующих им интерфейсов предоставляют все необходимое для написания полноценной GUI-программы.
10. Контрольные вопросы
11-1. От какого класса наследуется класс Applet?
a.) java.awt.Panel
11-2. Может ли быть дважды вызван метод init у апплета? Метод start?
a.) Метод init вызывается только один раз при конструировании апплета. Метод start может быть вызван многократно, если пользователь покидал и возвращался на страницу.
11-3. Чем различаются методы paint, update, repaint?
a.) paint определяет внешний вид компоненты, в нем описывается отрисовка всех внешних элементов
update сначала закрашивает всю компоненту фоновым (background) цветом, а затем вызывает paint
repaint не перерисовывает компоненту напрямую, он инициирует вызов метода update через указанный промежуток времени
11-4. Как создать объект класса Color, описывающий чистый синий цвет?
a.) new Color(0,0,255). Также можно воспользоваться константой Color.blue
11-5. Какими параметрами в Java характеризуется шрифт?
a.) Имя семейства шрифта, размер (в пунктах), стиль (обычный, жирный, наклонный).
11-6. Для чего нужен класс FontMetrics?
a.) Поскольку размер шрифта задается в пунктах, а отображение текста делается с помощью шрифтов, которые поддерживаются операционной системой, необходима специальная утилита для вычисления размера
Программирование на Java
Rendered by www.RenderX.com
Стр. 36 из 38 |
Контрольные вопросы |
|
шрифта в пикселах. Это может потребоваться для точного |
|
позиционирования текста в компоненте. |
|
Класс FontMetrics предоставляет набор методов для получения отдельных |
|
параметров шрифта, таких как ширина слова, высота шрифта и другие. |
11-7. Напишите класс-компоненту, у которого по центру рисуется квадрат размерами
10х10.
a.) public class SquareComponent extends Canvas { public void paint(Graphics g) {
g.drawRect(getWidth()-5, getHeight()-5, 10, 10);
}
}
11-8. Как в AWT создаются компоненты чекбокс (check-box)? Радио-кнопка (radio-button)?
a.) чек бокс порождается компонентой Checkbox:
Checkbox chbox = new Checkbox(“название”);
Для создания радио-кнопок необходимо связать несколько компонент
Checkbox с помощью класса CheckboxGroup:
CheckboxGroup |
group = new CheckboxGroup(); |
|
Checkbox |
rb1 |
= new Checkbox("режим 1",group, true); |
Checkbox |
rb2 |
= new Checkbox("режим 2",group, false); |
11-9. В чем разница между компонентами List и Choice?
a.) List отображает несколько элементов списка сразу, а Choise только один. Так же в List может быть выбрано несколько элементов (если установлено свойство multiselect), а в Choice только один.
11-10. Для чего нужны менеджеры компоновки? Исходя из каких параметров они выполняют свою работу?
a.) Для автоматического расположения компонент внутри контейнера. Менеджер компоновки может установить размер и местоположение компоненты, и в дальнейшем не придется проводить дополнительную работу, если изменился размер окна или компонент, или их количество.
При компоновке учитываются следующие параметры:
•размер контейнера
•количество компонент и порядок их следования
•начальный размер и положение компонент
•constraints, устанавливаемый при добавлении компоненты
•дополнительные свойства самого менеджера (отступы между компонентами и т.п.)
Программирование на Java
Rendered by www.RenderX.com
Стр. 37 из 38
11-11. В чем разница между Dialog и Frame?
a.) Основное различие заключается в том, что Frame – самостоятельное окно, а Dialog всегда привязан к Frame. Только Dialog обладает свойством модальности. Только Frame может иметь главное меню. Dialog нельзя минимизировать или максимизировать.
11-12. Какие действия необходимо произвести, чтобы создать компонент и подписаться на событие, которое он генерирует?
a.) Сначала создается сама компонента. Затем создается класс-слушатель, реализующий соответствующий Listener-интерфейс, который будет реагировать на появление события. Наконец, вызывается метод add<…>Listener, который регистрирует слушателя.
11-13. Как узнать, какие события генерирует стандартный компонент?
a.) Необходимо посмотреть, каким методы add<…>Listener в нем объявлены или унаследованы от родительского класса.
Программирование на Java
Rendered by www.RenderX.com
Программирование на Java ()
Программирование на Java
Rendered by www.RenderX.com