1

advertisement
1
2
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Институт математики и компьютерных наук
Кафедра программного обеспечения
Воробьева Марина Сергеевна
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ
Учебно-методический комплекс. Рабочая программа
для студентов направления 09.03.03 Прикладная информатика,
профиль подготовки: Прикладная информатика в экономике,
заочная форма обучения
Программа подготовки: академический бакалавриат
Тюменский государственный университет
2015
3
Воробьева М.С. Объектно-ориентированное программирование. Учебнометодический комплекс. Рабочая программа для студентов очной формы обучения,
направление 09.03.03
Прикладная информатика, профиль подготовки: Прикладная
информатика в экономике, заочная форма обучения. Программа подготовки: академический
бакалавриат. Тюмень, 2015, 21 стр.
Рабочая программа составлена в соответствии с требованиями ФГОС ВО с учетом
рекомендаций по направлению и профилю подготовки.
Рабочая программа дисциплины (модуля) опубликована на сайте ТюмГУ «Объектноориентированное программирование» [электронный ресурс] / Режим доступа:
http://www.umk3plus.utmn.ru свободный.
Рекомендовано к изданию кафедрой программного обеспечения.
ОТВЕТСТВЕННЫЙ РЕДАКТОР: Захарова И.Г., д.п.н., профессор.
© Тюменский государственный университет, 2015.
© Воробьева М.С. 2015.
4
1.
1.1.
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
Цели и задачи дисциплины
Целью преподавания дисциплины «Объектно-ориентированное программирование»
является обучить студентов общим принципам построения и использования языков
программирования; средствам описания данных; средствам описания действий; абстрактным
типам данных.
Задачи
дисциплины
–
дать
знания
основ
объектно-ориентированного
программирования, алгоритмизации и средств описания данных, а также технологии
программирования.
Объектно–ориентированное программирование является мощным средством,
позволяющим как моделировать объекты реального мира, так и генерировать виртуальные
объекты, существующие только в электронной среде.
Лабораторные занятия должны включать рассмотрение конкретных приемов как для
создания отдельных объектных классов, так и построения среды с объектами различных
классов, в структуру которых инкапсулированы возможности обмена данными и управления
как между собой, так и с внешними объектами.
В качестве примера функционирования и расширения объектно-ориентированной
среды на лабораторных занятиях рассматривается среда Windows, её классы и интерфейсы. В
результате студент должен уметь пользоваться готовыми объектно-ориентированными
конструкциями, расширяя их структуру и функционал и уметь разрабатывать в стиле
объектного подхода собственные конструкции произвольной структурной сложности.
1.2. Место дисциплины в структуре образовательной программы
Дисциплина «Объектно-ориентированное программирование» входит в вариативную
часть дисциплин по выбору учебного плана направления 09.03.03
Прикладная
информатика.
Знание дисциплины «Объектно-ориентированное программирование» является важной
составляющей общей программистской культуры и навыков программирования выпускника.
Эти знания необходимы как при проведении теоретических исследований в различных
областях математики, так и при решении практических задач из разнообразных прикладных
областей, таких, как математический анализ; дискретная математика; информатика и
программирование; информационные системы и технологии.
Таблица 1.
Разделы дисциплины и междисциплинарные связи с обеспечиваемыми
(последующими) дисциплинами
№
Наименование
Темы дисциплины необходимые для изучения
п/п
обеспечиваемых
обеспечиваемых (последующих) дисциплин
(последующих) дисциплин 1.1
1.2
1.3
2.1
2.2
3.1
3.2
3.3
1. Базы данных
+
+
+
2. Информационные системы
+
+
+
+
+
и технологии
3 Разработка программных
+
+
+
+
+
+
+
+
приложений
5
4
5
Математическое и
имитационное
моделирование
Интеллектуальные
информационные системы
+
+
+
+
+
+
+
+
+
+
+
+
1.3. Компетенции обучающегося, формируемые в результате освоения данной
образовательной программы
В результате изучения дисциплины «Объектно-ориентированное программирование»
по направлению подготовки 09.03.03
Прикладная информатика с квалификацией
(степенью) «бакалавр» в соответствии с целями основной образовательной программы и
задачами, указанными в ФГОС ВО, выпускник должен обладать следующими
компетенциями:
Профессиональные компетенции

способностью программировать приложения и создавать программные прототипы
решения прикладных задач (ПК-8).
1.4. Перечень планируемых результатов обучения по дисциплине:
В результате освоения дисциплины обучающийся должен:
Знать:





основные этапы компьютерного решения задач;
основные способы представления структур данных;
способы эффективной реализации абстрактных структур данных,
основные принципы объектно-ориентированного программирования;
правила построения иерархии объектов для моделирования реальных объектов и
структур;
 свойства и методы элементов систем разработки приложений, реализующих
функциональные возможности объектов WINDOWS,
 преимущества использования объектно-ориентированного подхода при создании
сложных программных продуктов.
Уметь:
 формализовать поставленную задачу;
 разработать структуры типов данных для представления предметной области решаемой
