Министерство образования и науки Российской Федерации
Филиал федерального государственного бюджетного образовательного учреждения
высшего профессионального образования
«Астраханский государственный университет»
в г. Знаменске Астраханской области
«УТВЕРЖДАЮ»
Директор филиала ФГБОУ ВПО АГУ
в г. Знаменске Астраханской области
__________________
Дисциплина блока: общепрофессиональные дисциплины
Компонент: федеральный
Кафедра математики и информатики
Технология программирования
Рабочая программа
для специальности
230201.65 Информационные системы и технологии (Знаменск)
3 курс
Автор - составитель:
e-mail: *****@***ru
Технология программирования
Рабочая программа
Автор составитель:
ст. преподаватель
К. т.н.
Ответственный редактор:
Зав. кафедрой математики и информатики, д. т.н.
профессор,
Рабочая учебная программа обсуждена
на заседании кафедры математики и информатики
Протокол г.
РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА ДИСЦИПЛИНЫ
Цели изучения дисциплины
Программа дисциплины “Технология программирования” предусматривает:
- изучение студентами современного подхода к программированию на основе объектно-ориентированной технологии;
- приобретение студентами навыков написания программ на языке Java.
Объектно-ориентированный язык обладает свойствами абстракции, инкапсуляции, наследования и полиморфизма.
1. Инкапсуляция с сокрытием данных - способность отличать внутреннее состояние объекта и поведение от его внешнего состояния и поведения
2. Абстракция - расширяемость типов - способность добавлять типы, определяемые пользователем для того, чтобы дополнить ими встроенные типы. Один из принципов ООП заключается в том, чтобы типы, определяемые пользователем, должны обладать теми же привилегиями, что и встроенные типы.
3. Наследование - способность создавать новые типы, повторно используя, описание существующих типов.
4. Полиморфизм с динамическим (поздним) связыванием - способность объектов быть ответственными за интерпретацию вызова функции
Принципы объектно-ориентированного подхода:
1. Действие в объектно-ориентированном программировании инициируется посредством передачи сообщений объекту. Сообщение содержит запрос на осуществление действия. В качестве реакции на сообщение получатель запустит некоторый метод, чтобы удовлетворить принятый запрос.
2. Все объекты являются экземплярами, классов. Все объекты одного класса используют одни и те же методы в ответ на одинаковые сообщения.
3. Принцип наследования. Классы могут быть организованы в иерархическую структуру с наследованием свойств. Дочерний класс наследует атрибуты родительского класса.
4. Принцип полиморфизма. Объекты реагируют на одно и тоже сообщение строго специфичным для них образом.
ТРЕБОВАНИЯ К УРОВНЮ ОСВОЕНИЯ ПРОГРАММЫ И ФОРМЫ ТЕКУЩЕГО ПРОМЕЖУТОЧНОГО И ИТОГОВОГО КОНТРОЛЯ
В результате изучения дисциплины студенты должны:
знать:
теоретические основы машинной логики и архитектуры аппаратно-вычислительных комплексов;
общие принципы, методологии и средства проектирования архитектуры и структуры, тестирования и отладки, документирования и сопровождения программного обеспечения
теоретические основы проектирования и программирования ПО
уметь:
¾ использовать полученные знания для разработки, ведения документации и разработки стратегии сопровождения и внедрения программного продукта;
¾ проектировать логические схемы простейшего аппаратного обеспечение,
¾ программировать на языках низкого и высокого уровня.
Текущий контроль знаний студентов осуществляется в форме рейтинговых контрольных работ и тестов.
Формой итогового контроля является зачет, который проводится в виде тестирования.
РАСПРЕДЕЛЕНИЕ ЧАСОВ ПО ТЕМАМ И ВИДАМ УЧЕБНЫХ ЗАНЯТИЙ ДЛЯ СТУДЕНТОВ ОЧНОЙ ФОРМЫ ОБУЧЕНИЯ
Наименование тем | Количество аудиторных часов |
| |||
Всего | в том числе по видам учебных занятий | ||||
Лек. | Сем. | Лаб. | сам. | ||
1 | 2 | 3 | 4 | 5 | 6 |
1. Основные этапы решения задач на ЭВМ | 2 | 2 | 8 | ||
2. Диалоговые программы | 6 | 2 | 2 | 8 | |
3. Жизненный цикл программы | 6 | 2 | 2 | 8 | |
4.Наследование | 6 | 2 | 2 | 8 | |
5.Обработка исключений | 6 | 2 | 2 | 8 | |
6. Стандартные типы данных | 6 | 2 | 1 | 12 | |
7. Представление основных структур программирования | 10 | 2 | 4 | 12 | |
8. Списки | 12 | 3 | 4 | 12 | |
Итого аудиторных часов | 34 | 17 | 17 | 78 | |
Всего часов | 112 | ||||
СОДЕРЖАНИЕ КУРСА
Тема 1. Основные этапы решения задач на ЭВМ.
Классы и объекты. Эволюция объектной модели. Составные части объектного подхода. Применение объектной модели. Природа объекта. Отношения между объектами. Природа классов. Отношения между классами. Взаимосвязь классов и объектов. Качество классов и объектов. Парадигмы ООП.
Тема 2. Диалоговые программы.
Лексические элементы языка. Целые типы. Типы с плавающей запятой. Символьный тип. Булевский тип. Переменные. Преобразование и приведение типов. Массивы. Операции Java. Приоритеты операций. Управляющие операторы Java. Операторы выбора. Операторы цикла. Операторы перехода.
Тема 3. Жизненный цикл программы.
Основы классов. Объявление объектов. Представление методов. Конструкторы. Сборка мусора. Перегрузка методов. Управление доступом. Вложенные и внутренние классы.
Тема 4. Наследование.
Основы наследования. Использование суперклассов. Создание многоуровневой иерархии. Динамическая диспетчеризация методов. Абстрактные классы.
Тема 5. Обработка исключений.
Типы исключений. Использование операторов try, catch и throws. Встроенные исключения Java. Создание собственных подклассов исключений.
Тема 6. Стандартные типы данных.
Арифметические операции. Поразрядные операции. Операции булевской логики. Условная операция.
Тема 7. Представление основных структур программирования.
Потоки. Консольный ввод-вывод. Чтение и запись файлов. Класс String. Строковые операции. Сравнение строк. Изменение строк. Класс StringBuffer.
Тема 8. Списки.
Линейные и динамические списки
РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
Основная:
1. Д. Карлсон. ECLIPSE. М.:ЛОРИ, 2008 – 304с.
2. Хорстманн, Гари Корнелл. JAVA 2. Библиотека профессионала, том 1. Основы. 8-е издание М.:Вильямс, 2008 – 816с.
3. Хорстманн Корнелл Гари. JAVA 2. Библиотека профессионала, том 2. Тонкости программирования. 8-е издание. М.:Вильямс, 2008 – 1168с.
4. JAVA 2 в подлиннике. СПб.:БХВ-Петербург, 2008 – 1072 с.
5. Герберт Шилдт. Java: методики программирования Шилдта. М.:Вильямс, 2008 – 512 с.
Дополнительная:
6. Герберт Шилдт Полный справочник по Java. 7-е издание. М.:Вильямс, 2007 – 1040 с.
7. Гради Буч, Максимчук, Энгл, Бобби Дж. Янг, Джим Коналлен, Хьюстон. Объектно-ориентированный анализ и проектирование с примерами приложений. М.:Вильямс, 2008 – 720 с.
8. Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. Приемы объектно-ориентированного проектирования. Паттерны проектирования. СПб.:Питер, 2007 – 366 с.
9. Крэг Ларман. Применение UML 2.0 и шаблонов проектирования. Введение в объектно-ориентированный анализ, проектирование и итеративную разработку. М.:Вильямс, 2007 – 736с.
10. Герберт Шилдт. Библиотека SWING для Java: руководство для начинающих. М.:Вильямс, 2007 – 704 с.
Материалы, устанавливающие содержание и порядок проведения промежуточных и итоговых аттестаций.
ВОПРОСЫ К ЗАЧЕТУ:
1. Предпосылки появления и развития объектно-ориентированного подхода в программировании.
2. Основные особенности ООП.
3. Ключевые понятия ООП.
4. Область действия полей объекта и параметр Self. Метод класса.
5. Понятие наследования и его назначение. Присваивание объектов.
6. Полиморфизм. Статические и виртуальные методы.
7. Внутренняя структура объекта.
8. Конструкторы и деструкторы, их назначение и правила использования.
9. Виртуальные и динамические методы, их назначение и механизмы вызова.
10. Понятие класса в Delphi. Отличие класса Delphi от объекта Turbo Pascal.
11. Свойства и методы базового класса Delphi TObject.
ЗАДАНИЯ НА КУРСОВУЮ РАБОТУ
1. Разработать класс, реализующий многотиповое бинарное дерево. Реализовать следующие операции: добавление узла в дерево, удаление узла, поиска по дереву, обход дерева (3 способа). Разработать приложение, демонстрирующее работу класса.
2. Разработать классы, реализующие Б-дерево. Реализовать следующие операции: добавление узла в дерево, удаление узла, поиска по дереву. Разработать приложение, демонстрирующее работу классов.
3. Разработать класс шифрования по алгоритму RSA. Реализовать методы шифрования/дешифрования отдельных строк и файлов. Разработать приложение, демонстрирующее работу класса.
4. Разработать класс компрессии/декомпрессии по алгоритмам LZW и Хаффмана. Реализовать методы шифрования/дешифрования отдельных строк и файлов. Разработать приложение, демонстрирующее работу класса.
5. Разработать набор классов «Рикошет»: шар, поле. В замкнутое прямоугольное поле помещаются несколько шаров. Для каждого задаются размер, масса, сила и направление начального импульса. Продемонстрировать перемещение шаров с учетом удара об стены и взаимного соударения. Реализовать возможность учета силы трения.
6. Разработать набор классов для игры «Сокобан» (например, поле, ящик, персонаж). Реализовать игру на их основе.
7. Разработать класс, осуществляющий решение игры «15». Предусмотреть различные формы загрузки исходной позиции (из файла, из массива, …) и выгрузки процесса решения (в файл, в строку, …). Разработать приложение, демонстрирующее работу класса.
8. Разработать набор классов для игры «Сапер». Реализовать игру на их основе. Должен настраиваться размер поля.
9. Разработать набор классов для игры «Lines». Реализовать игру на их основе. Должен настраиваться размер поля, количество цветов.
10. Разработать набор классов для игры «5 в ряд» (Го-моку) (сетевая версия). Реализовать игру.
11. Разработать набор классов для игры «Реверси» («Отелло») (сетевая версия). Реализовать игру.
12. Разработать набор классов для игры «Морской бой» (сетевая версия). Реализовать игру.
13. Разработать набор классов для игры «Жизнь». Реализовать игру на их основе.
14. Разработать набор классов для реализации графов (например, вершина, ребро, граф). Реализовать основные операции над вершинами и ребрами (определение смежности, инцидентности и т. д.). Реализовать методы поиска на графе (в глубину, в ширину, поиск кратчайшего пути). Разработать приложение, демонстрирующее работу классов.
15. Разработать простейший графический редактор. Инструменты рисования: точки, линии, прямоугольники, эллипсы.
16. Разработать набор классов для трехмерных фигур: точка, пирамида, призма. Реализовать приложение, демонстрирующее работу классов.
17. Реализовать набор классов для игры шахматы (фигуры, доска). Разработать приложение для игры вдвоем на одном компьютере.
18. Реализовать набор классов для игры шашки. Разработать приложение для игры вдвоем на одном компьютере.
19. Разработать клиент-серверное приложение для обмена сообщениями в локальной сети


