Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Б3.Б.5 Основы объектно-ориентированного программирования

.pdf
Скачиваний:
21
Добавлен:
28.03.2016
Размер:
1.59 Mб
Скачать

Рабочая программа дисциплины составлена в 2011 году в соответствии с требованиями ФГОС ВПО по направлению подготовки 230100 «Информатика и вычислительная техника» (квалификация (степень) «бакалавр») от 09.11.2009 г. № 553.

Пересмотрена в 2012 году на заседании методической комиссии факультета информационных технологий от 25.05.2012 № 48.

Пересмотрена в 2013 году на заседании методической комиссии факультета информационных технологий от 24.06.2013 № 53.

Изменена, дополнена и утверждена в 2014 году в соответствии с требованиями Порядка организации и осуществления образовательной деятельности по образовательным программам высшего образования – программам бакалавриата, программам специалитета, программам магистратуры (приказ Минобрнауки России от 19.12.2013 г. №

1367).

Разработчик: Кафедра общей информатики, Рылов Всеволод Юрьевич (кафедра, ФИО, ученая степень, ученое звание)

Рабочая программа дисциплины одобрена на заседании Методической комиссии факультета информационных технологий от 03.02.2014 года, протокол № 55.

2

Аннотация рабочей программы дисциплины

Дисциплина «Основы объектно-ориентированного программирования» входит в базовую часть профессионального цикла образовательной программы бакалавриата по направлению подготовки 230100 «Информатика и вычислительная техника».

Дисциплина реализуется на факультете информационных технологий НГУ кафедрой общей информатики.

Содержание дисциплины охватывает круг вопросов, связанных с теорией объектноориентированного программирования и особенностями ее поддержки и реализации основных принципов в языке программирования C++ и его стандартной библиотеке.

Дисциплина нацелена на формирование общекультурных ОК-1, ОК-6, ОК-8, ОК-12, профессиональных компетенций ПК-2, ПК-3, ПК-4, ПК-5, ПК-6 выпускника.

Преподавание дисциплины предусматривает проведение следующих видов учебных занятий: лекции, лабораторные занятия, самостоятельная работа обучающихся.

Рабочая программа дисциплины предусматривает проведение следующих видов контроля: текущий контроль успеваемости с использованием балльно-рейтинговой системы оценок за сдачу лабораторных заданий и коллоквиум в течение семестра и промежуточный контроль в форме экзамена.

Объем дисциплины 5 зачетных единиц, в том числе в академических часах по видам учебных занятий:

 

 

 

учебные занятия

 

 

форма

Сем

Общий

 

 

 

в том числе

 

 

промежуточ

естр

объем

 

контактная работа обучающихся с

 

СРС

ной

 

 

 

 

преподавателем

 

 

аттестации

 

 

Всего

 

 

 

из них

 

 

(зачет,

 

 

 

Лекции

 

Лабор

Практи

КСР

Конс

 

дифференци

 

 

 

 

 

ные

ческие

 

ульта

 

рованный

 

 

 

 

 

занят

занятия

 

ции

 

зачет,

 

 

 

 

 

ия

 

 

 

 

экзамен)

3

180

64

32

 

32

 

 

 

116

экзамен

3

1. Цели освоения дисциплины

Дисциплина «Основы объектно-ориентированного программирования» имеет своей целью:

Изучение основ классической теории объектно-ориентированного программирования, в том числе:

o Пути эволюции технологий программирования от алгоритмического к ООП

o Основных принципов объектно-ориентированного построения программных систем (Абстракция, Инкапсуляция, Иерархия, Модульность, Типизация, Параллелизм, Сохраняемость)

oПонятий классов, объектов, взаимоотношений между ними, а также многоуровневой модели OMG

Изучение средств объектно-ориентированного и обобщенного программирования языка С++, средств стандартной библиотеки STL

Выработку практических навыков проектирования и реализации объектноориентированных программ на языке программирования C++.

2.Место дисциплины в структуре образовательной программы

Дисциплина «Основы объектно-ориентированного программирования» входит в базовую часть профессионального цикла.

Изучение дисциплины опирается на курсы «Информатика», «Программирование», «Математическая логика и теория алгоритмов».

Предварительными требованиями к студентам являются:

Знание одного из классических процедурно-ориентированных языков, предпочтительно языка C

Знания в области алгоритмической декомпозиции, основных структур данных и технологий работы с ним

Знание основ теории множеств