задачи;
 тестировать и отлаживать приложения с целью повышения надёжности и
эффективности;
 использовать
современные
готовые
библиотеки
классов,
технологии
и
инструментальные средства.
Владеть:
 навыками алгоритмизации; приёмами разработки, отладки и тестирования приложений;
6
 методами и технологиями разработки программных продуктов, использующих
представление отдельных элементов предметной области в виде самостоятельных
объектов пользовательских классов;
 применять средства программирования для решения практических задач.
2. Структура и трудоемкость дисциплины
Семестр 4. Форма промежуточной аттестации: 4 семестр – экзамен.
Таблица 2.
Всего часов
Академический
бакалавриат
34,05
30
12
Вид учебной работы
Контактная работа:
Аудиторные занятия (всего)
В том числе:
Лекции
Практические занятия (ПЗ)
Семинары (С)
Лабораторные занятия (ЛЗ)
Иные виды работ:
Самостоятельная работа (всего):
Общая трудоемкость
зач. ед.
час
Вид промежуточной аттестации (зачет, экзамен)
18
4,05
181,85
6
216
экзамен
3. Тематический план
Таблица 3.
1
Самостоятельная
работа*
Из них в
интерактивной
форме
2
20
22
2
2
20
24
2
2
20
24
1
2
2
30
34
2
2
4
30
36
2
Семинарские
(практические)
Тема
Лекции*
№
Итого
часов
по
теме
Лабораторные
занятия*
Виды учебной
работы и
самостоятельная
работа, в час.
Модуль 1
1.1. Теоретические основы ООП. Переход
от структурного программирования к
объектно-ориентированному.
1.2. Основные принципы и этапы ООП.
Особенности ООП
1.3. Классы и объекты. Понятие. Средства
описания данных.
2.1. Средства ООП. Элементы класса. Поля
и методы. Наследование
2.2. Средства ООП. Свойства объектов.
Инкапсуляция. Виртуальные и
динамические методы. Полиморфизм
7
3.1. Средства разработки объектноориентированных программ. Элементы
класса. Поля и методы. Конструкторы
и деструкторы.
3.2. Средства разработки объектноориентированных программ. Простое и
множественное наследование.
Полиморфизм.
3.3. Средства разработки объектноориентированных программ.
Дружественные функции и классы.
Перегрузка операций.
Итого (часов, баллов):
Итого в интерактивной форме
*- с учётом иных видов работ.
2
22
22
2
2
22
24
2
2
22
26
12
18
6
186
216
1
1
6
5. Содержание дисциплины
ТЕМА 1.1. Теоретические основы ООП. Переход от структурного программирования
к объектно-ориентированному.
Исторический
аспект
возникновения
объектно-ориентрованного
подхода
в
программировании.
Принципы
структурного
программирования.
Структурная
декомпозиция. Виды структурирования данных. Модульный подход.
ТЕМА 1.2. Теоретические основы ООП. Основные принципы и этапы ООП.
Принципы абстрагирования, ограниченного доступа, модульности, иерархичности,
типизации, параллелизма, устойчивости.
Обзор этапов разработки программного обеспечение в стиле ООП. Обзор реализации
ООП в различных средах программирования.
ТЕМА 1.3. Теоретические основы ООП. Классы и объекты.
Объектная декомпозиция. Объектные сообщения, классы. Средства разработки и
описания классов. Ограничение доступа.
ТЕМА 2.1. Средства ООП. Элементы класса. Поля и методы. Наследование.
Классы и объекты. Поля и методы объектов. Жизненный цикл объектов. Области
видимости. Конструкторы и деструкторы.
ТЕМА 2.2. Средства ООП.
Свойства объектов. Инкапсуляция. Принцип инкапсуляции. Организация свойств.
Организация событий. Событийное программирование. Защита объектов.
Виртуальные и динамические методы. Полиморфизм. Принцип полиморфизма.
Особенности виртуальных и динамических методов. Горизонтальный и вертикальный
полиморфизм. Функционирование полиморфных объектов.
ТЕМА 3.1. Средства разработки объектно-ориентированных программ. Элементы
класса. Поля и методы. Конструкторы и деструкторы.
Принцип построения класса. Инициализация полей. Статические компоненты класса.
Многообразие и перегрузка конструкторов класса. Деструкторы.
ТЕМА 3.2. Средства разработки объектно-ориентированных программ. Простое и
множественное наследование. Полиморфизм.
Вида наследования. Изменение видимости элементов класса при наследовании. Принцип
полиморфизма. Раннее и позднее связывание. Абстрактные классы.
8
ТЕМА
3.3.
Средства
разработки
объектно-ориентированных
Дружественные функции и классы. Перегрузка операций.
Механизм организации дружественных функций. Переопределение
Переопределение операторов. Работа с динамическими объектами.
программ.
функций.
6. Планы семинарских занятий
Не планируются
7. Темы лабораторных работ
ТЕМА 1.1. Построение консольных приложений
Построение консольных приложений . Использование стандартных типов данных.
Реализация ветвления и циклов. Построение консольных приложений, использующих
пользовательские типы данных (массивы, строки, структуры).
ТЕМА 1.2. Построение консольных приложений
Построение консольных приложений , реализующих работу с полями и методами классов.
Объявление объектов. Использование конструкторов и деструкторов.
ТЕМА 1.3. Построение консольных приложений
Построение приложений, оформленных в стиле ООП с учётом объектной декомпозиции.
Исследование возможности объектной организации приложения.
ТЕМА 2.1. Построение консольных приложений с использованием классов
Построение классов. Оформление полей и методов. Реализация принципа наследования.
Разработка конструкторов и деструкторов.
ТЕМА 2.2. Построение консольных приложений с использованием классов
Реализация принципа инкапсуляции. Организация свойств и событий. Реализация принципа
полиморфизма. Примеры реализации полиморфизма.
ТЕМА 3.1. Построение консольных приложений .
Реализация работы с полями и методами классов. Инициализация полей. Статические
компоненты класса. Использование конструкторов и деструкторов. Многообразие и
перегрузка конструкторов класса. Деструкторы.
ТЕМА 3.2. Построение консольных приложений .
Простое и множественное наследование. Вида наследования. Изменение видимости
элементов класса при наследовании.
Полиморфизм. Принцип полиморфизма. Раннее и позднее связывание. Абстрактные классы.
ТЕМА 3.3. Построение консольных приложений .
Постановка задачи. Дружественные функции и классы.
Перегрузка операций. Механизм организации дружественных функций. Переопределение
функций. Переопределение операторов.
Работа с динамическими объектами.
8. Примерная тематика курсовых работ
Не планируется
9. Учебно-методическое обеспечение и планирование самостоятельной работы
студентов
Таблица5 .
№
Модули и темы
Виды СРС
Объем
9
обязательные
1.1 Теоретические основы ООП.
Переход от структурного
программирования к
объектно-ориентированному.
1.2 Основные принципы и этапы
ООП. Особенности ООП
1.3 Классы и объекты. Понятие.
Средства описания данных.
2.1 Средства ООП. Элементы
класса. Поля и методы.
Наследование
2.2 Средства ООП. Свойства
объектов. Инкапсуляция.
Виртуальные и динамические
методы. Полиморфизм
3.1
3.2
Средства разработки
объектно-ориентированных
программ. Элементы класса.
Поля и методы. Конструкторы
и деструкторы.
Средства разработки
объектно-ориентированных
программ. Простое и
множественное наследование.
Полиморфизм.
Конспектирование
материала на лекционных
занятиях
Выполнение заданий
лабораторных работ.
Выполнение контрольных
работ
Конспектирование
материала на лекционных
занятиях
Выполнение заданий
лабораторных работ
Выполнение тестовых работ
Конспектирование
материала на лекционных
занятиях
Выполнение заданий
лабораторных работ
Выполнение тестовых и
контрольных работ
Конспектирование
материала на лекционных
занятиях
Выполнение заданий
лабораторных работ
Выполнение контрольных
работ
Конспектирование
материала на лекционных
занятиях
Выполнение заданий
лабораторных работ
Выполнение контрольных
работ
Конспектирование
материала на лекционных
занятиях
Выполнение заданий
лабораторных работ
Выполнение контрольных
работ
Конспектирование
материала на лекционных
занятиях
Выполнение заданий
лабораторных работ
Выполнение тестовых и
контрольных работ
дополнительные
часов
20
Работа с учебной
литературой
20
Написание
программы
20
Написание
программы
30
Работа с учебной
литературой.
Написание
программы
30
Работа с учебной
литературой.
Написание
программы
22
Работа с учебной
литературой.
Написание
программы
22
Работа с учебной
литературой.
Написание
программы
10
3.3
Средства разработки
объектно-ориентированных
программ. Дружественные
функции и классы. Перегрузка
операций.
Итого*
* - с учётом иных видов работ
Конспектирование
материала на лекционных
занятиях
Выполнение заданий
лабораторных работ
Выполнение тестовых и
контрольных работ
22
Работа с учебной
литературой.
186
10.Фонд оценочных средств для проведения промежуточной аттестации по итогам
освоения дисциплины
10.1 Перечень компетенций с указанием этапов их формирования в процессе освоения
образовательной программы (выдержка из матрицы компетенций):
способностью программировать приложения и создавать
Семестр
ПК-8
программные прототипы решения прикладных задач
12
Б1.Б.6
Информатика и программирование
67
Б1.Б.10
Программная инженерия
23
Б1.Б.11
Информационные системы и технологии
56
Б1.В.ОД.6
Web технологии и Web дизайн
4
Б1.В.ОД.7
Разработка программных приложений
6
Б1.В.ОД.9
Интеллектуальные информационные системы
8
Б1.В.ОД.10
Управление информационными ресурсами
3
Б1.В.ДВ.5.1
Объектно-ориентированное программирование
3
Б1.В.ДВ.5.2
Структурное программирование
6
Б2.У.1
Учебная практика
6
Б2.Н.2
Курсовая работа по направлению
8
ИГА
Итоговая государственная аттестация
11
ПК-8
Код
компетенции
10.2 Описание показателей и критериев оценивания компетенций на различных этапах их формирования, описание шкал оценивания
Таблица 6.
Карта критериев оценивания компетенций
Критерии в соответствии с уровнем освоения ОП
пороговый
(удовл.)
61-75 баллов
базовый (хор.)
76-90 баллов
Знает: основные подходы
при реализации
приложения
Знает: основные подходы,
этапы
при
реализации
приложения
Знает: основные этапы и
методы
при
реализации Лекции,
приложения
решения занятия.
прикладных задач
Умеет: выявить особенности
этапов построения
программы и применять
объектно-ориентированные
подходы для решения
задачи.
Умеет:
выявить
особенности
постановки
задачи,
выбрать
необходимый
метод
решения с использованием
современных
подходов
объектноориентированного
программирования
для
решения
стандартных
задач.
Умеет: выявить особенности
постановки задачи, выбрать Лабораторные занятия
необходимый метод решения с
использованием современных
подходов
объектноориентированного
программирования
для
решения прикладных задач.
Владеет:
основными
понятиями
работы
с
прототипами,
необходимыми
для
построения и реализации
программы.
Владеет: навыками работы
с
прототипами,
необходимыми
для
решения
классических
задач.
повышенный
(отл.)
91-100 баллов
Виды занятий (лекции,
семинар
ские, практические,
лабораторные)
Лекции,
Владеет: навыками построения занятия.
прототипа
программы
для
решения
классических
и
прикладных
задач
с
использованием современных
языков
объектноориентированного
программирования.
Оценочные
средства (тесты,
творческие работы,
проекты и др.)
лабораторные лабораторные
задания,
тестовые
задания.
Лабораторные
задания, опрос
Лабораторные
лабораторные задания,
тестирование
12
10.3 Типовые контрольные задания или иные материалы, необходимые для оценки
знаний, умений, навыков и (или) опыта деятельности, характеризующей этапы
формирования компетенций в процессе освоения образовательной программы.
Пример лабораторного задания по теме 1.2, 1.3, 2.1.
Тема «Классы и объекты. Наследование классов»
Задание 1
1. В рамках консольного приложения разработать класс В – наследник класса А (из
предыдущего задания) с полем d и метод с2. Метод с2 – результат вычисления
выражения над полями a, b, d. Создать перегруженный метод c2, возвращающий
текстовую строку, содержащую результат вычисленного выражения.
2. Для класса B определить конструктор, вызывающий конструктор базового класса. В
теле программы создать объекты классов А и В, продемонстрировав работу
конструкторов.
3. Создайте в производном классе метод, имеющий такие же атрибуты и такое же имя,
как и метод базового класса A. Вызовите оба метода в главном методе программы,
скомпилируйте код и добейтесь того, чтобы компилятор не выводил предупреждение.
4. Создайте новый метод класса B, вызывающий при помощи ключевых слов доступа
как метод производного, так и метод базового класса.
Задание 2
1. Определить базовый класс Автомобиль с полями Торговая марка, Число цилиндров,
Мощность.
2. Создать конструкторы и деструктор объектов, а также метод Show(), выводящий
информацию об объекте.
3. Определить производный класс Грузовик, добавив в него характеристику
грузоподъемности кузова.
4. Создать конструкторы объектов производного класса. Переопределить метод Show() в
производном классе.
5. Создать методы, позволяющие изменять поля объектов базового и производного
классов.
Задание 3
1. Базовый класс: Пара_чисел (Pair). Поля: Первое_число (first) – int, Второе_число
(second) – int.
2. Определить методы изменения полей и вычисления произведения чисел.
3. Создать производный класс Прямоугольный_треугольник (Rightangled) с полямикатетами. Определить метод вычисления гипотенузы.
4. Для класса Пара_чисел определить операцию сложения пар: (a,b)+(c,d)=(a+c,b+d).
5. Создать производный класс Денежная_сумма (Money), где Первое_число – это
количество рублей, а Второе_число – количество копеек. Переопределить операцию
сложения и определить операцию вычитания денежных сумм.
Пример лабораторного задания по теме 3.1, 3.2.
13
Тема «Абстрактные классы. Интерфейсы»
1.
2.
3.
4.
1.
2.
3.
4.
Вариант 1.
Создать абстрактный класс Polygon с методом, позволяющим вывести на экран
информацию о многоугольниках.
Создать производные классы:
 Правильный треугольник (Длина стороны a),
 Прямоугольник (Длина стороны a, Длина стороны b),
 Параллелограмм (Длина стороны a, Длина стороны b, Угол между сторонами).
