o Объектно-ориентированное программирование
Бакалавриат | Министерство образования и науки Российской Федерации Владивостокский государственный университет экономики и сервиса Институт информатики, инноваций и бизнес-систем Кафедра информационных систем и прикладной информатики ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Рабочая программа учебной дисциплины Основная образовательная программа 080500«Бизнес-информатика» Владивосток Издательство ВГУЭС 2014 |
ББК 32.9
Рабочая программа учебной дисциплины «Объектно-ориентированное программирование» составлена в соответствии с требованиями ООП 080500«Бизнес-информатика» на базе ФГОС ВПО.
Автор-составитель: ., ассистент кафедры информационных систем и прикладной информатики
Утверждена на заседании кафедры информационных систем и прикладной информатики от 01.01.2001 г., протокол № 10
Утверждена на заседании Учёного совета института ИИБС от 01.01.2001г., протокол
© Издательство Владивостокского
государственного университета
экономики и сервиса, 2014
ВведеНИЕ
Дисциплина «Объектно-ориентированное программирование» относится к циклу общепрофессиональных дисциплин направлений подготовки 080500«Бизнес-информатика» и введена в учебные планы в соответствии с требованиями ФГОС ВПО указанных специальностей.
Дисциплина базируется в основном на знаниях основ программирования – таких дисциплинах, как «Программирование», «Алгоритмизация и программирование».
Знания, полученные при изучении дисциплины «Объектно-ориентированное программирование» используются в последующих дисциплинах, связанных с разработкой информационных систем и в практической деятельности инженера.
Данная программа составлена в соответствии с ФГОС ВПО специальностей 080500«Бизнес-информатика».
1. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ
1.1. Цели освоения учебной дисциплины
Целью изучения дисциплины «Объектно-ориентированное программирование» является теоретическая и практическая подготовка студентов в области разработки программного обеспечения с использованием объектно-ориентированной модели современных языков программирования. Знания, полученные в результате освоения дисциплины, помогут при разработке системных программных компонентов современных информационных и расчетных программ, в проектировании и реализации системных компонентов операционных систем в такой степени, чтобы студенты могли самостоятельно выбирать средства реализации, находить необходимые программные и технологические решения для практически важных системных и предметно-ориентированных задач. Основные задачи изучения дисциплины:
- приобретение студентами знаний о сущности объектно-ориентированного подхода в программировании;
- ознакомление с технологиями создания новых типов данных в различных языках программирования;
- приобретение практических навыков по использованию средств переопределения операций, обработки исключений.
1.2. Место учебной дисциплины в структуре ООП
(связь с другими дисциплинами)
В результате теоретического изучения дисциплины студент должен приобрести следующие компетенции: - владение основными средствами языка С++ для разработки классов; - владение способами создания объектно-ориентированных алгоритмов и программ; - ориентирование в современных технологиях разработки объектно-ориентированного программного обеспечения и прикладных программ; - понимание сущности механизма обработки исключений.
В результате практического освоения дисциплины студент должен уметь: правильно формулировать требования к объектно-ориентирован-ным программам и задачам в соответствии с конкретной предметной областью, производить декомпозицию задачи и реализовывать решение на адекватно выбранном языке программирования.
Знания полученные по дисциплинам: «Информатика и программирования (модуль 1)» и «Информатика и программирование (модуль 2)» непосредственно используются в работе на занятиях и являются базовыми для дисциплины: «Объектно-ориентированное программирование».
1.3. Компетенции обучающегося,
формируемые в результате освоения
учебной дисциплины
В результате изучения дисциплины будут сформированы следующие компетенции.
1 | 2 | 3 |
080500«Бизнес-информатика» | Общепрофессиональные | ПК-15 проектировать и внедрять компоненты ИТ-инфраструктуры предприятия, обеспечивающие достижение стратегических целей и поддержку бизнес-процессов |
ПК-18 разрабатывать контент и ИТ-сервисы предприятия и Интернет-ресурсов |
В результате освоения дисциплины у обучающегося должны быть сформированы знания, умения, владения.
ООП | Коды компетенций | Составляющие компетенции | |
080500«Бизнес-информатика» | ПК-15 | Знания | основные понятия объектно-ориентированного анализа; основные технологии программирования |
Умения | использовать объектно-ориентированный анализ для разработки программного обеспечения | ||
Владения | методами и инструментальными средствами разработки программ | ||
ПК-18 | Знания | основные технологии программирования | |
Умения | программировать, используя объектно - ориентированный подход | ||
Владения | методами и инструментальными средствами разработки программ |
1.4. Основные виды занятий
и особенности их проведения
Объем и сроки изучения дисциплины:
Для студентов третьего курса направления «Прикладная информатика» курс читается в весеннем семестре. Общая трудоемкость дисциплины составляет 4 зачетных единиц, 144 часов. Из них 68 час – аудиторной работы, 67 часов – самостоятельной работы. Промежуточная аттестация по курсу – экзамен.
Для студентов третьего курса направления «Информационные системы и технологии» курс читается в весеннем семестре. Общая трудоемкость дисциплины составляет 5 зачетных единицы, 180 часов. Из них 68 час – аудиторной работы, 76 часов – самостоятельной работы. Удельный вес занятий, проводимых в интерактивных формах, составляет 20 процентов аудиторных занятий. Промежуточная аттестация по курсу – экзамен.
1.5. Виды контроля и отчетности по дисциплине
В ходе изучения дисциплины предусматриваются следующие виды контроля знаний студентов: текущая и промежуточная аттестация. Текущая аттестация предназначена для контроля знаний студентов в середине семестра и включает: защиту отчетов по выполняемым лабораторным работам; оценку знаний и умений студентов при проведении консультаций по лекционным и лабораторным занятиям. Текущая аттестация проводится в форме защит лабораторных, работ и является фактическим допуском к экзамену в соответствии с Положением о рейтинговой системе оценки успеваемости студентов во Владивостокском государственном университете экономики и сервиса. Результаты текущей и промежуточной аттестаций заносятся в ведомость установленной формы (возможно в цифровой форме).
Промежуточная аттестация – экзамен в седьмом семестре. Условием допуска студента к экзамену является успешное прохождение двух текущих аттестаций в соответствии с требованиями Положения о рейтинговой системе оценки успеваемости студентов во ВГУЭС. Кроме того, студент должен выполнить и защитить не менее 60% всех лабораторных работ. Итоговая оценка формируется на основе результатов текущих и промежуточной аттестаций. Для студентов заочной формы обучения для допуска к экзамену необходимо защитить 60% лабораторных работ.
2. СТРУКУРА и СОДЕРЖАНИЕ
УЧЕБНОЙ ДИСЦИПЛИНЫ
2.1. Темы лекций
Тема 1. Сущность объектно-ориентированного подхода в программировании. Цикл разработки программного обеспечения (ПО), назначение и содержание этапов. Роль анализа в процессе разработки программного обеспечения. Основные понятия объектно-ориентированного анализа. Язык С++. Язык Java.
Тема 2. Классы и объекты. Отношения, основные типы отношений. Язык UML. Основные средства анализа и моделирования предметной области в языке UML. Статические данные. Конструктор, деструктор. Операции new и delete.
Тема 3. Объектно-ориентированная методология программирования. Технология применения объектно-ориентированных языков, их классификация и архитектура. Перегрузка операций. Преобразование типов.
Тема 4. Наследование, базовый и производный классы. Простое и сложное наследование. Абстракция данных, наследование и полиморфизм.
Тема 5. Виртуальные функции. Дружественные функции. Дружественные классы.
Тема 6. Шаблоны функций. Шаблоны классов. Исключения. Стандартная библиотека шаблонов.
Тема 7. Потоки и файлы. Стандартная библиотека классов для управления потоками. Методы и средства организации и программирования интерфейса.
Тема 8. Стандарты кодирования и их проекция на объектно-ориентированную модель программирования. Объектный подход к разработке ПО для распределенных систем.
2.2. Перечень тем практических/лабораторных занятий
1. Создайте структуру с именем time. Три еѐ поля, имеющие тип int, будут называться hours, minutes и seconds. Напишите программу, которая просит пользователя ввести время в формате часы, минуты, секунды. Программа должна хранить время в структурной переменной типа time и выводить количество секунд в введенном времени.
2. Создайте перечисление с именем pets и значениями dog, cat, rat, fish, bird. Создайте структуру с именем animal. Определите еѐ поля: name как массив из 20 символов типа char, type как типа pets и age типа float, хранящие, соответственно, имя животного, его разновидность и возраст. Напишите программу, которая создает 4 переменные типа ani-mal и просит пользователя ввести значения разновидности, имени и возраста всех 4 животных. Причем разновидность животного вводится по первому символу, набранному на клавиатуре (т. е. если нажали d, то в соответствующее поле вводится значение dog). В качестве результата программа должна выдать список всех имеющихся животных со всеми значениями полей
3. Создайте класс с именем Time, содержащий три поля типа int, предназначенных для хранения часов, минут и секунд. Один из конст-рукторов класса должен инициализировать поля нулевыми значениями, а другой – заданным набором значений. Создайте метод класса, кото-рый будет выводить значения полей на экран, в формате 23:59:59 и ме-тод, складывающий значения двух объектов типа Time, передаваемых ему в качестве аргументов. Продемонстрируйте работу класса.
4. Создайте класс с именем fraction, содержащий два поля типа int – числитель и знаменатель обыкновенной дроби. Конструктор класса должен инициализировать их заданным набором значений. Создайте метод класса, который будет выводить дробь на экран в формате x / y, метод, складывающий две дроби, переданные ему в параметрах и метод, умножающий две дроби, переданные ему в параметрах.
5. Опишите класс fraction, у которого поля x и y задают числитель и знаменатель обыкновенной дроби. Перегрузите для этого класса арифметические операции сложения, вычитания, умножения и деления так, чтобы они могли оперировать как с объектами класса, так и с чис-лами (то есть выполнять например, не только действие 3/4 +2/5, но и 1/2 + 4 или 2* 5/6). Также перегрузите операции сравнения == и!=. Проде-монстрируйте работу класса.
6. Определить класс vector2 как вектор на плоскости с данными x и y. Определить для него операции сложения, вычитания и скалярного произведения, определить функцию присваивания значения координа-там вектора и функцию вывода значений на консоль. Определить класс vector3 как вектор в пространстве, породив его от класса vector2. Пере-определить для него функции и операции. Продемонстрировать работу класса.
7. Создать абстрактный класс Figure с виртуальными методами вычисления площади и периметра. Создать производные классы: Rectangle (прямоугольник), Circle (круг), Triangle (треугольник). Описать в производных классах функции вычисления периметра и площади, про-демонстрировать работу механизма виртуальных функций.
8. Создать шаблон функции, возвращающей среднее арифметиче-ское всех элементов массива. Аргументами функции должны быть имя и размер массива (типа int). Создать шаблон функции, возвращающей значение максимального элемента массива. Аргументами функции должны быть имя и размер массива (типа int). Создать шаблон функции, обменивающей местами значения двух передаваемых ей по ссылке ар-гументов. Создать шаблон функции, осуществляющей сортировку дан-ных массива. Аргументами функции должны быть имя и размер массива (типа int). Продемонстрировать работу шаблонов на данных различных типов, в том числе, на данных вновь созданного класса – вектор на плоскости, определив для него операции сравнения.
3. ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ
Программой дисциплины предусмотрено чтение лекций, проведение лабораторных занятий, выполнение самостоятельной работы, а также проведение консультаций для всех видов выше указанных занятий.
Лекционные занятия проводятся в лекционных аудиториях в виде 2-часовых занятий не чаще одного раза в неделю. При проведении лекционных занятий используется специальное оборудование (персональный компьютер, оснащенный проектором с демонстрационным экраном) для демонстрации презентаций.
Лабораторные работы проводятся в компьютерных классах, где студенты реализуют проекты по разработке ПС. Работа над проектом организована в виде командной работы. На занятиях обсуждают возникающие вопросы и проблемы, разбирают и анализируют, полученные результаты.
Самостоятельная работа подразумевает подготовку студентов к лекционным и лабораторным занятиям, на основании материалов лекций и рекомендованных программой учебников и учебных пособий. Студентам предлагается для самостоятельного изучения теоретического материала написание рефератов и выступление с докладами по отдельным темам согласно учебной программы дисциплины.
4. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ
ПО ИЗУЧЕНИЮ КУРСА
4.1. Перечень и тематика самостоятельных работ студентов по дисциплине
В рамках общего объема часов, отведенных для изучения дисцип-лины, предусматривается выполнение следующих видов самостоятель-ных работ студентов (СРС): изучение теоретического материала при подготовке к защите лабораторных работ, итоговое повторение теоре-тического материала. Для закрепления материала и приобретения навыков самостоятельного написания объектно-ориентированных программ рекомендуется выполнение следующих задач:
1. Написать шаблон класса для работы с очередью FIFO. Определить функции включения и исключения элементов. Добавить механизм обработки исключений при превышении размера очереди и при попытке удалить данные из пустой очереди. Это можно сделать, добавив элемент данных – счетчик текущего числа элементов. Исключения генерируются, если счетчик превысил размер массива или если он стал меньше 0.
2. Опишите классы PointXY и PointPolar, объекты которых задают декартовы и полярные координаты точки на плоскости. Перегрузите для этих классов операции сложения, вычитания и умножения как скаляр-ного произведения, так, чтобы в них могли участвовать объекты как одного, так и обоих классов. Кроме того, задайте функцию преобразо-вания одного класса в другой (для обоих классов).
3. Определить класс stack, который позволяет реализовать структу-ру данных типа стек для хранения целых чисел. Конструктор класса должен содержать параметр, определяющий размер стека. Определить для класса функции pop() (достать из стека), push() (положить в стек) и операцию определения текущего размера стека. Функции должны осу-ществлять проверку на выход за пределы стека. Определить класс fifo, реализующий структуру данных типа очередь для хранения целых чи-сел, породив его от класса stack, добавив нужные поля и переопределив функции pop(), push() и определение текущего размера очереди. Проде-монстрировать работу.
4. В любой визуальной среде создать класс Figure с виртуальным методом draw(), осуществляющим прорисовку объекта на визуальном компоненте. Создать производные классы: Rectangle (прямоугольник), Circle (круг), Triangle (треугольник). Описать в производных классах функции draw() для каждой из фигур, продемонстрировать работу меха-низма виртуальных функций. Эти же задачи выполняют студенты заочной формы обучения в качестве контрольной работы. Для выполнения лабораторных работ студент должен предварительно самостоятельно освоить теоретический материал соответствующих тем. Для защиты работы он должен знать теоретический материал и продемонстрировать знание путем написания программ. Объем СРС, отводимый на эту работу составляет 49 часов. На подготовку к экзамену отводится 20 часов СРС.
4.2. Контрольные вопросы
для самостоятельной оценки качества освоения
учебной дисциплины
К лекции 1
1. Как называется защита данных класса от несанкционированного доступа другими функциями?
2. Как называется возможность выполнения оператором или функ-цией различных действий в зависимости от типа операндов?
3. Операция, выполняющая заданные действия не только над встро-енным, но и над пользовательским типом данных называется:
а) полиморфической;
б) инкапсулированной;
в) классифицированной;
г) перегруженной.
4. Структура объединяет:
а) данные одного типа;
б) логически связанные данные;
в) целые именованные значения;
г) переменные.
5. Какой заголовочный файл нужно включить в исходный текст, чтобы использовать объекты cin и cout.
6. Напишите оператор, который получает с клавиатуры числовое значение и присваивает его переменной temp.
7. Опишите структуру, содержащую три переменные типа int с названиями hrs, mins и secs. Назовите структуру именем time.
8. Истинно ли следующее утверждение: при определении струк-туры выделяется память под переменную?
9. Напишите оператор, присваивающий полю hrs структурной пе-ременной time2 значение, равное 11.
10. Сколько байтов памяти займут три структурные переменные типа time, если структура time содержит три поля типа int.
11. Истинно ли следующее утверждение: вы можете присвоить значение одной структурной переменной другой структурной перемен-ной того же типа?
12. Перечисление объединяет
а) данные различных типов; б) логически связанные переменные; в) именованные целые числа; г) константные значения.
13. Напишите оператор, описывающий перечисление с именем players и набором значений B1, B2, SS, B3, RF, CF, LF, P, C.
14. Считая, что перечисление players задано так. Как в предыду-щем вопросе, определите переменные joe и tom типа players и присвойте им значения LF и P соответственно.
15. Первые три константы перечисляемого типа обычно представ-ляются числами __, __, и __.
16. Напишите оператор, в котором объявляется перечисляемый тип speeds с константами obsolete, single и album. Присвойте этим констан-там целые значения 78, 45, 33.
17. Объясните, почему объявление в языке С++
enum isWord {NO, YES}; более удачно, чем enum isWord {YES, NO};
К лекции 2
1. В определении класса члены класса с ключевым словом private доступны:
а) любой функции программы;
б) в случае, если известен пароль;
в) методам этого класса;
г) только открытым членам класса.
2. Напишите определение класса studentgroup, включающего одно закрытое поле типа int с именем number и одним открытым методом с прототипом void add().
3. Истинно ли следующее утверждение: поля класса должны быть закрытыми.
4. Для чего при работе с объектами применяется операция «точка»?
5. Для чего при работе с объектами применяется операция «стрел-ка»?
6. Что такое конструктор?
7. Как задается имя конструктора?
8. Может ли класс иметь более одного конструктора?
9. Методу класса всегда доступны данные
а) объекта, членом которого он является;
б) класса, членом которого он является;
в) любого объекта класса, членом которого он является.
10. Что является единственным формальным различием между струк-турами и классами в С++?
11. Пусть определены три объекта класса. Сколько копий полей клас-са содержится в памяти? Сколько копий методов класса?
12. Константный метод, вызываемый для объекта класса
а) может изменить как константные, так и неконстантные поля;
б) может изменить только неконстантные поля;
в) может изменять только константные поля;
г) не может изменять никакие поля.
13. Для чего нужно объявление поля класса со словом mutable
14. Что такое деструктор
15. Какие свойства приобретает поле данных класса, объявленное как static
16. В чем состоит преимущество определения конструктора со спи-ском инициализации элементов?
17. Для чего необходимо переопределять операции new и delete.
18. Какие свойства приобретает элемент-функция класса, если она объявлена как статическая
19. Что такое указатель this?
К лекции 3
1. Для чего в С++ применяется перегрузка операций?
2. Истинно ли следующее утверждение: операция >= может быть перегружена?
3. Сколько аргументов требуется для определения перегруженной унарной операции?
4. Сколько аргументов требуется для определения перегруженной бинарной операции?
5. Чем отличается действие операции ++ в префиксной форме от еѐ действия в постфиксной форме?
6. Истинно ли следующее утверждение: перегруженная операция всегда требует на один аргумент меньше, чем количество операндов?
7. Когда перегружается операция арифметического присваивания, то результат
а) передается объекту справа от операции;
б) передается объекту слева от операции;
в) передается объекту, вызвавшему операцию;
г) должен быть возвращен.
8. Какой механизм преобразования от определенного пользовате-лем класса к встроенному типу может быть использован в языке С++?
9. Какой механизм преобразования от встроенного типа данных к определенному пользователем может быть использован в языке С++?
10. Истинно ли следующее утверждение: компилятор не выдаст со-общение об ошибке, если вы перегрузите операцию * для выполнения деления?
11. Если объект objA принадлежит классу A, объект objB принад-лежит классу B, и требуется записать objA = objB, поместив при этом функцию преобразования в класс A, то какую разновидность процедуры преобразования типа можно использовать?
12. Существуют ли операции, которые нельзя перегружать?
13. Что такое конструктор преобразования?
14. Для чего используется ключевое слово explicit
К лекции 4
1. В чем состоит назначение наследования?
2. Когда программисту-разработчику целесообразно прибегнуть к наследованию?
3. Напишите первую строку описания класса Child, который явля-ется public-производным от класса Parent.
4. Верно ли утверждение: создание производного класса требует коренных изменений в базовом классе?
5. Члены базового класса, для доступа к ним методов производно-го класса должны быть объявлены как public или ________.
6. Пусть базовый класс содержит метод basefunc(), а производный класс не имеет такого метода. Может ли объект производного класса иметь доступ к методу basefunc().
7. Истинно ли следующее утверждение: если конструктор произ-водного класса не определен, то объекты этого класса будут использо-вать конструкторы базового класса?
8. Как используется оператор разрешения области действия для разрешения неопределенностей?
9. Истинно ли следующее утверждение: иногда полезно создать класс, объектов которого никогда не будет создано?
10. Пусть класс Derv является дочерним от класса Base. Пусть оп-ределена переменная типа Derv, расположенная в функции main(). Через эту переменную можно получить доступ к
а) членам класса Derv, объявленным как public; б) членам класса Derv, объявленным как protected; в) членам класса Derv, объявленным как private; г) членам класса Base, объявленным как public; д) членам класса Base, объявленным как protected; е) членам класса Base, объявленным как private.
11. Пусть существует класс Derv, производный от класса Base. На-пишите объявление конструктора производного класса, принимающего один аргумент и передающего его в конструктор базового класса.
12. Истинно ли следующее утверждение: невозможно сделать объ-ект одного класса членом другого класса?
К лекции 5-6
1. Какие возможности перед программистом открывают вирту-альные функции?
2. Истинно ли утверждение о том, что указатель на базовый класс может ссылаться на объекты порожденного класса?
3. Пусть указатель p ссылается на объекты базового класса и со-держит адрес объекта порожденного класса. Пусть в обоих этих классах имеется невиртуальный метод ding(). Тогда выражение p->ding() вызо-вет метод ding() из ……… класса.
4. Напишите описание для виртуальной функции dang(), возвра-щающей результат void и имеющей аргумент типа int.
5. Пусть указатель p ссылается на объекты базового класса и со-держит адрес объекта порожденного класса. Пусть в обоих этих классах имеется виртуальный метод ding(). Тогда выражение p->ding() вызовет метод ding() из ……… класса.
6. Напишите описание для чистой виртуальной функции aragorn(), не возвращающей значений и не имеющей аргументов.
7. Чистая виртуальная функция, это виртуальная функция, которая:
а) делает свой класс абстрактным;
б) не возвращает результата;
в) используется в базовом классе;
г) не имеет аргументов.
8. Напишите определение массива parr, содержащего 10 указате-лей на объекты класса dong.
9. Абстрактный класс используется тогда, когда
а) не планируется создавать порожденные классы;
б) есть несколько связей между двумя порожденными классами
в) необходимо запретить создавать объекты класса
10. Истинно ли утверждение о том, что дружественная функция имеет доступ к скрытым данным класса, даже не являясь его методом?
11. Напишите описание дружественной функции harry(), возвра-щающей результат типа void и имеющей один аргумент класса george.
12. Ключевое слово friend появляется в:
а) классе, разрешающем доступ к другому классу;
б) классе, требующем доступа к другому классу;
в) разделе скрытых компонентов класса;
г) разделе общедоступных компонентов класса.
К лекции 7-8
1. Шаблоны позволяют удобным способом создать семейство
а) переменных;
б) функций;
в) классов;
г) программ.
2. Истинно ли утверждение, что шаблоны автоматически создают разные версии класса в зависимости от введенных пользователем данных?
3. Напишите шаблон функции, всегда возвращающей свой аргумент, умноженный на 2.
4. Шаблонный класс:
а) работает с разными типами данных;
б) генерирует идентичные объекты;
в) генерирует классы с различным числом методов.
5. Истинно ли утверждение, что шаблон может иметь несколько ар-гументов?
6. Реальный код шаблонной функции генерируется при:
а) объявлении функции в исходном коде;
б) вызове функции в исходном коде;
в) запуске функции во время работы программы.
7. В каких случаях целесообразни прибегать к шаблонным классам?
8. При работе с механизмом исключений в С++ используются сле-дующие ключевые слова: ____, ______, ____.
9. Напишите выражение, генерирующее исключение, используя класс BoundsError.
10. Исключения передаются
а) из блока-ловушки в блок повторных попыток;
б) из выражения, создавшего исключительную ситуацию, в блок повторных попыток;
в) из точки, где возникла ошибка, в блок-ловушку.
11. Истинно ли утверждение о том, что программа может продол-жить свое выполнение после возникновения исключительной ситуации?
4.3. Методические рекомендации по организации СРС
Для проведения лабораторных работ и самостоятельного изучения дисциплины используются компиляторы языков программирования C++ (С++ Builder, Turbo C++ Explorer, devcpp).
4.4. Рекомендации по работе с литературой
Дисциплина "Объектно-ориентированное программирование" от-носится к относительно устоявшейся к настоящему времени области программирования. По тематике курса выпущено большое количество классических печатных изданий, в качестве основы можно рекомендо-вать книги [1-3]. В них содержаться основные принципы языка С++, готовые полномасштабные приложения, небольшие примеры, пояс-няющие теорию и множество полезных иллюстраций. Книги содержать множество упражнений, позволяющих проверить знания по всем темам. Для освоения практических аспектов дисциплины с точки зрения проектирования программных систем рекомендуются книги [4, 5].
5. УЧЕБНО-МЕТОДИЧЕСКОЕ и ИНФОРМАЦИОННОЕ
ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ
5.1. Основная литература
Объектно-ориентированное программирование в С++ / Р. Лафоре. – 4-е изд. – СПб.: Питер, 2011.
, С++. Объектно-ориентированное программирование. / , – М.: Изд-во МГТУ им. , 2014
Павловская -ориентированное программирование / . – СПб.: Питер, 2015.
Хортон A. Visual C++ 2010. Полный курс / Айвор Хортон. – М., 2011.
Объектно-ориентированное мышление/ Мэтт Вайсфельд. – СПб.: Питер, 2014.
6. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ
ДИСЦИПЛИНЫ
Для проведения лекций должна быть использована аудитория с мультителекоммуникационным оборудованием с возможностью подключения к нему персонального компьютера, позволяющее демонстрировать на большом экране презентации к излагаемому материалу.
Для проведения лабораторных занятий и выполнения самостоятельной работы необходим компьютерный класс; программное обеспечение: операционная система Windows XP и выше, пакет Microsoft Office 2003 и выше, обслуживающие программы, IDE Visual Studio 2010 и выше.
7. СЛОВАРЬ ОСНОВНЫХ ТЕРМИНОВ
Объектно-ориентированное программирование (ООП) — парадигма программирования, в которой основными концепциями являются понятия объектов и классов.
Объект — это "строительный блок" в ООП-приложении. Такой строительный блок инкапсулирует часть приложения — процесс, порцию данных или какой-то более абстрактный объект.
Интерфейс — это коллекция общедоступных (а значит, не статических) методов и свойств, которые сгруппированы для инкапсуляции конкретной функциональности. После определения интерфейса его можно реализовать в классе.
Наследование — один из самых важных механизмов в ООП. Любой класс может наследоваться от другого класса, а это значит, что он будет иметь все те члены, что и класс, от которого он унаследован.
Класс — разновидность абстрактного типа данных в объектно-ориентированном программировании (ООП), характеризуемый способом своего построения.
Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.
Прототип — это объект-образец, по образу и подобию которого создаются другие объекты. Объекты-копии могут сохранять связь с родительским объектом, автоматически наследуя изменения в прототипе; эта особенность определяется в рамках конкретного языка.
Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.
Конструктор класса — специальный блок инструкций, вызываемый при создании объекта.
Содержание
ВведеНИЕ.. 3
1. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ.. 4
1.1. Цели освоения учебной дисциплины.. 4
1.2. Место учебной дисциплины в структуре ООП (связь с другими дисциплинами) 4
1.3. Компетенции обучающегося, формируемые в результате освоения учебной дисциплины 5
1.4. Основные виды занятий и особенности их проведения. 7
1.5. Виды контроля и отчетности по дисциплине. 7
2. СТРУКУРА и СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ... 9
2.1. Темы лекций. 9
2.2. Перечень тем практических/лабораторных занятий. 9
3. ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ.. 12
4. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ КУРСА.. 13
4.1. Перечень и тематика самостоятельных работ студентов по дисциплине 13
4.2. Контрольные вопросы для самостоятельной оценки качества освоения учебной дисциплины 14
4.3. Методические рекомендации по организации СРС.. 19
4.4. Рекомендации по работе с литературой. 20
5. УЧЕБНО-МЕТОДИЧЕСКОЕ и ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ 21
5.1. Основная литература. 21
6. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ... 22
7. СЛОВАРЬ ОСНОВНЫХ ТЕРМИНОВ.. 23
Содержание.. 25


