План занятий по курсу «Разработка программ на Java» (курс по выбору «Язык программирования Java»)
Вид материала | Семинар |
- Рабочая программа учебной дисциплины (модуля) Язык программирования Java, 90.39kb.
- Лекция Язык программирования Java и технологии Java, 404.33kb.
- Учебная программа (Syllabus) Дисциплина: «java технологии программирования» Специальность, 266.56kb.
- Петербургский Государственный Университет Математико-механический факультет Кафедра, 358.16kb.
- Рабочая программа учебной дисциплины (модуля) Веб-приложения на Java, 85.65kb.
- Языки программирования java и java-технологии, 88.92kb.
- Java технологія. Основні риси та перспективи застосування, 153.41kb.
- Спецкурс Java-технологии и практики создания приложений в многоуровневой архитектуре., 81.97kb.
- Мирончик Игорь Янович ClipperIgor@gmail com (496)573-34-22 курс лекций, 29.1kb.
- Мирончик Игорь Янович ClipperIgor@gmail com (496)573-34-22 курс лекций, 28.92kb.
План занятий по курсу «Разработка программ на Java» (курс по выбору «Язык программирования Java»)
Лекционно-семинарские занятия (и короткие задания к ним) делятся на 2 потока. Поток base – для студентов с нулевым начальным уровнем знания Java (лектор – Е. Коротков). Поток intensive – для студентов, знающих Java и/или очень хорошо знающих ООП, занятия включают темы по проектированию (лектор – А. Евдокимов).
Пара1) | Поток base | Поток intensive | Лаба2) | ||||
| Название | Содержание | Зад.3) | Название | Содержание | Зад.3) | |
1 | ^ Основы синтаксиса | Стартовая точка программы(метод main). Идентификаторы. Константы. Примитивные типы данных и операции. Выражения и приоритет операций в выражениях. Операторы: блок, присваивание, условие, цикл, управление циклом (break, continue) и метки. Область видимости переменных в блоке и цикле. Создание и запуск класса (без IDE). Создание проекта, пакета и импортирование созданного класса. Изменение кода и запуск(в IDE) | | ^ Свойства классов и методов в Java. Правила именования, комментарии | Пакеты и правила их именования. Постановка задачи для примера 1 (см. прилагаемый файл) – единообразный вывод текста (консольный, разный графический) на случай, например, если способ или формат вывода лога нужно будет сменить в процессе разработки. Класс StringShower: комментарии, JavaDoc-теги; правила именования классов, полей и методов; смысл модификаторов final (поля) и static; абстрактные и неабстрактные методы и перегрузка имен методов. ConsoleShower: модификаторы доступа, особенности конструкторов, реализация и переопределение методов | | |
2 | ^ Массивы и объекты; комментарии и JavaDoc | Массивы, многомерные массивы, псевдополе length. (обычные и не симметричные). Создание и использование объектов (классы-оболочки(Integer,Double,...); String). Пприведение типов. Динамическое выделение памяти. Сбор мусора после исчезновения или обnullения всех ссылок на объект/массив. Комментарии, JavaDoc-теги. Использование документации (Java docs,исходники). Программа с несимметричным массивом: заполнение массива, вывод чисел массива. Программа, использующая классы из библиотек Java | 1, 2 | ^ Язык UML: диаграммы классов. Некоторые приемы разбиения класса на методы | Reverse engineering кода (в Rational Rose). Диаграмма классов из примера 1. Основные обозначения диаграммы: классы, атрибуты (поля), операции (методы); обобщение (наследование), одно- и двунаправленная ассоциация, агрегация. Класс GUIShower: доступ к полю (getter/setter-методы, создание "при необходимости", final-методы, шаблон Factory method); проявления принципа разделения кода на универсальную и специфическую части. | 1, 2 | |
3 | ^ Создание своих классов | Простейшие понятия ООП: классы, обьекты, свойства (поля) и действия(методы). Правила именования. Нормальные методы и поля (обьектов). Модификаторы доступа. Конструкторы. Модификаторы final, static. Статические методы и поля класса. Сокрытие полей и методов (инакапсуляция). Геттеры и сеттеры. | | ^ ООП в Java. Инкапсуляция, абстракция, наследование, агрегация | Ключевые слова this и super. Класс как хранитель данных (аналог структуры). Инкапсуляция. Модификатор final (для методов). Сериализация и модификатор transient. Логика программы в getter'ах или setter'ах. Интерфейсы. Одиночное и множественное наследование. Замена множественного наследования агрегацией | | |
4 | ^ UML, ООП в Java (часть 1) | UML, диаграммы классов. Reverse engineering кода. Наследование, агрегация, ассоциация, зависимость. Переопределение методов, полиморфизм. Динамическое связывание. Ключевые слова Java, связанные с наследованием (super, final, protected). | 3 | ^ Пример 2: объекты данных. Работа с простыми данными (числа, даты, строки) | Методы класса Object и интерфейса Comparable; особенности переопределения этих методов (на примере классов из примера 2). Операции с числами и датой/временем. Форматирование чисел и дат (java.text.*Format); вывод даты в примере 2. Работа со строками, регулярные выражения. Перечислимые типы (аналог enum из Java 5, хотя сам enum не рассматривается) | | |
5 | ООП в Java (часть 2) | Object – глобальный суперкласс Приведение типов для классов Абстракция в ООП и её цели, реализация в Java Абстрактные классы, их строение и свойства Интерфейсы и их применение в разных контекстах Замена множественного наследования | | ^ Пример 2: исключения, массивы, сериализация, сортировка | [Завершение предыдущей лекции: регулярные выражения, "перечислимые типы"] Переработка класса Teacher в примере 2 на работу с перечислимым типом Position вместо int. Статические вложенные классы. Исключительные ситуации и их примеры в примере 2. Постановка задачи для классов *Test в примере 2. Переработки в классе PersonArrayWriteTest, связанные с изменением начальной длины массива людей; System.arraycopy(). Сериализация/десериализация. Переработка сортировки в классе PersonArrayReadTest через реализацию этим классом интерфейса Comparator. | 3 | |
6 | ^ Утилитные классы,коллекции | Утилитные классы и применение: java.util.regex, коллекции List, Set, Map, их реализации | | ^ Вложенные классы. Коллекции. (на примере 2) | Виды вложенных (nested) классов: статические, нестатические классы-члены, локальные, анонимные. Реализация Comparator вместо PersonArrayReadTest: а) в статическом вложенном классе; б) в нестатическом классе-члене (с обращением к полям-настройкам PersonArrayReadTest); в) в локальном классе, наследующемся от класса-члена; г) в анонимном классе. Интерфейсы и реализации коллекций из пакета java.util: Collection, Set, List, Map; Iterator vs. Collection.toArray() Переработка примера 2 на хранение Map вместо массива (в классах PersonMap*Test). | | 1 |
7 | ^ Exceptions, отладка | Необходимость обработки ошибок Исключительная ситуация, как объект класса. Классификация искл. ситуаций Основы обработки искл. ситуаций Необходимость отладки приложений и способы | | ^ ОО проектирование. Пример 2: реорганизация классов | Проблемы классов Person*Test примера 2. Понятие о качестве объектного дизайна. Проблемы повторного использования только через наследование (быстрый рост числа классов при добавлении функции или варианта реализации функции). Разделение функций по разным иерархиям интерфейсов/классов [для уменьшения зацепления/связанности (coupling) и увеличения связности/целостности (cohesion). См. также комментарии в приложенном файле]. Связи между иерархиями наследования, зависимость только от интерфейсов; собенности иерархии Model; шаблон Builder. Методы main как тестовые методы. Проектирование (в виде UML) и генерация (forward engineering) классов/интерфейсов для создания, хранения и ввода/вывода объектов-"людей" (вместо классов примера 2). | 4 | 1 |
8 | IO,Сериализация | Понятие о потоках данных Структура библиотеки java.io. Чтение и запись в потоки Виды потоков Смешивание потоков(Wrapping) Сериализация объектов Работа с файлами | 4 | ^ Ввод/вывод. Проектирование ввода/вывода | Структура потоков библиотеки java.io: InputStream и Reader, OutputStream и Writer; ObjectInputStream и ObjectOutputStream (+ недостатки сериализации, serialVersionUID); BufferedReader и BufferedWriter. Вложенность потоков друг в друга (wrapping). Ввод-вывод без потоков - буферы пакета java.nio. Рассмотрение части 1 примера 3 - библиотеки для единообразного ввода/вывода (чтения/записи; приема/передачи) - ru.ipccenter.examples.io.*. Синхронный ввод/вывод (методы read*/write* интерфейса IO) в классах ObjectStreamIO и StringIO (использующих сериализацию и буферизованный ввод/вывод строк, соответственно) | | 1 |
9 | ^ Многопоточное программирование в Java | Понятие о потоках выполнения Прерывание потока и его состояние Синхронизация потоков | 5 | ^ Многопоточное программирование | Потребность в многопоточности. Класс Thread, освобождение процессора, прерывание потока, состояние потока. Типичные варианты написания метода run(); пример в классе AbstractIO примера 3. Параллельный доступ к полям и методам из различных потоков, синхронизация. Издержки многопоточности. Методы wait(), notify(), notifyAll() класса Object. | 5 | 1 |
10 | ^ XML, DOM&SAX, JAXP | см. intensive | | XML, DOM&SAX, JAXP | DOM и SAX парсеры: структура и применение, различия существующих реализаций парсеров. JAXP - Java API for XML processing (унифицированная работа с парсерами (DOM,SAX) от разных производителей) | | 1 |
11 | ^ JDOM. Reflection | API: JDOM, Reflection. Написание программы с использованием библиотеки JDOM для парсинга настроечного XML-файла и вызова метода указанного в этом файле класса | | ^ Использование внешнего кода (Java, Си, etc.) | Использование внешнего Java-кода: отражение полей и методов (java.lang.reflect), отражение свойств, событий и т.д. (java.beans). Запуск и контроль произвольных внешних приложений (Process). Java Native Interface для связывания с С-кодом | | 1 |
12 | ^ Основы GUI и обработки событий в Java | Введение в AWT и Swing Простейшие понятия графического интерфейса в Java Возможности предоставляемые фреймами и панелями Основы обработки событий Реализация обработки событий | | ^ Модель обработки событий. Рисование. Графические компоненты Swing | События и модель их обработки в Java. GUI-библиотеки в Java и их возможности. Понятие компонента и его отрисовка. Методы и свойства классов Component, Container, JComponent. GUI-компоненты (AWT и) Swing. Семинар: создание незакрываемого swing-окна, размещения на нем текстового поля | 6 | 1 |
13 | ^ Компоненты GUI в Java | Управление компоновкой в Swing Компоненты графического интерфейса в Swing Диалоги и диалоговые окна в Swing Обработка событий окна | 6 | ^ События и компоновка компонентов. Шаблоны в GUI | События графических компонентов, семинар по обработке события. Менеджеры компоновки (размещения) компонентов. Шаблоны проектирования в GUI-библиотеках: Observer, Composite, Chain of Responsibility, Bridge, Façade, Decorator | | |
14 | ^ Шаблон MVC. "Сложные" компоненты Swing | Шаблон Model-View-Controller: отделение данных, UI и логики; варианты шаблона. Другие шаблоны для программ с GUI: Builder, Command. Компоненты управления в Swing: AbstractButton, Action. Компоненты выбора в Swing: JList, JTable, JTree; renderers/editors. | | ^ Шаблон MVC. "Сложные" компоненты Swing | Шаблон Model-View-Controller: отделение данных, UI и логики; варианты шаблона. Другие шаблоны для программ с GUI: Builder, Command. Компоненты управления в Swing: AbstractButton, Action. Компоненты выбора в Swing: JList, JTable, JTree; renderers/editors. Семинар по работе с JTable. | | |
15 | ^ Работа с сетью в Java | см. intensive | | Работа с сетью в Java | Высокоуровневые URL-соединения Понятие об IP соединениях двух видов Сокеты, как сетевые потоки данных Клиенты и серверы | | 2 |
16 | ^ Безопасность. Производительность. Ресурсы | см. intensive | | Безопасность. Производительность. Ресурсы | Безопасность и написание безопасного кода в Jаva, SecurityManager. Вопросы оптимизации кода и производительности в Java. | | 2 |
17 | ^ Основы SQL | Запросы на выборку(select) и изменение (insert, update, delete) к одной таблице | | ^ Основы SQL | Соединение SQL-клиента с Oracle. Простейшие запросы на выборку данных. Реляционная таблица, ограничения (primary key, foreign key, unique, not null). Создание последовательности (sequence) для генерации первичных ключей. Наполнение таблицы (insert). Выборка с фильтрацией (where) и сортировкой (order by). Изменение и удаление данных (update, delete). Агрегирование и групповые функции, group by, having. Создание таблицы, основные типы данных. | | 2 |
18 | ^ Основы SQL часть 2, Понятие о JDBC | Запросы к нескольким таблицам, разновидности join. Групповые функции count, max, avg,..., ключевое слово group by. Введение в JDBC (driver, connection, statement, query, metadata). Использование JDBCTest для получения исходного кода работы с JDBC. | | ^ Паттерны проектирования | Паттерны (шаблоны) проектирования программ. Паттерны GoF на примерах: * Порождающие паттерны: abstract factory, builder, factory, singleton; * Структурные паттерны: adapter, bridge, decorator, facade, proxy; * Паттерны поведения: iterator, observer | | 2 |
19 | ^ Работа с JDBC | Подключение драйвера Инициализация соединения Запросы на выборку/изменение (executeQuery, executeUpdate) ResultSet и работа с выборкой Подготовленные запросы (PreparedStatement) Метаданные (данные о таблице) | | JDBC | Работа с программой JDBCTest. Регистрация драйвера, создание соединения и инструкции, выполнение запросов на выборку и изменение. Обработка результатов запросов на выборку. Работа с метаданными. | | 2 |
1) Примерный номер пары, на которой проводится данное лекционно-семинарское занятие. Пара №9 – начало октября, №16 – начало ноября
2) Номер лабораторной работы, выполняемой и принимаемой на практических занятиях в данное время. Весь декабрь – выполенение лаб 2-3.
3) Номер практического задания, выдаваемого в это время (и прилагающегося к теме лекции-семинара).