
1. Цели и задачи учебной дисциплины
Цель изучения данной дисциплины – изучение основных понятий объ-ектно-ориентированного программирования (ООП), алгоритмизации и созда-ния классов; объектно-ориентированного подхода; ООП среды программи-рования, изучение инструментов языка С++ для реализации объектно-ориентированного программирования.
В систематизированном виде излагаются основные понятия объектно-ориентированного программирования и описываются возможности языка C++ для поддержки ООП. При этом основное внимание уделяется объясне-нию того, как теми или иными возможностями языка С++ пользоваться.
В данном курсе рассматриваются все основные возможности языка C++ и их применение при разработке как процедурных, так и объектно-ориентированных программ. Дается краткое описание стандартной библио-теки языка C++, содержащей шаблоны классов и обобщенные алгоритмы, используемые при написании типовых программ.
Курс рассчитан на получение твердых, устойчивых знаний и навыков уверенной практической работы. Основные цели данного курса:
- обучить студентов основам объектно-ориентированного про-граммирования на языке С+; научить студентов определять и использовать абстрактные типы данных - классы; использовать объектно-ориентированный подход к проектирова-нию программ; создать представление о вопросах качества и мотивации исполь-зования ООП.
Задачи:
Требования к уровню освоения содержания дисциплины
Студент должен знать:
- основные принципы объектно-ориентированного программирова-ния; базовые концепции программной инженерии; синтаксис и назначение основных конструкций языка программиро-вания С++.
Студент должен уметь:
- использовать основные методы и средства разработки алгоритмов; грамотно проектировать программы на языке С++ в рамках проце-дурной и объектно-ориентированной парадигм программирования; определять критерии, каким должен удовлетворять проект, чтобы его легко было сопровождать и модифицировать; использовать классы-шаблоны стандартной библиотеки языка С++ (STL) и обобщенные алгоритмы при написании программ; применять шаблоны (паттерны) проектирования. уверенно создавать приложения в средах быстрой разработки.
Студент должен иметь представления:
- об объектно-ориентированной парадигме программирования; о наследовании, как одного их эффективных инструментов повтор-ного использования кода; об алгоритмизации; о роли методах и средствах проектирования программного обеспече-ния.
Взаимосвязь дисциплин
Дисциплина «Объектно-ориентированные языки программирования» ориентирована на уровень знаний, полученных сту-дентами при изучении курсов «Информатика» и «Программирование на языках высоко-го уровня». Дисциплина входит в базовую часть профессионального цикла образовательной программы бакалавра (Б1.Б).
Предварительные компетенции, сформированные у обучающегося до начала изучения дисциплины:
ОК-1 | владением культурой мышления, способность к обобщению, анализу, восприятию информации, постановке цели и выбору путей ее достижения, умение логически верно, аргументированно и ясно строить устную и письменную речь |
Изучение дисциплины направлено на формирование следующих компетенций:
ПК-1 способностью проводить предпроектное обследование объекта проектирования, системный анализ предметной области, их взаимосвязей
ПК-12 способностью разрабатывать средства реализации информационных технологий (методические, информационные, математические, алгоритмические, технические и программные)
ПК-29 способностью проводить сборку информационной системы из готовых компонентов
ПК-32 способностью адаптировать приложения к изменяющимся условиям функционирования
Виды контроля:
текущий (контрольные опросы, сдача допуска к выполнению лабораторной работы, сдача лабораторной работы); промежуточный по результатам выполнения модулей бально-рейтинговой системы (контрольные работы, компьютерное тестирование); итоговый по результатам зимней зачетно-экзаменационной сессии (зачет, экзамен).2. Структура изучения дисциплины
Всего часов (общая трудоемкость в часах) | 252 |
Аудиторные занятия | 68 |
Лекции (в том числе, на основе интерактивных методов обучения) | 34 (10) |
Лабораторные занятия (в том числе, на основе интерактивных методов обучения) | 34 (10) |
Самостоятельные занятия | 139 |
Изучение основной и дополнительной литературы | 67 |
Подготовка к выполнению лабораторных работ | 36 |
Курсовая работа по дисциплине | |
Подготовка к контрольным работам | 36 |
Подготовка к экзамену, экзамен | 45 |
Интерактивные формы обучения
№ | Интерактивная форма занятий | Кол-во часов |
Лек. | Сем. | Лаб. |
Работа в малых группах (команде) – совместная деятельность студентов в группе под руководством лидера, направленная на решение общей задачи путем творческого сложения результатов индивидуальной работы членов команды с делением полномочий и ответственности. | 2 | 2 |
Проектная технология – индивидуальная или коллективная деятельность по отбору, распределению и систематизации материала по определенной теме, в результате которой составляется проект. | 2 | 2 |
Анализ конкретных ситуаций (case study) – анализ реальных проблемных ситуаций, имевших место в соответствующей области профессиональной деятельности, и поиск вариантов лучших решений. | 1 | 1 |
Ролевые и деловые игры – ролевая имитация студентами реальной профессиональной деятельности с выполнением функций специалистов на различных рабочих местах. | ||
Модульное обучение – использование знаний в виде: а) отдельных модулей, автономных частей курса, интегрируемых с другими частями курса; б) блоков взаимосвязанных курсов, которые можно изучать независимо от другого блока дисциплин. | ||
Контекстное обучение – мотивация студентов к усвоению знаний путем выявления связей между конкретным знанием и его применением. | ||
Развитие критического мышления – образовательная деятельность, направленная на развитие у студентов разумного, рефлексивного мышления, способного выдвинуть новые идеи и увидеть новые возможности. | 2 | 2 |
Проблемное обучение – стимулирование студентов к самостоятельному приобретению знаний, необходимых для решения конкретной проблемы. | 2 | 2 |
Индивидуальное обучение – выстраивание студентом собственной образовательной траектории на основе формировании индивидуальной образовательной программы с учетом интереса студента. | ||
Опережающая самостоятельная работа – изучение студентами нового материала до его изучения в ходе аудиторных занятий. | ||
Междисциплинарное обучение – использование знаний из разных областей, их группировка и концентрация в контексте решаемой задачи. | ||
Обучение на основе опыта – активизация познавательной деятельности студента за счет ассоциации их собственного опыта с предметом обучения. | 1 | 1 |
Информационно-коммуникационные технологии – обучение в электронной образовательной среде с целью расширения доступа к образовательным ресурсам (теоретически к неограниченному объему и скорости доступа), увеличения контактного взаимодействия с преподавателем, построения индивидуальных траекторий подготовки и объективного контроля и мониторинга знаний студентов (вебинары). | ||
Всего по видам занятий в интерактивной форме | 10 | 10 |
Всего аудиторных занятий в интерактивной форме | 20 |
3. Тематический план изучения дисциплины
3.1. Содержание и формы занятий
№ п/п | Тема | Форма занятий | Кол-во часов |
Разработка программ и объектно-ориентированное программирование | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Язык С++ | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Классы в языке С++ | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Конструкторы и деструкторы | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Константность и классы | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Статические компоненты классов | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Друзья классов | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Указатели и классы | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Конструктор копирования | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Перегрузка операций | Лекции Лабораторный практ. Самост. занятия | 2 2 9 | |
Наследование | Лекции Лабораторный практ. Самост. занятия | 4 4 9 | |
Полиморфизм в языке С++ | Лекции Лабораторный практ. Самост. занятия | 2 2 13 | |
Исключительные ситуации в С++ | Лекции Лабораторный практ. Самост. занятия | 2 2 14 | |
Классы потоков С++ | Лекции Лабораторный практ. Самост. занятия | 2 2 13 | |
Стандартная библиотека шаблонов (STL) | Лекции Лабораторный практ. Самост. занятия | 4 4 10 |
3.2. Содержание разделов дисциплины
Разработка программ и объектно-ориентированное программирование Жизненный цикл программного продукта. Абстракция. Абстрактные типы данных. Основные парадигмы программирования. Процедурное программирование. Модульное программирование. Объектно-ориентированное программирование. Основные цели объектно-ориентированного программирования. Объекты. Классы. Базовые принципы ООП: пакетирование (инкапсуляция), наследование, полиморфизм, передача сообщений. Объектно-ориентированные языки программирования. Язык С++ Цели создания языка С++. Операции языка С++. Динамическое распределение памяти в С++: операции new и delete. Операция расширения области видимости. Ссылки, особенности использования и отличие от указателей. Заголовочные файлы в С++. С Ввод-вывод в стиле С++. Классы в языке С++ Поддержка АТД в С++. Классы и объекты. Описание класса. Компонентные данные и компонентные функции. Спецификаторы доступа: открытые, защищенные и закрытые компоненты класса. Определение методов вне класса. Доступ к открытым и закрытым компонентным данным. Прямой и косвенный доступ к компонентам классов. Операции доступа. Скрытый указатель this. Конструкторы и деструкторы Конструктор по умолчанию. Конструктор инициализации. Конструктор копий. Свойства конструкторов. Перегрузка конструктора. Конструктор с присваиванием и со списком инициализации. Деструктор, его свойства. Явный вызов деструктора. Константность и классы Константные объекты и константные методы. Константы в классе. Инициализация нестатических полей класса. Константное возвращаемое значение для встроенных и абстрактных типов данных. Статические компоненты классов Статические переменные и функции. Статические компоненты классов. Особенности статических полей. Инициализация статических полей. Статические методы. Инициализация статических массивов объектов. Паттерн проектирования «синглет». Друзья классов Дружественные глобальные функции, дружественные методы классов и дружественные классы. Цели создания дружественных функций. Особенности дружественных функций. Указатели и классы Указатели на компоненты классов. Указатели на поля классов. Косвенная адресация полей классов. Указатели на методы классов. Косвенный вызов методов классов. Пример массива указателей на методы класса. Конструктор копирования. Поверхностное копирование. Побочные эффекты при работе функций. Глубокое копирование. Конструктор копирования. Свойства конструктора копирования. Предотвращение передачи объектов класса по значению. Перегрузка операций Механизмы реализации перегрузки операций. Особенности перегрузки операций. Компонентные функции операции. Дружественные функции-операции. Перегрузка унарных и бинарных операций. Перегрузка операций инкремента и декремента, префиксная и постфиксная формы. Перегрузка операции присваивания. Перегрузка операции индексирования. Функциональная и операторная формы перегрузки операций. Наследование Базовые и производные классы. Простое наследование. Множественное наследование. Ненаследуемые члены класса. Управление доступом к базовому классу. Виды наследования. Моделирование объектно-ориентированных проектов с помощью языка UML. Конструкторы, деструкторы и наследование. Предопределенные стандартные преобразования. Отношения между классами: «является», «содержит» и «подобен». Полиморфизм в языке С++ Связывание. Статическое и динамическое связывание. Виртуальные функции. Полиморфные объекты. Особенности виртуальных методов. Таблица виртуальных методов VTBL. Указатель VPTR. Виртуальные деструкторы. Абстрактные базовые классы. Чистые виртуальные функции. Полиморфизм функций Перегрузка функций. Неоднозначность и перегрузка. Определение адреса перегруженной функции. Шаблоны классов. Определение метода вне класса–шаблона. Инстанцирование (актуализация) шаблонов. Шаблоны функций: глобальные локальные функции. Специализация шаблонов. Композиция и шаблоны. Шаблоны и наследование. Особенности шаблонов. Исключительные ситуации в С++ Обработка исключительных ситуаций. Обработка ошибок в стандартном С. Генерирование исключений. Перехватывание исключений. Использование вложенных блоков try/catch. Раскрутка стека. Стандартные исключения в С++. Исключения и конструкторы. Информация о типе времени выполнения. Операторы приведения типа. Классы потоков С++ Предопределенные объекты и потоки. Операции помещения и извлечения из потока. Форматирование потока. Флаги форматирования. Манипуляторы. Неформатируемый ввод-вывод. Часто применяемые функции. Файлы с произвольным доступом. Опрос и установка состояния потока. Ошибки потоков. Файловый ввод-вывод с применением потоков С++. Открытие файлов в разных режимах. Ввод-вывод в файлы. Стандартная библиотека шаблонов (STL) Назначение и состав библиотеки. Контейнеры. Последовательные контейнеры. Векторы. Списки. Деки. Операции с деками. Объявление и инициализация дека. Стеки. Объявление и инициализация стека. Очереди. Объявление и инициализация очереди. Ассоциативные контейнеры. Уни-версальные алгоритмы.
3.3. Лабораторный практикум
№ | Наименование лабораторных работ |
От структур к классам. | |
Композиция классов. | |
Наследование. | |
Перегрузка операций. | |
Параметризованные классы (шаблоны классов). Перегруженные функции и функции-шаблоны. | |
Использование классов и алгоритмов библиотеки STL. | |
Разработка классов с учетом обработки исключительных ситуаций | |
Транзакции |
4. Минимальный фонд оценочных средств
Контроль изучения дисциплины
Зачет по лабораторному практикуму. Количество баллов за выполнение лабораторных работ учитывается при выставлении итоговой оценки за курс. Экзаменационные вопросы.
Средства ввода-вывода в языке С++ Операции языка С++. Операция выделения и освобождения памяти в С++. Абстракция данных и классы в языке С++. Конструкторы и деструкторы в классах. Наследование классов. Композиция классов. Константность и классы. Статические члены классов. Статическое и динамическое связывание. Виртуальные функции. Перегрузка операций. Особенности перегрузки унарных и бинарных операций. Друзья классов. Дружественные функции, методы и классы. Абстрактные базовые классы. Паттерны проектирования. Итератор и их важность в библиотеке STL. Шаблоны функций и классов в языке С++. Стандартная библиотека языка С++. Шаблоны классов. Стандартная библиотека языка С++. Обобщенные алгоритмы. Перегрузка функций в языке С++.
5. Учебно-методическое и программно-аппаратное обеспечения программы
5.1. Список литературы
Базовый учебник:
Хабибуллин на языке высокого уровня. C/C++. - СПб: БХВ-Петербург, 2006. - 512 с. (ЭБС «Айбукс»)
Основная литература:
, , Пугачев -ориентированное программирование : учебник для вузов / , , ; ред. - 3-е изд., стер. - М. : Изд-во МГТУ им. , 2007. - 366 с. (10 экз.) Влиссидес Дж. Приемы объектно-ориентированного проектирования. Паттерны проектирования. – Спб: Питер, 2010. – 366 с. (30 экз.)
Дополнительная литература:
илософия С++. Введение в стандартный С++. – Спб.: Пи-тер, 2004. – 572 с. (имеется электронный вариант) илософия С++. Практическое программиро-вание. – Спб.: Питер, 2004. – 608 с. (имеется электронный вариант) , Причард Дж. Дж. Абстракция данных и решение за-дач на С++. Стена и зеркала. М. – Издательский дом «Вильямс», 2003. – 848. , , Смирнов программирования С++. Харьков: Фолио; Ростов на Дону «Феликс», 2001. — 500 с.Перечень учебно-методического обеспечения для самостоятельной работы обучающихся
№ | Ссылка | Наименование и назначение ресурсов |
http://www. edu. ru | Федеральный портал «Российское образование» | |
http://www. intuit. ru | Портал Национального открытого университета ИНТУИТ | |
http://lib. volsu. ru | Электронная библиотека Волгоградского государственного университета | |
http://www. volsu. ru/umnik/. | Образовательный портал Волгоградского государственного университета «УМНИК ВолГУ» | |
http://ibooks. ru/ | ЭБС: IBooks. ru |
5.2. Программно-аппаратное обеспечение
Средства обеспечения освоения дисциплины.
Компилятор gcc/g++. Среды быстрой разработки программ: Code::Blocks, IBM Eclipse С++, MS Visual C++ 2008/2010.
Материально-техническое обеспечение дисциплины.
Персональные ЭВМ, обеспечивающие решение сложных пакетов прикладных программ. Компьютеры, подключенные к всемирной сети INTERNET.
5.3. Электронные ресурсы
Федеральный образовательный портал. Библиотека. Единое окно доступа к образовательным ресурсам:
http://window. edu. ru/library
Сайт кафедры информационных систем и компьютерного моделирования:
http://www. infomod. ru/
ФГУП НТЦ Информрегистр - Государственная регистрация обязательного экземпляра электронных изданий:
http://www. inforeg. ru/depoz
Информационный ресурс «Хабрахабр»:
http://habrahabr. ru/info/agreement/
Научная электронная библиотека:
http://elibrary. ru
МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ОРГАНИЗАЦИИ ИЗУЧЕНИЯ ДИСЦИПЛИНЫ
Самостоятельная работа является одним из видов учебных занятий, она в значительной мере определяет успех обучения в университете. Самостоятельная работа способствует приобретению глубоких и прочных знаний по изучаемым дисциплинам, вырабатывает умение ориентироваться в огромном потоке информации и дает навыки работы с учебной и научной литературой. Самостоятельная работа приучает делать обобщения и выводы, вырабатывает умение логично излагать изучаемый материал, формирует творческий подход, способствует использованию полученных знаний для разнообразных практических задач, развивает самостоятельность в принятии решений.
Необходимо помнить, что начинать самостоятельные занятия следует с начала семестра и проводить их регулярно. Очень важно приложить максимум усилий, чтобы заставить себя работать с полной отдачей. Необходимо помнить, что время учебы крайне ограничено, его нельзя растрачивать понапрасну. Следует осознать, что, если не использовать для занятий всего лишь один вечер в неделю, то за год их наберется не менее 40, т. е. полтора учебных месяца окажутся потерянными.
Успеху в самостоятельной работе способствует соблюдение некоторых правил. Прежде всего, следует приучить себя начинать работу немедленно, как только сели за стол. Надо работать сосредоточенно и все доводить до конца. Необходимо определить реальный объем работы и продумать последовательный план ее выполнения. Работать следует не спеша, но аккуратно, точно. Излишняя поспешность влияет на качество самостоятельной работы.
Необходимо самостоятельно планировать свое рабочее время, исходя из своих возможностей и приоритетов. Это создает более спокойную обстановку, что в итоге положительно сказывается на усвоении материала. Важно полнее осознать цели своей работы, уяснить, что является главным на данном этапе, какую последовательность работы выбрать, чтобы выполнить ее лучше и с наименьшими затратами времени и энергии.
Продуктивность работы зависит от правильного чередования труда и отдыха. Поэтому каждые час или два следует делать перерыв на 10-15 минут. Выходные дни лучше посвятить активному отдыху, занятиям спортом, прогулками на свежем воздухе и т. д. Даже переключение с одного вида умственной работы на другой может служить активным отдыхом.
В процессе обучения важнейшую роль играет самостоятельная работа с литературой. Без навыка правильного использования источников будет чрезвычайно трудно изучать программный материал, и много времени будет потрачено нерационально. Работа с книгой складывается из умения подобрать необходимые книги, разобраться в них, законспектировать, выбрать главное, усвоить и применить на практике.
Работу с книгой следует начать с беглого ознакомления, чтобы решить, есть ли там материал, необходимый для самостоятельной работы. В первую очередь, ознакомиться с титульной страницей, на которой указаны автор, название и год издания. На обороте титульной страницы обычно помещена аннотация, в которой дается сжатая характеристика книги с указанием, для какого круга читателей она предназначена. Особое внимание следует обратить на оглавление, так как оно раскрывает содержание книги. Предисловие позволит узнать, с какой целью книга написана, каким вопросам посвящена. В заключении книги подводятся итоги, делаются выводы. Чтение книги может быть сплошным и выборочным (чтение отдельных глав или разделов). Чтение должно быть вдумчивым, внимательным, при чтении не следует торопиться.
При чтении могут встретиться непонятные слова, термины и определения. В этих случаях следует обратиться к справочнику или соответствующему словарю. Не следует при чтении пропускать сноски и примечания, т. к. в них разъясняются отдельные места, дополняются сжато изложенные в тексте положения.
При чтении необходимо выделить основную мысль, представить прочитанное как единое целое. Это легче сделать, если при чтении каждого параграфа (раздела) самому себе ответить на вопросы, о чем говорится в данной части текста, чем сказанное подтверждается или поясняется.
Заключительным этапом изучения книги, статьи является запись, конспектирование прочитанного. Конспект - это сжатое логически связанное изложение прочитанного. В конспекте помещаются не только главные положения книги, но и аргументы (цифры, примеры, таблицы и т. д.). Конспект позволяет быстро восстановить в памяти содержание прочитанной книги. Кроме того, процесс конспектирования организует мысль, побуждает читающего к обдумыванию, к активному мышлению, улучшает качество усвоения и запоминания. Запись способствует выработке ясно, четко и лаконично формулировать и излагать мысль. Запись следует вести сжато и обязательно своими словами.
Помимо сказанного следует иметь в виду, что научиться извлекать из книги все полезное, овладеть рациональными методами чтения и конспектирования можно только на основании практического опыта регулярной работы с книгой.
Изучение дисциплины предусматривает (при необходимости) обеспечение обучающихся инвалидов и лиц с ограниченными возможностями здоровья учебно-методическими ресурсами в формах, адаптированных к состоянию их здоровья: полнотекстовые лекции, презентации в ПТК «УМКа», альтернативные индивидуальные задания в приемлемых формах, адаптированных к ограничениям здоровья (аудио-материалы, в письменной форме), выбор методик обучения с учетом их доступности для лиц с ограниченными возможностями и инвалидов.
В целях реализации индивидуального подхода к обучению студентов, осуществляющих учебный процесс по индивидуальной траектории в рамках индивидуального рабочего плана, изучение данной дисциплины базируется на следующих возможностях:
- индивидуальные консультации преподавателя (очно, в часы консультаций, по электронной почте, а также с использованием программ Skype, Wiber, TeamViewer, DropBox, а также возможностей социальных сетей);
- максимально полная презентация содержания дисциплины в ПТК «УМНИК» (см., в частности, полнотекстовые лекции, презентации, аудиоматериалы, тексты для перевода и анализа и т. п.).