Данный курс является предшествующим для следующих дисциплин: «Объектноориентированное программирование на Java», «Базы данных», «Инженерная и компьютерная графика», «Объектно-ориентированный анализ и дизайн».

3. Компетенции обучающегося, формируемые в результате освоения дисциплины (перечень планируемых результатов обучения)

В результате освоения данной дисциплины обучающийся демонстрирует следующие общекультурные и профессиональные компетенции:

Код компетенции

Формулировка

Планируемые результаты обучения (показатели

компетенции из ФГОС

достижения

заданного

уровня

освоения

 

компетенций)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОК-1

Владеет культурой

Знать: историю развития технологий разработки

 

мышления, способен к

программных систем;

 

 

 

 

 

обобщению, анализу,

Уметь:

оценивать

границы

применимости

 

восприятию информации,

технологий и методик разработки программ;

 

постановке цели и выбору

Владеть: объектно-ориентированной технологией

 

путей ее достижения

построения программных систем

 

 

4

ОК-6

Стремится к саморазвитию,

Владеть:

 

получить

 

практический

 

опыт

 

повышению своей

 

самостоятельного

решения

задач

по

 

квалификации и мастерства

проектированию и разработки программных систем

ОК-8

Осознает социальную

 

Знать: важность освоения изучаемой технологии и

 

значимость своей будущей

особенностей ее применения в решении задач

 

профессии, обладает

 

автоматизации во всех областях хозяйственной и

 

высокой мотивацией к

 

научно-исследовательской деятельности людей.

 

 

выполнению

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

профессиональной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

деятельности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ОК-12

Имеет навыки работы с

 

Уметь: использовать сеть Internet для поиска

 

компьютером как

 

документации, спецификаций, типовых способов

 

средством управления

 

решения задач при разработке программ;

 

 

 

 

информацией

 

 

Владеть: устойчивыми навыками использования

 

 

 

 

 

 

компьютеров и программных пакетов при

 

 

 

 

 

 

проектировании и реализации программ

 

 

 

ПК-2

Осваивать

 

методики

Знать:

основные

программные среды

и

средства

 

использования

 

 

разработки программ на языке C++;

 

 

 

 

 

программных

средств

для

Уметь: разрабатывать и тестировать программные

 

решения

практических

компоненты с использованием этих средств;

 

 

задач

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПК-3

Разрабатывать интерфейсы

Знать: средства стандартной библиотеки

C++ для

 

"человек-электронно-

 

реализации

 

интерфейсов

 

взаимодействия

с

 

вычислительная машина"

человеком

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Владеть: навыками построения простых (текстовых,

 

 

 

 

 

 

консольных) интерфейсов «человек-ЭВМ» при

 

 

 

 

 

 

решении

практических

 

задач

в

 

составе

 

 

 

 

 

 

лабораторных работ

 

 

 

 

 

 

 

ПК-4

Разрабатывать

модели

Знать:

основы

языка

моделирования

UML

для

 

компонентов

 

 

представления диаграмм и иерархий классов

 

информационных систем,

программных

 

систем

а

также

 

диаграмм

 

включая

модели

баз

взаимодействия объектов.

 

 

 

 

 

 

 

данных

 

 

 

 

Уметь: представлять модели классов программной

 

 

 

 

 

 

системы с использованием языка UML.

 

 

 

 

 

 

 

 

 

Владеть:

Инструментальными

программными

 

 

 

 

 

 

пакетами моделирования на языке UML

 

 

 

ПК-5

Разрабатывать компоненты

Знать: язык программирования C++;

 

 

 

 

 

программных комплексов и

Уметь:

пользоваться средой

разработки

Microsoft

 

баз данных, использовать

Visual Studio Express и языком C++, владеть

 

современные

 

 

технологией

 

 

 

объектно-ориентированного

 

инструментальные

 

программирования и использовать язык C++ для

 

средства

и

технологии

построения программных систем по этой

 

программирования

 

технологии.

 

 

 

 

 

 

 

 

 

 

ПК-6

Обосновывать

 

 

Знать: технологии автоматического модульного

 

принимаемые

проектные

тестирования программ на языке C++ с

 

решения,

осуществлять

использованием специализированных программных

 

постановку

и

выполнять

библиотек;

 

 

 

 

 

 

 

 

 

 

 

эксперименты по проверке

Уметь:

подтверждать

корректность

работы

 

их

корректности

и

программной

 

системы

 

путем

организации

 

эффективности

 

 

модульного

 