Каждый производный класс имеет собственные методы вывода информации на экран и
подсчета площади фигуры. Создать базу (на основе массива) из n фигур, вывести
полную информацию из базы на экран, а также организовать поиск фигур, площадь
которых находится в заданном диапазоне.
Добавить в дочерние классы перегрузку одного бинарного оператора и одного
унарного. В качестве результата операторного метода можно использовать вывод
информации об объекте.
Реализовать поставленную задачу при помощи создания интерфейса Polygon.
Вариант 2.
Создать абстрактный класс Bibliography с двумя методами: позволяющим вывести на
экран информацию о библиографических источниках, а также определяющим, сколько
лет назад было опубликовано издание.
Создать производные классы:
 Книга (Наименование, Автор, Год выпуска),
 Журнальная статья (Наименование, Автор, Год выпуска, Наименование журнала,
Номер журнала),
 Материалы конференции (Наименование, Автор, Год издания, Наименование
конференции, Место проведения).
Каждый производный класс имеет собственные методы вывода информации на экран.
Создать базу (на основе массива) из n библиографических источников, вывести полную
информацию из базы на экран, а также организовать поиск источников, год выпуска
которых попадает в введенный диапазон.
Добавить в дочерние классы перегрузку одного бинарного оператора и одного
унарного. В качестве результата операторного метода можно использовать вывод
информации об объекте.
Реализовать поставленную задачу при помощи создания интерфейса Bibliography.
Вариант 3.
1. Создать абстрактный класс Students с двумя методами: позволяющим вывести на экран
информацию о персонах, а также определяющим их возраст на момент текущей даты.
Создать производные классы:
 Абитуриент (ФИО, Факультет, Дата рождения, Год поступления),
 Студент (ФИО, Факультет, Дата рождения, Год поступления, Курс бакалавриата,
Форма обучения),
 Магистрант (ФИО, Факультет, Дата рождения, Год поступления, Курс
магистратуры).
14
2. Каждый производный класс имеет собственные методы вывода информации на экран.
Создать базу (на основе массива) из n персон, вывести полную информацию из базы на
экран, а также организовать поиск персон, обучающихся на определенном факультете
или поступающих туда.
3. Добавить в дочерние классы перегрузку одного бинарного оператора и одного
унарного. В качестве результата операторного метода можно использовать вывод
информации об объекте.
4. Реализовать поставленную задачу при помощи создания интерфейса Students.
Пример лабораторного задания по теме 3.3
Тема «Индексаторы»
1. В классе NumClass содержится целочисленный массив NumArray (поле закрытое).
Требуется определить индексатор для исходного массива, содержащий аксессоры для
возвращения и записи значения элемента массива. Если
индексатору передается
отрицательный индекс – возвращается размер массива.
В главном методе программы создать объект с полем-массивом. Заполнить и вывести
на экран элементы массива при помощи индексатора.
Добавить в NumClass еще один массив и определить индексатор и для него. Вывести
на экран значения элементов второго массива через индексатор. Второй массив создать в
конструкторе класса, размер массива определяется аргументом конструктора.
2. Перегрузка индексаторов. Создать класс с индексатором для реализации векторов.
Описать в классе:
 закрытое поле – массив для записи координат вектора;
 конструктор класса, аргументы – значения координат вектора;
 метод для отображения координат;
 индексатор с целочисленным индексом, возвращающий и присваивающий
