ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
ФАКУЛЬТЕТ ВЫЧИСЛИТЕЛЬНОЙ МАТЕМАТИКИ И КИБЕРНЕТИКИ
Кафедра Алгоритмических языков
(название кафедры)
Согласовано: Утверждено:
Заместитель декана на заседании кафедры _ протокол № _ от Факультета ВМК МГУ Зав. кафедрой _ Учебно-методический комплекс Дисциплины «Объектно-ориентированное программирование»
(наименование дисциплины) (Цикл дисциплины и его часть (базовая, вариативная, дисциплина по выбору)) Направление подготовки 010300_ «Фундаментальные информатика и информационные технологии»
(наименование ООП ВПО направления(й) подготовки, или специальности с указанием кода) Профиль подготовки Бакалавр Разработчик (составитель) Подпись УМК К.ф.-м.н. Кузина Л.Н. «_»20 Г.
К.ф.-м.н. Полякова И.Н.
Москва
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ
ФЕДЕРАЦИИ
Федеральное государственное образовательное учреждение высшего профессионального образования«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Факультет вычислительной математики и информатикиУТВЕРЖДАЮ
Декан факультета ВМК Е.И. Моисеев «» Учебно-методический комплекс «Объектно-ориентированное программирование»Направление подготовки 010300 «Фундаментальные информатика и информационные технологии»
Бакалавр Квалификация (степень) выпускника Бакалавр Форма обучения очная Москва Рабочая программа дисциплины «Объектно-ориентированное программирование»
/ составители к.ф.м.н. Кузина Л.Н., к.ф.м.н. Полякова И.Н.
Рабочая программа предназначена для преподавания дисциплины «Объектноориентированное программирование» базовой части ЕН цикла студентам очной формы обучения по направлению подготовки «010300 Фундаментальные информатика и информационные технологии» в 3 семестре.
Рабочая программа составлена с учетом Федерального государственного образовательного стандарта высшего профессионального образования по направлению подготовки, утвержденного приказом Министерства образования и науки Российской Федерации от "8" декабря 2009 г. № 712, а также образовательного стандарта МГУ бакалавр по направлению «010300 Фундаментальные информатика и информационные технологии».
Составители:
к.ф.м.н. Кузина Л.Н., к.ф.м.н. Полякова И.Н.
Содержание 1. Цели и задачи освоения дисциплины 2. Место дисциплины в структуре ООП ВПО 3. Требования к результатам освоения содержания дисциплины 4. Структура дисциплины (модуля) и ее место в учебном плане 4.1 Тематический план курса (для «интегрированного магистра») 4.2. Структура дисциплины по видам работ 4.3. Лабораторные работы 4.4. Курсовой проект (курсовая работа, расчетно-графическое задание, реферат, контрольная работа) 4.5. Консультации 4.6. Интерактивные образовательные технологии, используемые в аудиторных занятиях 5. Содержание дисциплины «Системы программирования».
5.1. Содержание лекций 5.2. Практика. План семинарских занятий.
5.3. Список дополнительных задач.
6. Оценочные средства для текущего контроля успеваемости, промежуточной аттестации 6.1. Контрольные работы 6.2. Оценочные средства для текущего контроля и промежуточной аттестации самостоятельной работы студентов. Коллоквиум.
6.3. Оценочные средства для текущего контроля и промежуточной аттестации самостоятельной работы студентов. Контрольное домашнее задание (КДЗ).
7. Оценочные средства рубежного контроля 7.1. Вопросы к экзамену.
8. Учебно-методическое и информационное обеспечение дисциплины (модуля) 9. Материально-техническое обеспечение дисциплины (модуля) 1. Цели и задачи освоения дисциплины Целью освоения дисциплины является изучение основных концепций и методов объектно-ориентированного программирования, а также изучение языка программирования С++, в котором эти концепции и методы воплощены наиболее полно.
В частности, ставятся следующие задачи:
изучить основные принципы объектно-ориентированной парадигмы программирования, как наиболее распространенной и востребованной в настоящее время;
изучить основные возможности объектно-ориентированного языка программирования С++;
3) изучить основные методы программирования на языке С++;
получить навыки практического программирования на языке С++.
2. Место дисциплины в структуре ООП бакалавриата Дисциплина относится к базовой части профессионального цикла. Содержание курса определяется образовательным стандартом МГУ высшего профессионального образования по направлению 010300 Фундаментальные информатика и информационные технологии.
Изучаются объектно-ориентированный подход к программированию, объектноориентированный язык программирования С++. Изучение опирается на знания, полученные студентами в результате прослушивания курсов «Алгоритмы и алгоритмические языки», «Архитектура ЭВМ и язык ассемблера» и «Основы программирования». Курс «Объектно-ориентированное программирование» будет полезен для успешного освоения курса «Системы программирования» (читается в следующем семестре), в котором предлагаемый материал получит свое развитие.
Освоение данной дисциплины (модуля) необходимо студентам (независимо от их дальнейшей специализации) для получения навыков объектно-ориентированного анализа и проектирования, а также программирования в объектно-ориентированном стиле, весьма актуальном на сегодняшний день.
3. Требования к результатам освоения содержания дисциплины Процесс изучения дисциплины направлен на формирование элементов следующих компетенций в соответствии с ФГОС ВПО по данному направлению:
а) общекультурных (ОК): владеть основными методами, способами и средствами получения, хранения, переработки информации, иметь навыки работы с компьютером как средством управления информацией;
б) профессиональных (ПК):
Способность понимать и применять в исследовательской и прикладной деятельности методы объектно-ориентированного программирования, в том числе:
способность понимать концепции и использовать на практике следующие базовые знания:
на уровне технической грамотности: постулаты объектно-ориентированного программирования;
на уровне понимания концепций, способности их использования:
- абстрактный тип данных, - классы и объекты, - полиморфизм (динамический – механизм виртуальных функций, статический – перегрузка функций и операций) - наследование;
- аппарат исключений, способность понимать и самостоятельно разрабатывать алгоритмы для решения задач системного и прикладного программирования, исследования математических, информационных и имитационных моделей по тематике выполняемых работ;
владение основами объектно-ориентированного языка С++;
понимание концепций и способность использовать в профессиональной деятельности основные законы естественнонаучных дисциплин;
в) в результате освоения дисциплины студент должен:
знать основные понятия и концепции объектно-ориентированной парадигмы;
уметь применять на практике основные методы объектно-ориентированной парадигмы;
понимать и применять на практике компьютерные технологии для решения различных задач в объектно-ориентированном стиле;
- находить, анализировать и контекстно обрабатывать научно-техническую информацию;
- извлекать полезную научно-техническую информацию из электронных библиотек, реферативных журналов;
- демонстрировать способность к анализу и синтезу;
- демонстрировать способность к письменной и устной коммуникации на русском языке;
- публично представить собственные и известные научные результаты;
- очно представлять математические знания в устной форме;
навыками решения практических задач объектно-ориентированного программирования;
- методами объектно-ориентированного программирования;
- проблемно-задачной формой представления естественнонаучных знаний.
4. Структура дисциплины (модуля) и ее место в учебном плане 4.1 Тематический план курса ориентированного программирования.
использование абстрактного типа данных. Обработка исключений.
операций.
Всего (аудиторные занятия и самостоятельная работа):
Общая трудоемкость дисциплины составляет 3 зачетных единицы (108 часов).
Лекции – 18 часов, семинары – 18 часов, самостоятельная работа - 72 часа.
4.2. Структура дисциплины по видам работ исключений.
Лабораторные работы не предусмотрены учебным планом.
4.4. Курсовой проект (курсовая работа, расчетно-графическое задание, реферат, контрольная работа) Курсовая работа не предусмотрена учебным планом 4.5. Консультации Лектор курса и преподаватели, ведущие практические занятия, периодически проводят консультации по дисциплине.
Интерактивные образовательные технологии, используемые в Используются традиционные технологии проведения лекций и практических занятий в аудиториях, а также чтение лекций с использованием слайдов. Все методические материалы для прохождения дисциплины отражены на сайте в Интернете.
5. Содержание дисциплины «Объектно-ориентированное программирование»
5.1. Содержание лекций Лекция № Объектно-ориентированное программирование (ООП) – новая технология (парадигма) программирования. Процессно-ориентированный и объектно-ориентированный подходы к программированию. Основные свойства языка, поддерживающего ООП: абстракция, инкапсуляция, наследование, полиморфизм. Объектно-ориентированный анализ и объектно-ориентированное проектирование. Понятие объекта. Выделение используемых объектов, фиксация связей между объектами, фиксация методов обмена сообщениями между объектами.
Лекции №2- История возникновения и развития языка С++. Язык С++ в сравнении с языком Си. Обзор средств языка С++, реализующих механизмы ООП. Пространства имен, разрешение области видимости. Понятие класса в языке С++. Описание класса: члены-данные и члены-функции. Управление доступом к членам класса – public, private.
Специальные функции – конструкторы и деструктор. Перегрузка конструкторов.
Конструктор умолчания. Конструктор преобразования.
Понятие ссылки на объект. Передача параметров в функции по ссылке. Возврат результата из функции по ссылке.
Конструктор копирования, генерация конструктора копирования по умолчанию, определение конструктора копирования. Указатель this.
Конструктор копирования и операция присваивания: содержательная связь и различие.
Использование квалификатора сonst в С++. Квалификатор mutable.
Лекция № Статические члены класса.
Функции - друзья класса. «Законы» дружбы.
Общая схема обработки исключений: try - throw – catch. Правило выбора обработчика исключения. Передача исключения в объемлющий блок (throw;).
Лекция №5- Перегрузка функций. Аргументы со значениями по умолчанию. Перегрузка и неоднозначность.
Перегрузка унарных операций с помощью функции-члена класса и с помощью функциидруга класса. Перегрузка бинарных операторов с помощью функции-члена класса и с помощью функции-друга класса.
Особенности перегрузки операций присваивания, индексирования, инкремента, декремента, операции приведения к типу.
Лекция №7- Единичное "открытое" (с квалификатором public). Спецификатор доступа к членам класса protected. Функции-члены производного класса - наследование и замещение, правила видимости. Повторное использование кода.
Конструкторы и деструкторы производных классов: порядок вызова, передача параметров. Указатели на базовый и производный классы, преобразование указателей.
Виртуальные функции. Абстрактные классы. Пример использования абстрактного класса.
Использование виртуальных деструкторов.
Закрытое и защищенное (private, protected) наследование.
Лекция № Коллоквиум.
5.2. Практика. План семинарских занятий.
Номера задач с префиксом «К» даются по задачнику [3] основной литературы (Ю.С.
Корухова. Сборник задач и упражнений по языку Си++), с префиксом «Д» – из предлагаемого ниже списка дополнительных задач.
Семинар № 1. «Принципы объектно-ориентированного программирования»
Задачи: разбор примеров из лекций.
Выдача контрольного домашнего задания (сдача в конце семестра).
Домашнее задание: Д- Семинар № 2. «Определение и использование абстрактного типа данных»
Задачи: К-1.1, К-1.4(1,2), К-1. Домашнее задание: K-1.2, K-1.3, К-1.4(6,7), К-1.5, Д- Семинар № 3. Практическое занятие в компьютерном классе.
Задачи: К-1.9.
Домашнее задание: K-1.8, K-1.13, Д-3, Д- Семинар № 4. «Обработка исключений»
Задачи: К-1.10, К-1.11, К-1.14(б), К-4.5(а), Д- Домашнее задание: K-1.7, K-1.14(а), К-4.5(б) Семинар № 5. «Перегрузка функций и операций»
Задачи: К-2.1, К-2.4, К-2.7, К-2. Домашнее задание: K-2.2, K-2. Семинар № 6. Практическое занятие в компьютерном классе.
Задачи: К-2. Домашнее задание: Д-6, Д- Семинар № 7. «Наследование»
Задачи: К-3.1, К-3.4, К-3.6, Д- Домашнее задание: K-3.2, K-3. Семинар № 8.
Прием контрольного домашнего задания в компьютерном классе (см. 6.3), практическое задание (К-3.3).
Семинар № 9.
Контрольная работа, выполняется на компьютерах (см.6.1) 5.3. Список дополнительных задач Задача №1.
Выявить в заданной предметной области (ПО) некоторое количество сущностей (понятий). Для каждой из сущностей определить ее структуру, особенности создания, копирования и уничтожения; ее возможное поведение и использование, а также связи с другими сущностями данной ПО. Представить результат анализа и проектирования произвольным образом (в виде словесного описания, схем, диаграмм).
Примеры возможных ПО: банк, магазин, университет, спортивный клуб.
Задача №2.
Есть ли ошибки в приведенном фрагменте программы на С++? Если есть, то объясните, в чем они заключаются. Вычеркните ошибочные конструкции (если они есть). Что будет выдано в стандартный канал вывода при вызове функции main()?