тестирования

и

представления

 

 

 

 

 

 

результатов тестов;

 

 

 

 

 

 

 

 

 

 

 

 

 

Владеть: практическими навыками написания

 

 

 

 

 

 

модульных тестов к программным компонентам в

 

 

 

 

 

 

процессе реализации практических заданий

 

5

4. Объем, структура и содержание дисциплины

4.1.Объем дисциплины составляет 5 зачетных единиц, 180 академических часов.

4.2.Структура дисциплины

Раздел (тема)

п/

дисциплины

п

 

1Эволюция методологий программирования. Основные принципы объектно-ориентированного программирования

2Объектно-ориентированная модель

3Классы, метамодель и основы UML

4Основные алгоритмические отличия C++ от C

5Средства объектного программирования языка

C++

6Средства объектноориентированного программирования С++

7Обобщенное

программирование

8Стандартная библиотека С++

Промежуточная аттестация

ИТОГО часов:

 

 

 

 

Контактная работа

 

 

 

 

 

обучающихся с

 

 

 

преподавателем по видам

 

 

 

 

учебных занятий (из

 

Семестр (из уч. плана)

 

учебного плана, в часах)

 

Неделя семестра

 

 

 

 

 

 

Лекции

 

Лабораторные занятия

Практические занятия

Контроль самостоятельной работы (КСР)

Консультации

3

1

2

 

2

 

 

 

3

2

2

 

2

 

 

 

3

3

2

 

2

 

 

 

3

4

2

 

2

 

 

 

3

5-8

8

 

8

 

 

 

3

9-11

6

 

6

 

 

 

3

12-

4

 

4

 

 

 

 

 

13

 

 

 

 

 

 

3

14-

6

 

6

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

32

 

32

 

 

 

 

 

 

 

 

 

 

 

 

работа обучающихся (из

часах)

Самостоятельная

учебного плана, в

 

1

3

4

3

14

10

7

11

63

116

Формы

текущего

контроля

успеваемо

сти

(по неделям семестра)

Форма

промежуто

чной

аттестации

(по семестрам, из учебного плана)

Защита лаб. работы №1

Защита лаб. работ №2, №3

Защита лаб. работы №4

Коллоквиу м (12) Защита лаб. работы №5

Защита лаб. работ №6, №7

Экзамен

6

4.3. Содержание дисциплины, структурированное по темам (разделам)

Лекции – 32 часов (из учебного плана)

Раздел

занятия

 

Кол-во часов

(тема),

Содержание занятий и ссылки на рекомендуемую

 

В

Код

 

интерак

литературу

всего

компетен

тивной

 

 

ции

 

 

форме

 

 

 

Тема 1

 

1. Основные принципы объектно-ориентированного

 

 

( ОК-1,

 

программирования

 

 

ОК-6,

 

1.1. Эволюция методологий программирования

 

 

ОК-8,

 

1.1.1. Начало начал, или первое поколение языков

 

 

ПК-5)

 

программирования.

 

 

 

 

1.1.2. Развитие алгоритмических абстракций, или

 

 

 

 

второе поколение языков программирования.

 

 

 

 

1.1.3. Модуль как единица построения программных

 

 

 

 

систем, третье поколение языков программирования.

 

 

 

 

1.1.4. Зарождение объектной модели, четвертое

 

 

 

 

поколение языков программирования.

 

 

 

1

1.1.5. Объектные языки программирования, объектно-

2

 

 

 

ориентированные языки программирования, объектно-

 

 

 

 

ориентированный анализ, дизайн и проектирование.

 

 

 

 

1.1.6. Парадигмы программирования.

 

 

 

 

1.2. Составные части объектного подхода

 

 

 

 

1.2.1. Абстрагирование

 

 

 

 

1.2.2. Инкапсуляция

 

 

 

 

1.2.3. Модульность

 

 

 

 

1.2.4. Иерархия

 

 

 

 

1.2.5. Типизация

 

 

 

 

1.2.6. Параллелизм

 

 

 

 

1.2.7. Сохраняемость

 

 

Тема 2

 

2. Объектно-ориентированная модель

 

 

( ОК-1,

 

2.1. Понятие объекта

 

 

ОК-6,

 

2.2. Свойства, присущие объектам

 

 

ОК-8,

 

2.2.1. Состояние

 

 

ПК-4)

2

2.2.2. Поведение

2

 

 

2.2.3. Идентичность

 

 

 

 

 

 

 