значений координаты вектора;
 индексатор
с
индексом-объектом
для
вычисления
векторного
произведения; возвращаемое значение – результат векторного
произведения, т.е. объект;
 индексатор с двумя индексами-объектами для вычисления двойного
векторного произведения.
Справка
Индексаторы являются синтаксическим удобством, позволяющим создавать класс,
структуру или интерфейс, доступ к которому клиентские приложения получают, как к
массиву. Чаще всего индексаторы реализуются для доступа к закрытой внутренней
коллекции или закрытому массиву. Вместе с модификаторами доступа индексаторы
реализуют механизм инкапсуляции для полей-массивов и являются аналогами свойств,
определяемых для обычных полей.
Пример объявления индексатора
public class AClass1
{
private int[] imyArray = new int[20];
public int this[int ind1] //индексатор
{
get
15
{ return imyArray[ind1]; }
set
{ imyArray[ind1] = value; }
}
}
Контрольная работа по темам 2.2:
Написать модуль, содержащий описание следующего класса (использовать private и public):
Объект
- круг на плоскости.
Свойства - (Rw) координаты центра и радиус круга;
- (Rw) площадь;
- (Ro) количество пересекаемых осей координат.
Методы - конструктор, задает круг с параметрами (1, 1, 1),
- расстояние до ближайшей оси,
- создаёт круг того же радиуса, имеющий с данным кругом одну общую точку,
- наличие общих точек с другим кругом (Boolean),
- перенос центра в указанную точку.
События
- изменение параметров круга;
- радиус круга стал равен нулю.
Первое событие передает обработчику старые параметры круга.
Контрольная работа по темам 1.3:
Создать класс, предназначенный для хранения даты. Дата хранится в виде года, месяца и
числа.
При вводе даты должен быть контроль корректности даты.
Операторы
•
Разность дат, как число дней между датами.
•
Сравнение дат (>, <, ==).
•
Сумма даты и числа (дней).
•
Инкремент и декремент даты.
Задача
1. Программа должна ввести три даты – D, D1 и D2.
2. Требуется найти дату D3, которая больше даты D2 на столько же дней, на сколько дата
D2 больше даты D1.
3. Определить входит ли дата D в интервал [D1, D3].
Дополнительные задания для самостоятельного углубленного изучения содержания
дисциплины
1.
Изучение истории языков программирования на примере развития языков Pascal и С.
Изучение парадигм программирования на примере сопоставления общих приемов на
процедурном и функциональном языках.
2.
Изучение основных команд языка ассемблера, принципов их построения и
использования; программирование простых алгоритмов обработки скалярных данных.
3.
Использование ступенчатых массивов; изучение возможностей свойств и методов
класса Array для решения типовых задач обработки массивов.
16
Изучение свойств и методов абстрактного класса Object. Переопределение в
наследующих классах на примере метода ToString.
5.
Изучение использования препроцессорной обработки в приложениях на языке C#.
Основные директивы препроцессора, примеры использования для условной
компиляции программ.
6.
Изучение приемов повышения надежности приложений. Защита критических
участков программы. Защита методов.
7.
Изучение приемов повышения производительности приложений. Оценка скорости
выполнения программ. Методы оптимизации программ. Распределение памяти и
сборка мусора.
4.
Задания для самостоятельной работы по практическому программированию и
подготовки к контрольным работам
1) Составить программу, которая считывает произвольный текст
алфавитном порядке все латинские буквы, входящие в этот текст.
и распечатывает в
2) Составить программу, которая читает построчно текст другой программы на языке С#,
обнаруживает типизированные литералы и выводит их на печать.
3) Составить программу, которая читает произвольные строки длиной до 80 символов,
разбивает их по словам (подстрока между двумя пробелами), находит максимальное
слово и выводит его на печать.
4) Дан массив строк, каждый элемент которого представляет выражение, где складываются
двоичные числа без знака. Преобразовать значения сумм в десятичную систему
счисления. Распечатать значения элементов массива до и после преобразования.
5) Составить программу, которая читает построчно текст другой программы на языке С#,
считает число символов { и }, сравнивает их и выводит на печать сообщение об ошибке,
если они не равны между собой или не сбалансированы.
6) Разработать программу, которая предназначена для зашифровки текстов, (выбор
алгоритма по Вашему усмотрению). Вывести на печать исходный текст и результат
шифровки. Текст читать построчно, хранить текст в массиве строк.
7) Составить программу, которая вводит массив строк, состоящих из слов, разделенных
пробелами, и определяет, какие из слов начинаются на букву а.
8) Составить программу, которая вводит массив строк, состоящих из слов, разделенных
пробелами, и определяет, какие из слов оканчиваются на букву а.
9) Составить программу, которая вводит массив строк, состоящих из слов, разделенных
пробелами, и определяет, какие из слов содержат букву а.
10) Разработать программу, которая проверяла бы орфографию (правильность написания)
слов в некоторой строке, сравнивая их со словами из словаря. Использовать при этом в
качестве словаря одномерный массив слов.
11) Создание класса на языке C# для хранения библиографических данных. Методы:
установки и возвращения значения полей, вычисления «возраста» издания, метод печати.
Методы установки полей класса должны проверять корректность задаваемых
параметров.
12) Описание класса прямоугольников со сторонами, параллельными осям координат с
использованием языка C#. Предусмотреть возможность перемещения прямоугольников
на плоскости, изменения размеров, построения наименьшего прямоугольника,
17
содержащего два заданных прямоугольника, и прямоугольника, являющегося общей
частью (пересечением) двух прямоугольников.
13) Описание класса «Эллипс» на языке C#. Предусмотреть возможность перемещения
эллипса на плоскости, изменения размеров, вычисления площади, периметра эллипса и
т.д.
14) Описание класса, хранящего данные о студенте, на языке С#. Создайте класс, хранящий
данные о студенте (название учебного заведения, ФИО, номер группы, массив из
оценок). Предусмотреть возможность вывода на экран информации о студентах, средний
балл которых больше введенного.
14) Шифрование методом Хилла, реализованное на языке C#. Методы шифрования и
дешифрования.
Контрольная работа
Контрольная работа состоит из двух заданий.
1. Написать модуль, содержащий описание класса (использовать private и public).
Требуется написать модуль, содержащий описание необходимых типов.
При описании класса требуется
 Формировать только независимые друг от друга поля.
 При описании свойств при обращении типа READ использовать поля (если
есть соответствующие) или методы. При обращении типа WRITE использовать
только методы.
 Реализуя принцип инкапсуляции открывать пользователям класса только
