Инструментальные средства ООП языка программирования Java
1. Виртуальная машина Java (2 часа)
1.1. История и предпосылки появления Java.
1.2. Понятие виртуальной машины. Среда исполнения и байт-код. Взаимодействие виртуальной машины с операционной системой.
1.3. Пространства классов. Структура приложений на Java. Загрузка классов и инициализация объектов.
1.4. Сферы применения Java в современном информационном мире.
1.5. Версии Java машины и их эволюция.
1.6. Средства ООП, непосредственно поддерживаемые в Java.
1.7. Простейшие приложение на Java.
2. Алгоритмические средства языка Java. (1 час)
2.1. Строгая типизация Java.
2.2. Базовые типы языка. Строки и литералы.
2.3. Преобразования типов в выражениях.
2.4. Особенности инициализации массивов. Операторы управления памятью.
2.5. Краткий обзор операторов. Использование break.
3. Средства объектного программирования языка Java. (3 часа)
3.1. Представление объектов и классов.
3.1.1. Структура объявления класса.
3.1.2. Доступ к членам класса.
3.1.3. Спецификаторы доступа для обеспечения инкапсуляции.
3.1.4. Спецификатор доступа final.
3.1.5. Средства управления жизнью объекта. Конструкторы и метод finalize().
3.1.6. Принципы работы сборщика мусора.
3.1.7. Работа с массивами объектов.
3.1.8. Статические поля и методы классов. Классы – утилиты.
3.1.9. Блок статической инициализации.
3.1.10. Принцип работы ClassLoader.
3.2. Реализация отношений между объектами и классами.
3.2.1. Ассоциация и агрегация объектов и классов.
3.2.2. Использование и зависимость от интерфейсов.
3.2.3. Объекты при передаче параметров и возврате из методов.
3.2.4. Реализация отношения Клиент – Сервер.
3.2.5. Внутренние классы.
4. Средства объектно-ориентированного программирования Java. (6 часов)
4.1. Наследование в Java.
4.1.1. Производные классы.
4.1.2. Класс Object. Метод toString().
4.1.3. Управление доступом в производных классах.
4.1.4. Абстрактные классы и интерфейсы.
4.1.5. Реализация интерфейсов как альтернатива множественному наследованию.
4.1.6. Информация о типе на этапе исполнения. Оператор instanceof. Приведение типов.
4.1.7. Использование класса Class.
4.2. Пакеты.
4.2.1. Определение пакета.
4.2.2. Ограничение доступа.
4.2.3. Импортирование пакетов. Разрешение конфликтов имен.
4.3. Обработка исключений.
4.3.1. Основные принципы и типы исключительных ситуаций.
4.3.2. Перехват исключительных ситуаций. Операторы try, throw, throws, catch, finally.
4.3.3. Использование нескольких блоков catch и вложенный оператор try.
4.3.4. Не перехваченные исключительные ситуации.
4.3.5. Встроенные исключительные исключения Java. Классы Throwble и Exception.
4.3.6. Принципы создания и использования исключительных ситуаций.
4.4. Многопоточное программирование на Java. Параллелизм.
4.4.1. Модель потока в Java. Зависимость от реализации потока в операционной системе.
4.4.2. Свойства потока. Синхронизация. Передача сообщений.
4.4.3. Класс Thread и интерфейс Runnable.
4.4.4. Главный поток и способы создания потоков.
4.4.5. Управление потоками и приоритеты потоков.
4.4.6. Группы потоков.
4.4.7. Особенности написания многопоточных программ.
4.4.8. Использование синхронизирующих блоков и мониторов объектов. Синхронизированные методы объектов.
4.4.9. Взаимная блокировка.
4.4.10. Использование пула потоков.
5. Стандартная библиотека Java. (8 часов)
5.1. Организация пакетов стандартной библиотеки Java. Пакеты java и javax.
5.2. Обработка строк.
5.2.1. Использование и методы класса String
5.2.2. Использование StringBuffer.
5.3. Пакет java.lang.
5.3.1. Структура и назначение.
5.3.2. Использование класса System. Управление средой исполнения.
5.3.3. Использование классов Number, Double, Integer, Character и др.
5.3.4. Класс Math.
5.3.5. Класс Compiler и класс ClassLoader.
5.4. Пакет java.util
5.4.1. Общие принципы организации контейнеров и коллекций в Java.
5.4.2. Использование множеств и списков.
5.4.3. Использование отображений и ассоциативных контейнеров.
5.4.4. Итераторы и исключительные ситуации при работе с классами утилит.
5.4.5. Класс Properties.
5.4.6. Классы Date и Calendar.
5.5. Подсистема ввода вывода java.io
5.5.1. Общие концепции организации ввода – вывода в библиотеке Java.
5.5.2. Проблема платформенной независимости и локализации.
5.5.3. Основные классы потоков ввода-вывода в Java и методы работы с ними.
5.5.4. Использование потоков ввода вывода при работе с файлами. Эффективность.
5.5.5. Концепция Reader и Writer. Управление локализацией.
5.5.6. Использование Tokenizer.
5.6. Пакет java.net.
5.6.1. Основы работы с сетью в Internet. Адресация.
5.6.2. Сокеты. Жизненный цикл сокета.
5.6.3. Работа с протоколом HTTP и класс URL.
6. Графическая подсистема Java. JFC. (4 часа)
6.1. Классы AWT.
6.1.1. Основы работы с окнами. Component, Container, Panel, Window, Frame, Canvas.
6.1.2. Доставка и обработка событий в графической подсистеме. Механизм Listeners.
6.1.3. Создание программы с оконным интерфейсом. Рисование графических примитивов.
6.1.4. Использование управляющих элементов, диспетчеров компоновки и меню.
6.1.5. Связь классов AWT с оконным интерфейсом операционной системы.
6.2. Классы Swing.
6.2.1. Основные принципы графической системы Swing. Платформенная независимость, понятие Look&Feel
6.2.2. Написание графического интерфейса с использованием Swing компонентов.
6.2.3. Работа с таблицами, текстом, диалогами и HTML.
6.3. Апплеты.
6.3.1. Основы работы с апплетом.
6.3.2. Жизненный цикл апплета.
6.3.3. Дескриптор APPLET.
6.3.4. Передача параметров и загрузка апплета.
7. Модель безопасности Java. (2 часа)
7.1. Принципы организации и эволюция модели безопасности в Java.
7.2. SecurityManager. Инициализация и функции.
7.3. Права доступа. Управление и проверка прав доступа.
7.4. Исключительные ситуации.
7.5. Java Cryptography Extension
7.6. Алгоритмы шифрования. Ключи и цифровые подписи.
8. Программирование распределенных приложений. (6 часов)
8.1. Принципы построения распределенных приложений.
8.2. Проблемы передачи объектов и синхронизации в распределенных приложениях.
8.3. Реализация сохраняемости.
8.4. Three-tier технология.
8.4.1. Уровень интерфейса.
8.4.2. Уровень бизнес логики.
8.4.3. Уровень сохранения.
8.5. Remote Method Invocation
8.5.1. Основные принципы и протокол взаимодействия.
8.5.2. Интерфейс Remote и класс UnicastRemoteObject.
8.5.3. Класс Naming и rmiregistry сервис.
8.5.4. RMI сервер.
8.5.5. RMI клиент.
8.5.6. Модель безопасности, синхронизация и сборка мусора в распределенных RMI приложениях.
8.5.7. Механизм Activation.
8.6. Основы Java Enterprise технологии.
8.6.1. Интеграция с Web.
8.6.2. Java сервлеты.
8.6.3. Java Server Pages. Web контейнеры.
8.6.4. Механизм SessionBeans.
8.6.5. EJB технология. Bean контейнеры.
8.7. JDBC технология.
8.8. Java Micro Edition.
8.8.1. Java для мобильных телефонов. K-virtual machine.
8.8.2. CLDC, MIDP и iMode расширения Java 2 ME.
8.8.3. Технология JavaCard.
8.8.4. Примеры реальных приложений. Сложность разработки.
8.9. Java media framework, технологии обработки звука и голоса.
9. Технология коллективной разработки Java приложений. (2 часа)
9.1. Использование документирующих комментариев.
9.2. Соглашения при написании кода и именовании классов и объектов.
9.3. Build система Ant. Автоматизация сборки и размещения Java приложений.
9.4. Система log4j.
10. Основы архитектурного анализа и проектирования объектно-ориентированных систем
10.1. Правила дизайна классов и пакетов.
10.2. Паттерны проектирования.
10.3. Цикл разработки объектно-ориентированного приложения. RUP.
(Возможна замена этой лекции на лекцию по C#)