
- •Учебно-методическое пособие
- •V курса заочной формы обучения автф
- •Предисловие
- •Глава 1. Основы программирования на java. Создание простейших приложений и апплетов в netbeans 7.0
- •Инструментальная среда разработки программ на Java
- •Использование среды NetBeans 7.0
- •Структура Java-программы
- •Переменные
- •Примитивные типы. Всего в Java определено восемь примитивных типов: int (4b), short (2b), byte (1b), long (8b), float (4b), double (8b), boolean (true, false), char (2b).
- •Модификаторы доступа. Модификаторы доступа используются для управления доступностью элементов класса из других частей программы (в других классах).
- •Наследование классов
- •Специальные переменные
- •Пакеты и импортирование Классы являются основными строительными блоками любой Java-программы. Пакеты содержат в себе наборы классов (а также исключения и интерфейсы).
- •Импортирование пакетов. Существует ряд способов доступа к классам в пакетах, основным из которых является импортирование пакета в начале программ:
- •Создание пакетов. Для создания пакета (т.Е. Добавления класса в пакет) в первой строке программы указывается следующее предложение:
- •Апплеты
- •События и их обработка
- •Апплеты двойного назначения
- •Практические задания
- •Вопросы для самопроверки
- •Глава 2. Обработка событий. Графика. Графика в Java
- •Цвет. Для задания текущего цвета используется метод setColor() класса Graphics. Создадим случайный цвет и установим его, g - объект Graphics:
- •Модель делегирования событий в Java 1.1
- •1. Пример обработки события с использованием реализации интерфейса.
- •2. Пример обработки события с использованием вложенных классов, наследующих классы-адаптеры.
- •3. Пример обработки события с использованием вложенного анонимного класса.
- •Графика 2d
- •Вероятностный подход
- •Практические задания
- •Вопросы для самопроверки
- •Глава 3: разработка графического интерфейса программы Библиотека графических компонент awt
- •Флажки (или переключатели). Язык Java поддерживает два типа флажков-переключателей: неисключающие (класс jCheckBox) и исключающие (класс jRadioButton).
- •Комбобоксы (или выпадающие списки). Класс jComboBox дает возможность создавать список элементов выбора, который всплывает на экране в виде меню.
- •Контейнеры
- •Менеджеры размещения компонентов
- •Практические задания
- •Вопросы для самопроверки
- •Глава 4. Классы-коллекции
- •Интерфейс Collection. Интерфейс Collection из пакета java.Util описывает общие свойства коллекций List и Set. Он содержит методы добавления и удаления элементов, проверки и преобразования элементов:
- •Классы, наследующие интерфейс List. Класс ArrayList очень похож на класс Vector, имеет тот же набор методов и может использоваться в тех же ситуациях.
- •Сравнение элементов коллекций.
- •Классы, создающие множества. Класс HashSet полностью реализует интерфейс Set и итератор типа Iterator. Класс HashSet используется в тех случаях, когда надо хранить только одну копию каждого элемента.
- •Практические задания
- •Вопросы для самопроверки
- •Глава 5. Многопотоковые приложения Процессы, потоки и приоритеты
- •Реализация многозадачности в Java
- •Создание подкласса Thread. При использовании этого способа для потоков определяется отдельный класс, например:
- •Применение анимации для мультизадачности
- •Состояние потока
- •Программирование движения объекта
- •Практические задания
- •Вопросы для самопроверки
- •Глава 6. Потоки данных. Работа с локальными файлами Организация ввода-вывода в Java
- •Классы потоков ввода-вывода
- •Иерархия классов потоков ввода-вывода
- •Консольный ввод/вывод. Для вывода на консоль используется метод println() класса PrintStream. Вместо System.Out.Println(), то вы можете определить новую ссылку на System.Out, например:
- •Каналы обмена информацией. В пакете java.Io есть четыре класса Pipedxxx, организующих обмен информацией между потоками - Thread.
- •Файловые диалоги. При работе с файлами часто требуются стандартные файловые диалоги. Библиотека Swing предлагает класс jFileChooser для реализации этого функционала.
- •Практические задания
- •Вопросы для самопроверки
- •Глава 7. Сетевые приложения «клент-сервер» Сетевые средства
- •Работа по протоколу tcp
- •Работа по протоколу udp
- •Практические задания
- •Вопросы для самопроверки
- •Глава 8. Generic-классы в java
- •Практические задания
- •Вопросы для самопроверки
Классы, создающие множества. Класс HashSet полностью реализует интерфейс Set и итератор типа Iterator. Класс HashSet используется в тех случаях, когда надо хранить только одну копию каждого элемента.
В классе HashSet четыре конструктора:
HashSet() — создает пустой объект с показателем загруженности 0,75;
HashSet(int capacity) — создает пустой объект с начальной емкостью capacity и показателем загруженности 0,75;
HashSet(int capacity, float loadFactor) — создает пустой объект с начальной емкостью capacity и показателем загруженности loadFactor;
HashSet(Collection coll) — создает объект, содержащий все элементы коллекции coll, с емкостью, равной удвоенному числу элементов коллекции coll, но не менее 11, и показателем загруженности 0,75.
Упорядоченные множества. Класс TreeSet полностью реализует интерфейс SortedSet и итератор типа Iterator. Класс TreeSet реализован как бинарное дерево поиска, его элементы хранятся в упорядоченном виде. Это значительно ускоряет поиск нужного элемента.
Порядок задается либо естественным следованием элементов, либо объектом, реализующим интерфейс сравнения Comparator.
В классе TreeSet четыре конструктора:
TreeSet() — создает пустой объект с естественным порядком элементов;
TreeSet(Comparator с) — создает пустой объект, в котором порядок задается объектом сравнения с;
TreeSet(Collection coll) — создает объект, содержащий все элементы коллекции coll, с естественным порядком ее элементов;
TreeSet(SortedMap sf) — создает объект, содержащий все элементы отображения sf, в том же порядке.
В пример 4.6 показано, как можно хранить комплексные числа в упорядоченном виде. Порядок задается объектом класса ComplexCompare.
Пример 4.6. Хранение комплексных чисел в упорядоченном виде
TreeSet ts = new TreeSet(new ComplexCompare());
ts.add(new Complex(1.2, 3.4));
ts.add(new Complex(-1.25, 33.4));
ts.add(new Complex(1.23, -3.45));
ts.add(new Complex(16.2, 23.4));
Iterator it = ts.iterator();
while(it.hasNext()) {
Complex c = (Complex)it.next();
System.out.println("(" + c.Re + "; " + c.Im + ")");
}
Практические задания
Изучить особенности реализации классов-коллекций в Java.
Доработать программу, созданную в лабораторных работах № 2 - 3:
добавить генерируемым объектам понятия «время рождения» и «время жизни». Время рождения устанавливается в момент генерации объекта, и по значению соответствует времени, прошедшему от начала симуляции. Время жизни – время, через которое объект должен исчезнуть, считая от времени рождения;
вынести параметры времен жизни объектов в пользовательский интерфейс. Для каждого типа объекта должно задаваться собственное время. Рекомендуется использовать текстовые поля, но следуют помнить о проверке на ввод некорректных данных;
огранизовать коллекцию сгенерированных объектов по варианту. При генерации объекта происходит добавление его в коллекцию. При обновлении времени обойдите коллекцию и удалите все объекты, время жизни которых истекло;
добавить генерируемым объектам уникальные целочисленные идентификаторы (случайные числа), которые назначаются при генерации объекта. Для хранения сгенерированных идентификаторов используйте коллекцию удобную для поиска по варианту;
добавьте в панель управления кпопку «Текущие объекты». По нажатию на эту кнопку появляется модальное диалоговое окно, содержащее список всех «живых» объектов на момент нажатия со временем их рождения (время рождения – ключ). В класс диалогового окна должна передаваться коллекция с хранением объектов по времени рождения. Типы коллекций задаются вариантом.
Вариант 1
Коллекция для хранения объектов: Vector
Коллекция для хранения и поиска уникальных идентификаторов: HashSet
Коллекция для хранения объектов по времени рождения: TreeMap
Вариант 2
Коллекция для хранения объектов: ArrayList
Коллекция для хранения и поиска уникальных идентификаторов: HashSet
Коллекция для хранения объектов по времени рождения: TreeMap
Вариант 3
Коллекция для хранения объектов: LinkedList
Коллекция для хранения и поиска уникальных идентификаторов: HashSet
Коллекция для хранения объектов по времени рождения: TreeMap
Вариант 4
Коллекция для хранения объектов: Vector
Коллекция для хранения и поиска уникальных идентификаторов: TreeSet
Коллекция для хранения объектов по времени рождения: HashMap
Вариант 5
Коллекция для хранения объектов: ArrayList
Коллекция для хранения и поиска уникальных идентификаторов: TreeSet
Коллекция для хранения объектов по времени рождения: HashMap
Вариант 6
Коллекция для хранения объектов: LinkedList
Коллекция для хранения и поиска уникальных идентификаторов: TreeSet
Коллекция для хранения объектов по времени рождения: HashMap
Вариант 7
Коллекция для хранения объектов: Vector
Коллекция для хранения и поиска уникальных идентификаторов: HashSet
Коллекция для хранения объектов по времени рождения: HashMap
Вариант 8
Коллекция для хранения объектов: ArrayList
Коллекция для хранения и поиска уникальных идентификаторов: HashSet
Коллекция для хранения объектов по времени рождения: HashMap
Вариант 9
Коллекция для хранения объектов: Vector
Коллекция для хранения и поиска уникальных идентификаторов: TreeSet
Коллекция для хранения объектов по времени рождения: TreeMap
Вариант 10
Коллекция для хранения объектов: ArrayList
Коллекция для хранения и поиска уникальных идентификаторов: TreeSet
Коллекция для хранения объектов по времени рождения: TreeMap