заявленные в задании элементы класса.
 В одном из методов обеспечить взаимодействие с другим объектом того-же
класса.
 В одном из методов организовать создание другого объекта того-же класса
(данный метод оформить в виде процедуры).
 Тип одного из событий не должен быть уведомительным (TNotifyEvent).
 Организовать метод типа Info (информация обо всех свойствах объекта класса).
 Не использовать процедуры ввода-вывода на консоль.
2. Написать консольное приложение для проверки работы описанного класса.
Требуется создать консольное приложение, имеющее русский интерфейс,
позволяющее оценить корректность реализации класса из задания 1.
В проекте для одного из событий (общее изменение) реализовать вывод информации
об объекте на консоль. Для другого события реализовать сообщение о его наступлении.
Для одного из событий, имеющего пользовательский тип в обработчике реализовать
проверку некоего произвольного осмысленного ограничения, которая запретила бы объекту
принимать некорректные значения свойств.
В проекте проверить работу всех свойств на чтение и запись, всех методов (возможно,
у некоторых методов для нескольких случаев), всех событий.
Результаты контрольной работы представить в виде отчёта, имеющего титульный
лист. В отчёте привести
 Номер варианта и текст задания (указать вид ограничения на объект для
обработчика одного из событий).
18
 Текст модуля с описанием классов (без комментариев, но с таблицей свойств с
указанием на обслуживающие методы).
 Текст консольного проекта, с пояснением, каким образом проверяется каждое