2.3. Отношения между объектами

 

 

 

 

2.3.1. Типы отношений

 

 

 

 

2.3.2. Связь (ассоциация)

 

 

 

 

2.3.3. Агрегация

 

 

Тема 3

 

3. Классы

 

 

(ОК-1,

 

3.1. Природа классов.

 

 

ОК-6,

 

3.2. UML – унифицированный язык моделирования.

 

 

ОК-8,

 

Четырехуровневая метамодель MOF

 

 

ОК-12,

 

3.3. Отношения между классами.

 

 

ПК-2,

3

3.3.1. Типы отношений

2

 

ПК-4,

3.3.2. Ассоциация

 

 

 

 

ПК-6)

 

3.3.3. Агрегация

 

 

 

 

3.3.4. Использование

 

 

 

 

3.3.5. Наследование

 

 

 

 

3.3.6. Инстанцирование

 

 

 

 

3.4. Отношения между классами и объектами

 

 

7

Тема 4

4. Основные алгоритмические отличия C++

 

(ОК-1,

4.1. Использование ссылок. Передача аргументов

 

ОК-6,

функции по ссылке.

 

ОК-8,

4.2. Использование констант.

 

ОК-12,

4.3. Логические тип и перечисления.

 

ПК-2,

4.4. Операторы управления динамической памятью,

 

ПК-3,

4 инициализация массивов.

2

ПК-4,

4.5. Структура программы, раздельная компиляция и

 

ПК-5,

особенности использования статической памяти.

 

ПК-6 )

4.6. Пространства имен и исключения (краткий обзор)

 

 

4.7. Библиотека ввода вывода (краткий обзор iostream)

 

 

4.8. Функциональный полиморфизм.

 

Тема 5

5. Средства объектного программирования языка C++

 

(ОК-1,

5.1. Представление объектов и классов.

 

ОК-6,

5.1.1. Реализация поведения объектов на примере

 

ОК-12,

добавления функций—членов в структуры. Структура

 

ПК-2,

как вырожденный класс.

 

ПК-3,

5.1.2. Структура объявления класса.

 

ПК-4,

5.1.3. Доступ к членам класса.

 

ПК-5,

5.1.4. Поля данных класса как механизм реализации

 

ПК-6)

состояния объекта.

 

 

5.1.5. Функции члены класса как механизм реализации

 

 

поведения объекта.

 

 

5.1.6. Спецификаторы доступа для обеспечения

 

 

инкапсуляции.

 

 

5.1.7. Средства управления жизнью объекта.

 

 

Конструкторы и деструкторы.

 

 

5.1.8. Конструирование и уничтожение объектов и

 

 

массивов объектов.

 

 

5.1.9. Особенности использования конструктора

 

5-8

копии, конструктора по умолчанию, оператора

8

 

присваивания.

 

 

5.1.10. Описание селекторов и модификаторов.

 

 

5.1.11. Перегрузка операторов C++ как реализация

 

 

поведения с предопределенным смыслом.

 

 

5.1.12. Дружественность как механизм нарушения

 

 

инкапсуляции. Достоинства и недостатки механизма

 

 

дружественности.

 

 

5.1.13. Статические поля и методы классов.

 

 

Инициализация статических полей.

 

 

5.2. Реализация отношений между объектами и

 

 

классами

 

 

5.2.1. Ассоциация и агрегация объектов и классов.

 

 

Зависимость по времени жизни.

 

 

5.2.2. Использование и зависимость от интерфейсов.

 

 

5.2.3. Объекты при передаче параметров и возврате из

 

 

методов.

 

 

5.2.4. Варианты реализации отношения клиент-сервер.

 

 

5.2.5. Внутренние классы.

 

8

Тема 6

6. Средства объектно-ориентированного

 

(ОК-1,

программирования С++

 

ОК-6,

6.1. Наследование как средство организации иерархий

 

ОК-12,

классов. Принцип замещения Лисковой.

 

ПК-2,

6.2. Одиночное наследование.

 

ПК-3,

6.2.1. Понятие производного класса.

 

ПК-4,

6.2.2. Управление доступом в производных классах.

 

ПК-5,

6.2.3. Конструкторы и деструкторы, совмещение имен

 

ПК-6)

методов при наследовании, иерархии.

 

 

6.2.4. Абстрактные классы и виртуальные функции.

 

 

6.2.5. Виртуальный полиморфизм.

 

 

6.2.6. Информация о типе на этапе выполнения. RTTI.

 

 

