План занятий по курсу «Разработка программ на Java» (курс по выбору «Язык программирования Java»)

Вид материалаСеминар

Содержание


Основы синтаксиса
Свойства классов и методов в Java. Правила именования, комментарии
Массивы и объекты; комментарии и JavaDoc
Язык UML: диаграммы классов. Некоторые приемы разбиения класса на методы
Создание своих классов
ООП в Java. Инкапсуляция, абстракция, наследование, агрегация
UML, ООП в Java (часть 1)
Пример 2: объекты данных. Работа с простыми данными (числа, даты, строки)
Пример 2: исключения, массивы, сериализация, сортировка
Утилитные классы,коллекции
Вложенные классы. Коллекции. (на примере 2)
Exceptions, отладка
ОО проектирование. Пример 2: реорганизация классов
Ввод/вывод. Проектирование ввода/вывода
Многопоточное программирование в Java
Многопоточное программирование
Xml, dom&sax, jaxp
JDOM. Reflection
Использование внешнего кода (Java, Си, etc.)
Основы GUI и обработки событий в Java
...
Полное содержание
Подобный материал:
План занятий по курсу «Разработка программ на 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) Номер практического задания, выдаваемого в это время (и прилагающегося к теме лекции-семинара).