свойство, метод и событие в проекте.
 Результат выдачи на консоль (распечатку вывода на экран).
Итоговый тест:
1. Основными
компонентами
программирования являются:
a) Класс, объект, полиморфизм;
парадигмы
объектно-ориентированного
b) Инкапсуляция,
объект,
методология;
d) Интерфейс, наследование, класс;
c) Полиморфизм,
инкапсуляция,
наследование.
2. Есть ли разница между определением класса и определением объекта класса? Если
есть, то какая?
a) Определение класса резервирует
b) Разница в оформлении;
память, а определение объекта
класса - нет;
c) Разницы нет;
d) Определение объекта класса
резервирует
память,
а
определение класса - нет;
3. Сколько конструкторов и деструкторов может быть у одного класса?
a)
Один конструктор, несколько
b) Несколько конструкторов, один
деструкторов
деструктор
c)
Один
конструктор,
один
d) Несколько
конструкторов,
деструктор
несколько деструкторов
4. Выберите правильные утверждения о конструкторе класса.
a)
Конструктор имеет то же имя,
b)
Конструктор
класса
что и класс
вызывается каждый раз, когда
создаётся объект класса
c)
Имя конструктора начинается
d)
Конструктор может иметь
с символа ~
любое имя
5. Когда выполняются директивы препроцессора?
a)
До компиляции
b)
Во время компиляции
c)
Во время выполнения кода
d)
После компиляции
6. С какими модификаторами конструктор не может быть объявлен?
a)
const
b)
int
c)
static
d)
real
7. Модификатор доступа - это:
a)
ключевое
слово,
b)
настройка интерфейса VC ++
регламентирующее тип доступа к
определенному члену класса
c)
служебная
функция,
d)
функция, управляющая доступом
регламентирующая тип доступа к
к программе
классу
e)
присвоение начального значения
19
переменной
8. Свободная память, в которой во время работы программы выделяется место в
соответствии с потребностями, называется:
a)
Куча
b)
Указатель
c)
Стек
d)
Массив
9. Для объявления функции до своего первого вызова используют:
a)
конструктор
b)
деструктор
c)
прототип функции
d)
функция объявляется сама
Вопросы к экзамену
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Структура программы на С#
Встроенные типы данных
Типы-значения и ссылочные типы
Основные операторы
Создание и инициализация массивов, ступенчатые массивы
Класс Array
Строки, класс String
Классы и объекты, элементы класса
Методы, параметры методов
Перегрузка методов
Конструкторы и инициализация данных
Деструкторы и алгоритм сборки мусора
Перегруженные операторы
Свойства
Индексаторы
Производные классы
Конструкторы и наследование
Преобразование типов при работе с иерархией объектов, операторы проверки и
приведения типа
Переопределение методов
Абстрактные классы и наследование
Абстрактный класс Object
Реализация интерфейсов, интерфейсы и классы, интерфейсы и структуры
Обработка исключений, генерация исключений
Класс Exception, исключения и наследование
Создание и использование делегатов, групповые делегаты
Определение и использование событий, генерация событий, широковещательные
события
Использование пространств имен
Препроцессорная обработка.
10.4 Методические материалы, определяющие процедуры оценивания знаний, умений,
навыков и (или) опыта деятельности характеризующих этапы формирования
компетенций.
20
4 семестр – экзамен:
Студент получает экзамен автоматически, если выполнил лабораторные задания,
получил допуск по аудиторным занятиям, сдал контрольную работу и сдал тестовое задание.
Для допуска к экзамену надо выполнить 35% лабораторных заданий.
Контрольную работу студент оформляет в установленной форме и публикует на сайте,
после проверки результат проверки публикуется на сайте в личном кабинете студента.
Тестовое задание выполняется в установленные сроки, после прохождения
тестирования студенту сообщается оценка: «неудовлетворительно», удовлетворительно»,
«хорошо», «отлично».
В случае, если во время сессии студент не выполнил учебный процесс, пересдача
осуществляются только в сроки, установленные учебной частью института.
11. Образовательные технологии
Сочетание традиционных образовательных технологий в форме лекций,
лабораторных работ и проведение контрольных мероприятий (контрольных работ, экзамена).
аудиторные занятия:
лекционные и лабораторные занятия; на лабораторных занятиях контроль
осуществляется при сдаче набора заданий.
интерактивные формы: компьютерное тестирование и анализ результатов при
выполнении лабораторных работ;
внеаудиторные занятия:
выполнение дополнительных заданий разного типа и уровня сложности, изучение
отдельных тем и вопросов учебной дисциплины в соответствии с учебно-тематическим
планом. Подготовка индивидуальных заданий: выполнение самостоятельных, реферативных
и контрольных работ, подготовка ко всем видам контрольных испытаний; индивидуальные
консультации.
12. Учебно-методическое и информационное обеспечение дисциплины
12.1 Основная литература
1. Иванова, Г. С. Программирование: учебник для студентов вузов, обучающихся по
направлению 230100 "Информатика и вычислительная техника"/ Г. С. Иванова. Москва: КНОРУС, 2013. - 432 с
2. Троелсен, Э. Язык программирования С# 5.0 и платформа .NET 4.5 = PRO C# 5.0
and the .NET 4.5 Framework/ Э. Троелсен ; пер. с англ. Ю. Н. Артеменко. - 6-е изд..
- Москва: Вильямс, 2013. - 1312 с.
3. Котов О. М. Язык C#: краткое описание и введение в технологии
программирования: учебное пособие [Электронный ресурс] : учеб. пособие /
О. М.Котов. – Электрон. текстовые дан. - Екатеринбург: Издательство Уральского
университета,
2014.
–
Режим
доступа:
http://biblioclub.ru/index.php?page=book&id=275809&sr=1
(дата
обращения:
10.10.2014).
12.2 Дополнительная литература
1. Павловская, Т. А. C#: программирование на языке высокого уровня : учебник/ Т.
А. Павловская. - Санкт-Петербург: Питер, 2010. - 432 с.
2. Лавлинский В. В. , Коровина О. В. Технология программирования на современных
языках программирования
[Электронный ресурс] : учеб. пособие /
21
В. В. Лавлинский, О. В.Коровина.
–
Электрон.
текстовые
дан.
Воронеж: Воронежская государственная лесотехническая академия, 2012. – Режим
доступа:
http://biblioclub.ru/index.php?page=book&id=142453&sr=1
(дата
обращения: 01.10.2014).
12.3 Интернет-ресурсы
1. http://study.utmn.ru – Портал доступа к электронным образовательным ресурсам
ТюмГУ;
2. http://biblioclub.ru – Электронно-библиотечная система «Университетская
библиотека он-лайн»;
3. http://znanium.com – Электронно-библиотечная система издательства «Инфра».
13. Перечень информационных технологий, используемых при осуществлении
образовательного процесса по дисциплине (модулю), включая перечень программного
обеспечения и информационных справочных систем (при необходимости).
При выполнении лабораторных работ, ведении лекций в качестве информационных
технологий используется программное обеспечение из пакета Microsoft Office.
Для организации дистанционных занятий в учебном процессе используется
организация вебинаров на базе облачного сервиса для проведения web-конференций Cisco WebEx.
Организация размещения образовательного контента осуществляется с web-серверов
(distance.ru).
14. Технические средства и материально-техническое обеспечение дисциплины
(модуля)
При освоении дисциплины для проведения лекционных занятий нужны учебные
аудитории, оснащённые мультимедийным оборудованием, для выполнения
лабораторных работ необходим персональный компьютер с установленными
программными продуктами - системы программирования на языке программирования
С#.
15. Методические указания для обучающихся по освоению дисциплины (модуля)
Для успешного сдачи экзамена студенты должны посещать лекции и практические
занятия, выполнять домашние задания, выполнить контрольные работы.
Для более эффективного освоения и усвоения материала рекомендуется ознакомиться
с теоретическим материалом по темам до проведения лабораторного занятия. Работу с
теоретическим материалом по теме с использованием учебника или конспекта лекций.
Студенты ведут запись лекций по темам дисциплины, во внеаудиторное время
выполняют проработку лекционного материала. Лабораторные задания студенты выполняют
с применением программных продуктов.
Темы дисциплины, вызывающие дополнительный интерес или сложности при
освоении, рассматриваются на консультациях. Отдельные вопросы студентов разбираются
на индивидуальных консультациях.
Download