6.3. Множественное наследование

 

 

6.3.1. Проблема множественного наследования.

 

 

Виртуальное наследование как средство разрешения

 

 

коллизий.

 

 

6.3.2. Порядок вызовов конструкторов и деструкторов

 

9-11

при множественном наследовании.

6

6.3.3. Чистые виртуальные классы, понятие

 

 

 

интерфейса.

 

 

6.3.4. Принципы дизайна иерархий классов. OCP, DIP,

 

 

ISP.

 

 

6.4. Пространства имен.

 

 

6.4.1. Пространства имен как средство реализации

 

 

модульности.

 

 

6.4.2. Поиск имен и разрешение конфликтов.

 

 

6.4.3. Объединение пространств имен.

 

 

6.4.4. Принципы дизайна пакетов.

 

 

6.5. Обработка исключений.

 

 

6.5.1. Обработка ошибок.

 

 

6.5.2. Группировка и перехват исключений.

 

 

6.5.3. Управление ресурсами.

 

 

6.5.4. Исключения и эффективность.

 

 

6.5.5. Альтернативные методы обработки ошибок.

 

 

6.5.6. Стандартные исключения.

 

Тема 7

 

7. Обобщенное программирование.

 

(ОК-1,

 

7.1. Шаблоны классов.

 

ОК-6,

 

7.1.1. Определение шаблона.

 

ОК-12,

12-

7.1.2. Инстанцирование.

 

ПК-2,

7.1.3. Параметры шаблонов и проверка типов.

4

13

ПК-3,

7.2. Шаблоны функций.

 

ПК-4,

 

7.3. Специализация.

 

ПК-5,

 

7.4. Наследование и шаблоны.

 

ПК-6)

 

 

 

9

Тема 8

 

8. Стандартная библиотека С++

 

 

(ОК-1,

 

8.1. Библиотека стандартных шаблонов

 

 

ОК-6,

 

8.1.1. Общие сведения (понятия контейнеров,

 

 

ОК-12,

 

итераторов и объектов-функций)

 

 

ПК-2,

 

8.1.2. Контейнеры (виды контейнеров,

 

 

ПК-3,

 

последовательные и ассоциативные контейнеры,

 

 

ПК-4,

 

адаптеры)

 

 

ПК-5,

 

8.1.3. Итераторы (итератор как обобщение указателя,

 

 

ПК-6 )

 

классы итераторов)

 

 

 

14-

8.1.4. Алгоритмы (примеры алгоритмов с

6

 

 

16

использованием итераторов: алгоритмы сортировки,

 

 

 

 

 

 

алгоритмы, не изменяющие содержание контейнера,

 

 

 

 

алгоритмы, изменяющие содержание контейнера)

 

 

 

 

8.2. Библиотека ввода-вывода

 

 

 

 

8.2.1. Потоки вывода. Вывод типов определяемых

 

 

 

 

пользователем.

 

 

 

 

8.2.2. Потоки ввода. Ввод типов определяемых

 

 

 

 

пользователем.

 

 

 

 

8.2.3. Форматирование в потоках ввода-вывода.

 

 

 

 

8.2.4. Буферизация.

 

 

 

 

Итого

32

 

Лабораторные занятия – 32 часов (из учебного плана)

Раздел (тема), Код компетенц

ии

Тема1 – Тема 3

( ОК-1,

ОК-6, ОК- 8, ОК-12, ПК-2, ПК- 3, ПК-4, ПК-5, ПК- 6 )

Тема 4 ( ОК-1,

ОК-6, ОК- 8, ОК-12, ПК-2, ПК- 3, ПК-4, ПК-5, ПК- 6 )

Тема 5 ( ОК-1,

ОК-6, ОК- 8, ОК-12, ПК-2, ПК- 3, ПК-4, ПК-5, ПК- 6 )

№ занятия

1-3

4

5-8

 

Кол-во часов

Содержание занятий и ссылки на рекомендуемую

 

В

 

интерак

литературу

всего

тивной

 

 

 

 

форме

Раздельная компиляция и пространства имен,

 

 

Реализация и сдача программы задания № 1

 

 

 

6

3

Перегрузка функций, указатели на функции, перечисления, Реализация и сдача программы задания № 2

2 1

Классы. Реализация упрощенного григорианского календаря Реализация и сдача программы задания № 3

Классы. Перегрузка операций. Реализация матрицы и 8 4 вектора Реализация и сдача программы задания № 4

10