НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ФАКУЛЬТЕТ АВТОМАТИКИ И ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
«УТВЕРЖДАЮ»
Декан ИДО
д.т.н., В.И. Гужов
______________________
31 августа 2006 г.
РАБОЧАЯ ПРОГРАММА УЧЕБНОЙ ДИСЦИПЛИНЫ
««Объектно-ориентированное программирование»
Основная образовательная программа:
|
Направление 654600 – «Информатика и вычислительная техника»
(инженерная подготовка)
|
Специальность:
|
230105 – «Программное обеспечение вычислительной техники и автоматизированных систем»
|
Факультет:
|
институт дистанционного образования
(комбинированная форма обучения)
|
Курс:
|
IV
|
Семестр:
|
7
|
Лекции:
|
2 час. установ.+ 6 час. обзорных
|
Лабораторные работы:
|
8
|
Семинары (дистанционно)
|
12
|
Курсовая работа:
|
7 сем.
|
Самостоятельная работа:
|
112
|
Экзамен:
|
8 сем.
|
Всего по комбинированной форме обучения:
|
140
|
Новосибирск
2006 г.
Рабочая программа составлена на основании Государственного образовательного стандарта высшего профессионального образования (ГОСВПО) по направлению 654600 – «Информатика и вычислительная техника».
Регистрационный номер и дата утверждения ГОСВПО по направлению 654600 – «Информатика и вычислительная техника»: 224 тех/дс, 27 марта 2000 г.
Индекс дисциплины в ГОСВПО СД.03
Компонент –Федеральный компонент.
Цикл СП04 – Специальные дисциплины
Учебный план по направлению 654600 – «Информатика и вычислительная техника», специальность 230105 – «Программное обеспечение вычислительной техники и автоматизированных систем».
Принципы построения курса.
Дисциплина “ Объектно-ориентированное программирование” включена в учебный план для специальности 230105 (220400) в цикл "Специальные дисциплины" (федеральный компонент).
Дисциплина построена на основе дисциплины, включенной в учебный план для специальности 230105 (220400):
цикл "Специальные дисциплины"- СД.03 “Объектно-ориентированное программирование”
и составлена с учетом требований ГОСВПО1 по направлению 654600 "Информатика и вычислительная техника".
Выдержка из ГОСВПО:
СП04
|
Специальность 220400 Программное обеспечение вычислительной техники и автоматизированных систем
|
|
СД.03
|
Объектно-ориентированное программирование:
основные понятия и модели: объект, класс, данные, методы, доступ, наследование свойств; системы объектов и классов; проектирование объектно-ориентированных программ: методы и алгоритмы; объектно-ориентированные языки; классификация, архитектура, выразительные средства, технология применения; интерфейс: правила организации, методы и средства программирования; объектно-ориентированные системы: методы, языки и способы программирования.
|
140
|
Студенты дополнительно к объектно-ориентированному языку С++, изучаемому в дисциплине «Программирование на языках высокого уровня», изучают объектно-ориентированный язык Java, проводят сравнение языков, изучают особенности разных объектно-ориентированных технологий.
Дисциплина охватывает очень большой объем материала и может читаться с усилением акцентов на разных разделах, в зависимости от уровня подготовки студентов и их пожеланий.
Дисциплина расчитана на студентов, владеющих приемами программирования и знающих язык объектно-ориентированного программирования С++.
Все разделы дисциплины изучаются на основе сравнения объектно-ориентированных технологий: С++ и Java.
Возможно самостоятельное изучение дисциплины студентами по индивидуальному графику в случае достаточной подготовки студента и при согласовании графика с преподавателем.
Дисциплина имеет практическую часть - лабораторные работы (8 часов). На лабораторных работах студенты реализуют программы с использованием приемов объектно-ориентированного программирования на Java.
Дисциплина включает курсовую работу. Работа выполняется по индивидуальному заданию. Примерные варианты заданий приведены в программе.
Цели дисциплины
Номер цели
|
Содержание цели
|
Обучающийся будет знать:
|
1
|
принципы объектно-ориентированного программирования
|
2
|
особенности языка Java
|
3
|
cравнительную характеристику наиболее популярных объектно-ориентированных языков программирования C++ и Java
|
4
|
особенности информационных технологий, основанных на объектно-ориентированных языках (на примере Java)
|
5
|
какие программные средства используются для построения объектно-ориентированных программ
|
Обучающийся будет уметь:
|
6
|
создавать приложения на Java c использованием различных информационных Java-технологий
|
7
|
строить апплеты и вставлять их в HTML-страницы
|
8
|
использовать современные среды создания программного обеспечения
|
9
|
тестировать разработанное программное обеспечение
|
10
|
документировать разработанные программные продукты
|
Структура дисциплины
Содержание дисциплины и деятельность обучающегося
Цели модуля
|
Темы и особенности модулей
|
Объем в часах аудит. Занятий (примерный)
|
Деятельность обучающегося
|
1 - 3
|
Модуль 1.
Основные принципы объектно-ориентированного программирования. Введение в язык Java. Сравнительная характеристика С++ и Java
Объекты. Абстракция. Инкапсуляция. Интерфейсы. Сообщения. Модульность. Классификация. Наследование. Повторно используемый код. Иерархия классов. Объектно-ориентированные анализ и проектирование.
Java и World Wide Web. Развитие Java - технологий. Характеристики языка Java. Java и С++. Средства разработки Java приложений. Простейшие программы на Java.
|
Лекц. - 2 ч.
|
Слушает
Читает
Задает вопросы
Повторяет материал, изученный в дисциплине “Программирование на С++”
Проводит сравнение Java и С++ на практических примерах
|
2, 6
|
Модуль 2.
Основные элементы языка Java.
Идентификаторы и стандарт Unicode. Комментарии. Типы данных. Простые типы данных. Ссылочные типы. Объявление переменных. Выражения и операции, таблица приоритетов операций. Управляющие операторы.
|
Читает
Задает вопросы
Выполняет простые задания по составлению простых алгоритмов на основе Java - технологий
|
2, 4, 5, 6, 8 - 10
|
Модуль 3.
Основы Java: классы, интерфейсы, пакеты.
Объявление класса. Объявление объектов. Операция new. Методы и данные класса. Спецификаторы доступа. Определение и использование интерфейсов. Множественное наследование. Вложенные и внутренние классы.
Создание пакетов и использование их.
|
Читает
Задает вопросы
Выполняет задания из курса лекций по созданию программ и апплетов на основе Java – технологий
|
2, 4, 5, 6, 8 - 10
|
Модуль 4
Наследование.
Многоуровневая иерархия. Реализация наследования. Переопределение методов. Полиморфизм. Абстрактные классы. Множественное наследование. Обработка исключений.
|
Читает
Задает вопросы
Выполняет задания из курса лекций по созданию программ и апплетов на основе Java – технологий
|
2, 4, 5, 6 - 10
|
Модуль 5
Многопоточное программирование (многозадачность, мультизадачность).
Поточная модель Java. Создание потоков. Состояние потоков. Приоритеты. Синхронизация. Передача информации между потоками. Группы потоков. Потоки-демоны. Основы Applet.
|
Лекц. - 1 ч.
Лаб. раб – 2 ч.
|
Читает
Слушает
Задает вопросы
Выполняет задания из курса лекций по созданию программ и апплетов на основе Java – технологий
|
2, 4, 5, 6 - 10
|
Модуль 6
Библиотека Java
Основные классы – Object и Class. Обработка строк. Классы - оболочки простых типов. Коллекции в Java. Сервисные классы. Рефлексия. Организация ввода/вывода. Сериализация.
|
Лекц. - 1 ч.
Лаб. раб – 2 ч.
|
Читает
Слушает
Задает вопросы
Выполняет задания из курса лекций по созданию программ и апплетов на основе Java – технологий
|
2, 4, 5, 6 - 10
|
Модуль 7
Обработка событий.
Модели обработки событий. Классы событий. Интерфейсы прослушивания событий. Использование модели делегирования событий. Классы - адаптеры. Анонимные внутренние классы.
|
Лекц. - 1 ч.
Лаб. раб – 2 ч.
|
Читает
Слушает
Задает вопросы
Выполнение лаб. раб. 1, 2, 3
|
2, 4, 5, 6 - 10
|
Модуль 8
AWT. Swing. Использование элементов графического интерфейса.
Классы AWT и Swing. Создание оконных приложений. Создание апплет-приложений. Отображение информации в окне. Работа с графикой. Элементы управления. Менеджеры компоновки. Меню. Диалоговые окна. Работа с изображениями.
|
Лекц. - 1 ч.
Лаб. раб – 2 ч.
|
Читает
Слушает
Задает вопросы
Выполнение лаб. раб. 1, 2, 3
|
2, 4, 5, 6 - 10
|
Модуль 9
Новые информационные технологии в Java.
Работа в сети. Удаленный доступ с использованием RMI. Система SWING. Классы JFC. Работа с базами данных. Сервлеты. JSP - технологии. JavaBeans. Enterprise JavaBeans. Java и CORBA. JINI – технологии.
|
Лекц. – 2 ч.
|
Читает
Слушает
Задает вопросы
Подготовка к выполнению курсовой работы
|
4, 5
|
Модуль 10
Особенности новых информационных технологий и место Java – технологий.
Модели, методы и средства их реализации. Объектно-ориентированные среды.
Информационные технологии в распределенных системах. Технологии разработки программного обеспечения.
|
Лекц. – 2 ч.
|
Читает
Слушает
Задает вопросы
Выполняет курсовую работу по индивидуальному заданию
|
Итого:
|
Лекц. - 8 ч.
Лаб. раб – 8 ч.
|
|
-
Темы лабораторных занятий.
№ п/п
|
Название
|
Объем в часах
|
1
|
Основы программирования на Java, приложения Java
Создание простейших апплетов
|
2
|
2
|
Рисование в окне, обработка событий мыши и клавиатуры
|
2
|
3
|
Компоненты и использование элементов управления
Контейнеры компонентов GUI и менеджеры размещения
|
2
|
4
|
Многопотоковые приложения
|
2
|
Курсовые работы
Курсовая работа выполняется по индивидуальной теме. В зависимости от уровня подготовки студента, он может выбрать сам одну из предлагаемых ниже тем.
Примерные темы курсовых работ.
I WEB-технологии
Установить WEB-сервер с поддержкой Java (Tomcat, Apache+Resin…).
Сконфигурировать его.
Установить MySQL.
Установить драйверы JDBC для MySQL.
-
Задание № 1.
Создать сервлеты, позволяющие управлять созданием базы данных.
Создать базу данных с информацией о студентах (3-4 таблицы). Создать сервлеты, позволяющие читать и писать данные в базу.
Обеспечить систему авторизации доступа к базе данных.
-
Задание № 2.
Создать JSP, позволяющие управлять созданием базы данных.
Создать базу данных с информацией о студентах (3-4 таблицы). Создать JSP, позволяющие читать и писать данные в базу.
II Работа с базами данных
Установить MySQL.
Установить драйверы JDBC для MySQL.
1. Задание № 3
Создать клиентское приложение для администрирования MySQL
Создать базу данных с информацией о студентах (3-4 таблицы)
Читать и писать данные в базу данных
2. Задание № 4
Создать базу данных с информацией о студентах (3-4 таблицы)
Создать клиентское приложение для работы с базой данных
Читать и писать данные в базу данных по заранее заготовленным запросам
III Использование компонентного программирования
Установить WEB-сервер с поддержкой Java (Tomcat, Apache+Resin…).
Сконфигурировать его.
Установить MySQL.
Установить драйверы JDBC для MySQL.
Задание № 5.
Создать приложение JSP-JavaBeans, позволяющие управлять созданием базы данных, вводом в нее информации и чтением из нее информации.
-
Задание № 6.
Создать приложение JSP-JavaBeans, позволяющие управлять созданием базы данных, выполнением произвольных запросов.
IV Дополнительные темы
Реализация многопоточности. Создать апплет (или приложение), в окне которого выводится ряд подготовленных изображений (мультипликация). Последовательное изменение выводимых изображений должно происходит только тогда, когда курсор мыши находится в окне апплета (или приложения). При выходе курсора за границы окна вывод изображения приостанавливается.
Передача данных с использованием сокетов. Создать приложение-сервер и приложение-клиент, которые обмениваются данными с использованием сокетов. На компьютере, где работает приложение-сервер, должна находится база данных (обычный двоичный файл), содержащая информацию о списке пользователей (регистрационный номер, имя, пароль, уровень доступа и др.).
Приложение-клиент, запущенное на другом компьютере, запрашивает у пользователя его регистрационный номер или имя (предусмотреть возможность выбора режима ввода) и пароль и делает запрос приложению-серверу о выдаче полной информации об этом пользователе.
Если в базе данных содержится информация о таком пользователе и пароль введен верно, то приложение-сервер пересылает всю информацию о пользователе приложению-клиенту, иначе посылает предупреждение об отсутствии пользователя в списке или о неверном вводе пароля.
После получения информации от приложения-сервера приложение-клиент выводит ее в диалоговом окне..
Получение данных с использованием URL. Создать приложение, которое читает файл, находящийся на другом компьютере, с использование URL-адреса этого файла. Файл является базой данных (обычный двоичный файл), содержащей информацию о списке пользователей (регистрационный номер, имя, пароль, уровень доступа и др.).
Приложение запрашивает у пользователя его регистрационный номер или имя (предусмотреть возможность выбора режима ввода) и пароль. Затем с помощью URL-адреса этого файла открывает входной поток, связанный с этим файлом, и осуществляет поиск пользователя в базе данных. Если в базе данных содержится информация о таком пользователе и пароль введен верно, то приложение отображает в диалоговом окне всю информацию о пользователе, иначе выдает предупреждение об отсутствии пользователя в списке или о неверном вводе пароля..
Взаимодействие апплетов при помощи потока данными между ними. В одну html-страницу включить два апплета. Первый апплет действует в качестве пассивного “слушателя”, другой - в качестве “разговаривающего” апплета.
Второй апплет может запросить у “слушателя” выходной поток PipedOutputStream, записать туда данные и потребовать от него прочитать данные из потока.
Первый поток берет данные из потока PipedInputStream, интерпретирует их как текст и печатает в своей текстовой области.
Второй апплет содержит область ввода (текстовую область), кнопки “Send” и “HangUp”. При нажатии пользователем на кнопку “Send” введенный им текст пересылается первому апплету, а при нажатии на кнопку “HangUp” разрывается канал связи между апплетами, основанный на входном и выходном потоке..
Апплет двойного назначения, представляющий кафедру ВТ. Создать апплет двойного назначения, в окно которого введено несколько панелей, которые поочередно выходят на первый план. Первая панель - заглавная страница кафедры, несколько следующих - рекламная информация о кафедре. Последующие панели содержат информацию о преподавателях кафедры. После поочередного вывода всех панелей процесс повторяется вновь.
Апплет-приложение, позволяющий построить кроссворд. Создать апплет, в окно которого в режиме составления можно задать структуру кроссворда, затем пограмма выполнит заполнение словами его и позволит в режиме отгадывания заполнить его. Апплет должен использовать базу данных.
Апплет-приложение, использующий базу данных. Создать апплет, позволяющий фиксировать всех, обратившихся к данной странице в базе данных, а затем при повторном обращении выводить приветствие в оригинальной форме с активным взаимодействием.
Апплет-приложение, использующий графические эффекты. Создать апплет, позволяющий реализовать различные графические эффекты ( каждый эффект - отдельный апплет ), например, колебания воды, грозу, огонь, фонарик, линзу, жалюзи и т. п..
Апплет-приложение графический редактор векторного типа.
Апплет-приложение "Игра в пятнашки".
Разработать задачи для проведения лабораторной или самостоятельной работы по теме "RMI".
Разработать задачи для проведения лабораторной или самостоятельной работы по теме "Сервлеты".
Разработать задачи для проведения лабораторной или самостоятельной работы по теме "JSP".
Разработать задачи для проведения лабораторной или самостоятельной работы по теме "CORBA и JAVA".
Разработать апплет-приложение "Калькулятор".
Администрируемая гостевая книга по Java- технологиям.
Интерфейс: произвольный пользователь заходит на страницу гостевой книги, на которой он сможет ввести произвольное сообщение, а также просмотреть сообщения оставленные другими пользователями. Должны быть выполнены такие администраторские функции как включение и исключение сообщения в гостевой книге, запрет и управление запретом на включение сообщения, содержащее определяемые администатором выражения, запрет и управление запретом на включение сообщения с заданных администатором хостов.
Удаленный web-counter
Необходимо реализовать службу наподобие RAMBLER:TOP100. Интерфейс: пользователь регистрируется , затем получает произвольный идентификатор. После этого он определенным образом связывает свою страницу с сервером- носителем web-couter-а. После чего эта служба должна вести учет посетителей страницы пользователя. Также необходимо осуществить администраторские функции по включению и исключению произвольного пользователя администратором.
Система поиска для web-сервера
В силу того что поисковые системы общего назначения(такие как Altavista) не позволяют выделить ресурсы отдельного сервера и производят модификацию своих баз данных медленно, возникает необходимость создать свою службу поиска. Поиск производится только для документов, хранящихся на сервере-носителе службы. Должен поддерживаться поиск по сложным выражениям, включающим логические операторы и *. Для облегчения задачи можно использовать внешние команды, например, grep.
Автоматическая регистрация страниц на поисковых системах
После создания WWW страницы ее требуется зарегестрировать на различных поисковых серверах, чтобы другие пользователи сети могли ее найти. Однако количество поисковых серверов велико - процесс регистрации на них занимает много времени. Требуется написать программу, которая осуществляет такую регистрацию автоматически. В качестве вспомогательных средств возможно использования программ типа wget или lynx, чтобы не писать код для работы с HTTP протоколом.
Страница приема заданий
Содержит таблицу со списком студентов и заданий. Студенты могут только посмотреть текущее состояние дел. Преподаватели, после ввода пароля, могут поставить или убрать галочку, означающую факт сдачи задания. Должна быть предусмотрена возможность сортировки списка студентов по имени или по количеству сданных заданий.
Доска объявлений
Содержание пояснительной записки
Курсовая работа должна быть оформлена в виде пояснительной записки. Записка должен содержать документацию на разработанные программы, включая техническое задание. Пояснительная записка должна быть выполнена в соответствии с ГОСТом (ГОСТ 19.404-79) и содержать следующие разделы.
Техническое задание (ГОСТ 19.201-78).
Назначение и область применения программного продукта.
Выбор и обоснование выбора инструментальных средств.
Теоретический материал – особенности программирования в данной области. Теоретический материал должен быть переработан применительно к содержанию работы.
Структурное описание разработки. Описание форматов данных. Описание используемых структур данных (классов), форматов данных, сопровождаемое необходимыми графическими иллюстрациями (рисунками). Содержательное описание типов данных, структур данных. Иерархия классов.
Описание программы (ГОСТ 19.402-78).
Описание алгоритмов и методов решения. Функциональное описание. Содержательное описание основных алгоритмов, их особенностей, интерфейсов функций, фрагментов нетривиальных алгоритмов.
Описание пользовательского интерфейса.
Описание работы программы на контрольных примерах (например, на большом текстовом файле), временные характеристики программы. Выводы. Ограничения (по памяти, по времени), ошибки, особенности проектирования.
Руководство пользователя (ГОСТ 19.505-79)..
Руководство программиста (ГОСТ 19.504-79)..
Заключение.
Список используемой литературы.
Тексты программных модулей (приложение).
Проведение экзамена
Экзамен проводится в терминальном классе. Каждый студент получает доступ к компьютеру с установленным программным обеспечением.
При сдаче экзамена разрешается пользоваться подготовленными самостоятельно студентами материалами (“шпаргалками”), а также листингами программ, разработанных в процессе изучения дисциплины на практических, самостоятельных и лабораторных занятиях. Использование книг и учебников не разрешается.
Билет содержит два вопроса и одну задачу. Задача должна быть реализована на компьютере и доведена до рабочего состояния.
Примеры экзаменационных вопросов.
AWT. Основные классы: Component, Container, Panel, Frame, Window, Canvas. Примеры.
Иерархия исключений в Java.
Многопоточное программирование. Понятие потока. Создание потоков. Примеры.
Класс StringBuffer. Примеры использования.
Анонимные внутренние классы в Java.
Класс Оbject. Копирование объектов. Проверка объектов на равенство.
Интерфейсы в Java. Множественное наследование.
Обработка исключений в Java.
Примеры экзаменационных задач.
Создать программу, иллюстрирующую разделение времени процессора между потоками.
Создать приложение, использующее два потока ( thread ) , причем в первом потоке обеспечивается ввод данных, а во втором – вывод введенных данных.
Литература.
Морган М. Java2. Руководство разработчика. : Пер. с англ.:Уч. Пособие – М.: “Вильямс”, 2000. – 720 с.:ил.
Ноутон П., Шилдт Г. Java 2 в подлиннике.: Пер. с англ. – СПб.:БХВ-Петербург, 2000. – 1072 с.: ил.
Еккель Б. Философия Java – Спб: Питер, 2001.- 880с.:ил.
Смирнов Н. И. JAVA 2: Учебное пособие. – М.:”Три Л”, 2000. – 320 с.
Смирнов Н. И. JAVA 2 Enterprise. Основы практической разработки распределенных корпоративных приложений. – М.: КУДИЦ-ОБРАЗ, 2002. – 240 с.
Дейтел Х.М., Дейтел П.Д., Сантри С. И. Технология программирования на Java 2. Кн. 1. Графика, JavaBeans, интерфейс пользователя. – Бином, 650 стр.
ДЕЙТЕЛ Х.М., ДЕЙТЕЛ П.ДЖ., САНТРИ С.И.
Технологии программирования на Java 2. Книга 2. Распределенные приложения. – Бином, 464 стр.
ДЕЙТЕЛ Х.М., ДЕЙТЕЛ П.ДЖ., САНТРИ С.И.
Технологии программирования на Java 2. Книга 3. Корпоративные системы, сервлеты, JSP, Web-сервисы. Бином, 672 стр.
Вязовик Н.А. Программирование на Java. М., 2003, 592 стр.
Дарвин Я.Ф. Java. Сборник рецептов для профессионалов. Питер, 2002Ю 792 стр.
-
Электронные ссылки
http://ru.sun.com/java/ - русский сайт Sun
http://ru.sun.com/java/books/online/index.html - Учебник по Java (Фроловы)
http://ru.sun.com/java/start/examples/examples.html - примеры программ на Java
http://ru.sun.com/java/books/index.html - -литература по Java
http://www.machaon.ru/digest/java/ - сайт с большим числом ссылок на источники Java
http://cruxastata.euro.ru/ - -Пособие по Java на русском языке
http://javatutorial.chat.ru/ - -сервлеты и JDBC по-русски
http://java-scripts.chat.ru/ -Книга по Java
http://www.mantrotech.com/technology/java/index_tutorial.asp - english
http://dmivic.chat.ru/JDBC/introTOC.doc.html - -Руководство JDBC
http://www.uni-vologda.ac.ru/java/jls/index.html -Спецификация языка Java на русском языке
http://npksv.ru/soft/java/ - Учебник “Программирование на языке JAVA” (оглавление)
http://netlab.e2k.ru/archive/71/51013/
http://neuch.net.ru/materials/java.shtml - Учебник по Java
-
http://www.internet-technologies.ru/books/page_1/book_11.html?download
|