20811 объектно-ориентированное программирование_бби

advertisement
Министерство образования и науки Российской Федерации
т
Владивостокский государственный университет
экономики и сервиса
Институт информатики, инноваций и бизнес-систем
А.А. МАМАКОВ
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ
ПРОГРАММИРОВАНИЕ
Рабочая программа учебной дисциплины
Основная образовательная программа
080500.62 (38.03.05) «Бизнес-информатика»
Б
а
к
а
л
а
в
р
и
а
Кафедра информационных систем и прикладной информатики
Владивосток
Издательство ВГУЭС
2014
ББК 32.9
Рабочая
программа
учебной
дисциплины
«Объектноориентированное программирование» составлена в соответствии с
требованиями ООП 080500.62 (38.03.05) «Бизнес-информатика» на базе
ФГОС ВПО.
Автор-составитель: Мамаков А.А.., ассистент
информационных систем и прикладной информатики
кафедры
Утверждена на заседании кафедры информационных систем и
прикладной информатики от 22.04.2014 г., протокол № 10
Утверждена на заседании Учёного совета института ИИБС от
03.06.2014г., протокол № 8
© Издательство Владивостокского
государственного университета
экономики и сервиса, 2014
ВВЕДЕНИЕ
Дисциплина «Объектно-ориентированное программирование»
относится к циклу общепрофессиональных дисциплин направлений
подготовки 080500.62 (38.03.05) «Бизнес-информатика» и введена в
учебные планы в соответствии с требованиями ФГОС ВПО указанных
специальностей.
Дисциплина базируется в основном на знаниях основ
программирования – таких дисциплинах, как «Программирование»,
«Алгоритмизация и программирование».
Знания, полученные при изучении дисциплины «Объектноориентированное программирование» используются в последующих
дисциплинах, связанных с разработкой информационных систем и в
практической деятельности инженера.
Данная программа составлена в соответствии с ФГОС ВПО
специальностей 080500.62 (38.03.05) «Бизнес-информатика».
3
1. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ
1.1. Цели освоения учебной дисциплины
Целью
изучения
дисциплины
«Объектно-ориентированное
программирование» является теоретическая и практическая подготовка
студентов в области разработки программного обеспечения с
использованием объектно-ориентированной модели современных
языков программирования. Знания, полученные в результате освоения
дисциплины, помогут при разработке системных программных
компонентов современных информационных и расчетных программ, в
проектировании и реализации системных компонентов операционных
систем в такой степени, чтобы студенты могли самостоятельно
выбирать средства реализации, находить необходимые программные и
технологические решения для практически важных системных и
предметно-ориентированных задач. Основные задачи изучения
дисциплины:
- приобретение студентами знаний о сущности объектноориентированного подхода в программировании;
- ознакомление с технологиями создания новых типов данных в
различных языках программирования;
- приобретение практических навыков по использованию средств
переопределения операций, обработки исключений.
1.2. Место учебной дисциплины в структуре ООП
(связь с другими дисциплинами)
В результате теоретического изучения дисциплины студент должен
приобрести следующие компетенции: - владение основными средствами
языка С++ для разработки классов; - владение способами создания
объектно-ориентированных алгоритмов и программ; - ориентирование в
современных технологиях разработки объектно-ориентированного
программного обеспечения и прикладных программ; - понимание
сущности механизма обработки исключений.
В результате практического освоения дисциплины студент должен
уметь: правильно формулировать требования к объектно-ориентированным программам и задачам в соответствии с конкретной предметной
областью, производить декомпозицию задачи и реализовывать решение
на адекватно выбранном языке программирования.
4
Знания полученные по дисциплинам: «Информатика и
программирования (модуль 1)» и «Информатика и программирование
(модуль 2)» непосредственно используются в работе на занятиях и
являются базовыми для дисциплины: «Объектно-ориентированное
программирование».
1.3. Компетенции обучающегося,
формируемые в результате освоения
учебной дисциплины
В результате изучения
следующие компетенции.
1
дисциплины
2
080500.62
(38.03.05) Общепр
«Бизнесофессио
информати нальные
ка»
будут
сформированы
3
ПК-15 проектировать и внедрять компоненты ИТинфраструктуры предприятия, обеспечивающие
достижение стратегических целей и поддержку бизнеспроцессов
ПК-18 разрабатывать контент и ИТ-сервисы
предприятия и Интернет-ресурсов
В результате освоения дисциплины у обучающегося должны быть
сформированы знания, умения, владения.
ООП
Коды
компетенций
080500.62
(38.03.05) ПК-15
«Бизнесинформати
ка»
ПК-18
Составляющие компетенции
Знания
основные понятия объектноориентированного анализа; основные
технологии программирования
Умения
использовать объектно-ориентированный
анализ для разработки программного
обеспечения
Владения
методами и инструментальными средствами
разработки программ
Знания
основные технологии программирования
5
Умения
программировать, используя объектноориентированный подход
Владения
методами и инструментальными средствами
разработки программ
1.4. Основные виды занятий
и особенности их проведения
Объем и сроки изучения дисциплины:
Для студентов третьего курса направления «Прикладная
информатика» курс читается в весеннем семестре. Общая трудоемкость
дисциплины составляет 4 зачетных единиц, 144 часов. Из них 68 час –
аудиторной
работы,
67
часов –
самостоятельной
работы.
Промежуточная аттестация по курсу – экзамен.
Для студентов третьего курса направления «Информационные
системы и технологии» курс читается в весеннем семестре. Общая
трудоемкость дисциплины составляет 5 зачетных единицы, 180 часов.
Из них 68 час – аудиторной работы, 76 часов – самостоятельной работы.
Удельный вес занятий, проводимых в интерактивных формах,
составляет 20 процентов аудиторных занятий. Промежуточная
аттестация по курсу – экзамен.
1.5. Виды контроля и отчетности по дисциплине
В ходе изучения дисциплины предусматриваются следующие
виды контроля знаний студентов: текущая и промежуточная
аттестация. Текущая аттестация предназначена для контроля знаний
студентов в середине семестра и включает: защиту отчетов по
выполняемым лабораторным работам; оценку знаний и умений
студентов при проведении консультаций по лекционным и
лабораторным занятиям. Текущая аттестация проводится в форме
защит лабораторных, работ и является фактическим допуском к
экзамену в соответствии с Положением о рейтинговой системе оценки
успеваемости студентов во Владивостокском государственном
университете экономики и сервиса. Результаты текущей и
промежуточной аттестаций заносятся в ведомость установленной
формы (возможно в цифровой форме).
Промежуточная аттестация – экзамен в седьмом семестре.
Условием допуска студента к экзамену является успешное
6
прохождение двух текущих аттестаций в соответствии с требованиями
Положения о рейтинговой системе оценки успеваемости студентов во
ВГУЭС. Кроме того, студент должен выполнить и защитить не менее
60% всех лабораторных работ. Итоговая оценка формируется на
основе результатов текущих и промежуточной аттестаций. Для
студентов заочной формы обучения для допуска к экзамену
необходимо защитить 60% лабораторных работ.
7
2. СТРУКУРА И СОДЕРЖАНИЕ
УЧЕБНОЙ ДИСЦИПЛИНЫ
2.1. Темы лекций
Тема 1. Сущность объектно-ориентированного подхода в
программировании. Цикл разработки программного обеспечения (ПО),
назначение и содержание этапов. Роль анализа в процессе разработки
программного
обеспечения.
Основные
понятия
объектноориентированного анализа. Язык С++. Язык Java.
Тема 2. Классы и объекты. Отношения, основные типы отношений.
Язык UML. Основные средства анализа и моделирования предметной
области в языке UML. Статические данные. Конструктор, деструктор.
Операции new и delete.
Тема
3.
Объектно-ориентированная
методология
программирования.
Технология
применения
объектноориентированных языков, их классификация и архитектура. Перегрузка
операций. Преобразование типов.
Тема 4. Наследование, базовый и производный классы. Простое и
сложное наследование. Абстракция данных, наследование и
полиморфизм.
Тема 5. Виртуальные функции. Дружественные функции.
Дружественные классы.
Тема 6. Шаблоны функций. Шаблоны классов. Исключения.
Стандартная библиотека шаблонов.
Тема 7. Потоки и файлы. Стандартная библиотека классов для
управления потоками. Методы и средства организации и
программирования интерфейса.
Тема 8. Стандарты кодирования и их проекция на объектноориентированную модель программирования. Объектный подход к
разработке ПО для распределенных систем.
2.2. Перечень тем практических/лабораторных занятий
1. Создайте структуру с именем time. Три еѐ поля, имеющие тип int,
будут называться hours, minutes и seconds. Напишите программу,
8
которая просит пользователя ввести время в формате часы, минуты,
секунды. Программа должна хранить время в структурной переменной
типа time и выводить количество секунд в введенном времени.
2. Создайте перечисление с именем pets и значениями dog, cat, rat,
fish, bird. Создайте структуру с именем animal. Определите еѐ поля:
name как массив из 20 символов типа char, type как типа pets и age типа
float, хранящие, соответственно, имя животного, его разновидность и
возраст. Напишите программу, которая создает 4 переменные типа animal и просит пользователя ввести значения разновидности, имени и
возраста всех 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. Переопределить для него функции и операции. Продемонстрировать работу
класса.
9
7. Создать абстрактный класс Figure с виртуальными методами
вычисления площади и периметра. Создать производные классы:
Rectangle (прямоугольник), Circle (круг), Triangle (треугольник).
Описать в производных классах функции вычисления периметра и
площади, про-демонстрировать работу механизма виртуальных
функций.
8. Создать шаблон функции, возвращающей среднее арифметическое всех элементов массива. Аргументами функции должны быть имя
и размер массива (типа int). Создать шаблон функции, возвращающей
значение максимального элемента массива. Аргументами функции
должны быть имя и размер массива (типа int). Создать шаблон функции,
обменивающей местами значения двух передаваемых ей по ссылке аргументов. Создать шаблон функции, осуществляющей сортировку данных массива. Аргументами функции должны быть имя и размер массива
(типа int). Продемонстрировать работу шаблонов на данных различных
типов, в том числе, на данных вновь созданного класса – вектор на
плоскости, определив для него операции сравнения.
10
3. ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ
Программой дисциплины предусмотрено чтение лекций,
проведение лабораторных занятий, выполнение самостоятельной
работы, а также проведение консультаций для всех видов выше
указанных занятий.
Лекционные занятия проводятся в лекционных аудиториях в виде
2-часовых занятий не чаще одного раза в неделю. При проведении
лекционных занятий используется специальное оборудование
(персональный
компьютер,
оснащенный
проектором
с
демонстрационным экраном) для демонстрации презентаций.
Лабораторные работы проводятся в компьютерных классах, где
студенты реализуют проекты по разработке ПС. Работа над проектом
организована в виде командной работы. На занятиях обсуждают
возникающие вопросы и проблемы, разбирают и анализируют,
полученные результаты.
Самостоятельная работа подразумевает подготовку студентов к
лекционным и лабораторным занятиям, на основании материалов
лекций и рекомендованных программой учебников и учебных пособий.
Студентам предлагается для самостоятельного изучения теоретического
материала написание рефератов и выступление с докладами по
отдельным темам согласно учебной программы дисциплины.
11
4. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ
ПО ИЗУЧЕНИЮ КУРСА
4.1. Перечень и тематика самостоятельных работ
студентов по дисциплине
В рамках общего объема часов, отведенных для изучения дисциплины, предусматривается выполнение следующих видов самостоятельных работ студентов (СРС): изучение теоретического материала при
подготовке к защите лабораторных работ, итоговое повторение теоретического материала. Для закрепления материала и приобретения
навыков самостоятельного написания объектно-ориентированных
программ рекомендуется выполнение следующих задач:
1. Написать шаблон класса для работы с очередью FIFO.
Определить функции включения и исключения элементов. Добавить
механизм обработки исключений при превышении размера очереди и
при попытке удалить данные из пустой очереди. Это можно сделать,
добавив элемент данных – счетчик текущего числа элементов.
Исключения генерируются, если счетчик превысил размер массива или
если он стал меньше 0.
2. Опишите классы PointXY и PointPolar, объекты которых задают
декартовы и полярные координаты точки на плоскости. Перегрузите для
этих классов операции сложения, вычитания и умножения как скалярного произведения, так, чтобы в них могли участвовать объекты как
одного, так и обоих классов. Кроме того, задайте функцию преобразования одного класса в другой (для обоих классов).
3. Определить класс stack, который позволяет реализовать структуру данных типа стек для хранения целых чисел. Конструктор класса
должен содержать параметр, определяющий размер стека. Определить
для класса функции pop() (достать из стека), push() (положить в стек) и
операцию определения текущего размера стека. Функции должны осуществлять проверку на выход за пределы стека. Определить класс fifo,
реализующий структуру данных типа очередь для хранения целых чисел, породив его от класса stack, добавив нужные поля и переопределив
функции pop(), push() и определение текущего размера очереди. Продемонстрировать работу.
4. В любой визуальной среде создать класс Figure с виртуальным
методом draw(), осуществляющим прорисовку объекта на визуальном
компоненте. Создать производные классы: Rectangle (прямоугольник),
Circle (круг), Triangle (треугольник). Описать в производных классах
12
функции 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.
13
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. Методу класса всегда доступны данные
а) объекта, членом которого он является;
14
б) класса, членом которого он является;
в) любого объекта класса, членом которого он является.
10. Что является единственным формальным различием между
струк-турами и классами в С++?
11. Пусть определены три объекта класса. Сколько копий полей
клас-са содержится в памяти? Сколько копий методов класса?
12. Константный метод, вызываемый для объекта класса
а) может изменить как константные, так и неконстантные поля;
б) может изменить только неконстантные поля;
в) может изменять только константные поля;
г) не может изменять никакие поля.
13. Для чего нужно объявление поля класса со словом mutable
14. Что такое деструктор
15. Какие свойства приобретает поле данных класса, объявленное
как static
16. В чем состоит преимущество определения конструктора со списком инициализации элементов?
17. Для чего необходимо переопределять операции new и delete.
18. Какие свойства приобретает элемент-функция класса, если она
объявлена как статическая
19. Что такое указатель this?
К лекции 3
1. Для чего в С++ применяется перегрузка операций?
2. Истинно ли следующее утверждение: операция >= может быть
перегружена?
3. Сколько аргументов требуется для определения перегруженной
унарной операции?
4. Сколько аргументов требуется для определения перегруженной
бинарной операции?
5. Чем отличается действие операции ++ в префиксной форме от еѐ
действия в постфиксной форме?
6. Истинно ли следующее утверждение: перегруженная операция
всегда требует на один аргумент меньше, чем количество операндов?
7. Когда перегружается операция арифметического присваивания,
то результат
а) передается объекту справа от операции;
б) передается объекту слева от операции;
в) передается объекту, вызвавшему операцию;
г) должен быть возвращен.
8. Какой механизм преобразования от определенного пользователем класса к встроенному типу может быть использован в языке С++?
15
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.
16
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 появляется в:
а) классе, разрешающем доступ к другому классу;
б) классе, требующем доступа к другому классу;
в) разделе скрытых компонентов класса;
17
г) разделе общедоступных компонентов класса.
К лекции 7-8
1. Шаблоны позволяют удобным способом создать семейство
а) переменных;
б) функций;
в) классов;
г) программ.
2. Истинно ли утверждение, что шаблоны автоматически создают
разные версии класса в зависимости от введенных пользователем
данных?
3. Напишите шаблон функции, всегда возвращающей свой
аргумент, умноженный на 2.
4. Шаблонный класс:
а) работает с разными типами данных;
б) генерирует идентичные объекты;
в) генерирует классы с различным числом методов.
5. Истинно ли утверждение, что шаблон может иметь несколько аргументов?
6. Реальный код шаблонной функции генерируется при:
а) объявлении функции в исходном коде;
б) вызове функции в исходном коде;
в) запуске функции во время работы программы.
7. В каких случаях целесообразни прибегать к шаблонным классам?
8. При работе с механизмом исключений в С++ используются следующие ключевые слова: ____, ______, ____.
9. Напишите выражение, генерирующее исключение, используя
класс BoundsError.
10. Исключения передаются
а) из блока-ловушки в блок повторных попыток;
б) из выражения, создавшего исключительную ситуацию, в блок
повторных попыток;
в) из точки, где возникла ошибка, в блок-ловушку.
11. Истинно ли утверждение о том, что программа может продолжить свое выполнение после возникновения исключительной ситуации?
4.3. Методические рекомендации по организации СРС
Для проведения лабораторных работ и самостоятельного изучения
дисциплины используются компиляторы языков программирования
C++ (С++ Builder, Turbo C++ Explorer, devcpp).
18
4.4. Рекомендации по работе с литературой
Дисциплина "Объектно-ориентированное программирование" относится к относительно устоявшейся к настоящему времени области
программирования. По тематике курса выпущено большое количество
классических печатных изданий, в качестве основы можно рекомендовать книги [1-3]. В них содержаться основные принципы языка С++,
готовые полномасштабные приложения, небольшие примеры, поясняющие теорию и множество полезных иллюстраций. Книги содержать
множество упражнений, позволяющих проверить знания по всем темам.
Для освоения практических аспектов дисциплины с точки зрения
проектирования программных систем рекомендуются книги [4, 5].
19
5. УЧЕБНО-МЕТОДИЧЕСКОЕ И ИНФОРМАЦИОННОЕ
ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ
5.1. Основная литература
Лафоре Р. Объектно-ориентированное программирование в С++ / Р.
Лафоре. – 4-е изд. – СПб.: Питер, 2011.
Иванова Г.С., С++. Объектно-ориентированное программирование.
/ Иванова Г.С., Ничушкина Т.Н. – М.: Изд-во МГТУ им. Н.Э. Баумана,
2014
Павловская Т.А. Объектно-ориентированное программирование /
Т.А. Павловская. – СПб.: Питер, 2015.
Хортон A. Visual C++ 2010. Полный курс / Айвор Хортон. – М.,
2011.
Вайсфельд М. Объектно-ориентированное
Вайсфельд. – СПб.: Питер, 2014.
20
мышление/
Мэтт
6. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ
ДИСЦИПЛИНЫ
Для проведения лекций должна быть использована аудитория с
мультителекоммуникационным оборудованием с возможностью
подключения к нему персонального компьютера, позволяющее
демонстрировать на большом экране презентации к излагаемому
материалу.
Для
проведения
лабораторных
занятий
и
выполнения
самостоятельной работы необходим компьютерный класс; программное
обеспечение: операционная система Windows XP и выше, пакет Microsoft
Office 2003 и выше, обслуживающие программы, IDE Visual Studio 2010 и
выше.
21
7. СЛОВАРЬ ОСНОВНЫХ ТЕРМИНОВ
Объектно-ориентированное программирование (ООП) —
парадигма программирования, в которой основными концепциями
являются понятия объектов и классов.
Объект — это "строительный блок" в ООП-приложении. Такой
строительный блок инкапсулирует часть приложения — процесс,
порцию данных или какой-то более абстрактный объект.
Интерфейс — это коллекция общедоступных (а значит, не
статических) методов и свойств, которые сгруппированы для
инкапсуляции конкретной функциональности. После определения
интерфейса его можно реализовать в классе.
Наследование — один из самых важных механизмов в ООП.
Любой класс может наследоваться от другого класса, а это значит, что
он будет иметь все те члены, что и класс, от которого он унаследован.
Класс — разновидность абстрактного типа данных в объектноориентированном
программировании
(ООП),
характеризуемый
способом своего построения.
Абстрагирование — это способ выделить набор значимых
характеристик объекта, исключая из рассмотрения незначимые.
Соответственно, абстракция — это набор всех таких характеристик.
Прототип — это объект-образец, по образу и подобию которого
создаются другие объекты. Объекты-копии могут сохранять связь с
родительским объектом, автоматически наследуя изменения в
прототипе; эта особенность определяется в рамках конкретного языка.
Полиморфизм — это свойство системы использовать объекты с
одинаковым интерфейсом без информации о типе и внутренней
структуре объекта.
Конструктор класса — специальный
вызываемый при создании объекта.
22
блок
инструкций,
СОДЕРЖАНИЕ
ВВЕДЕНИЕ ................................................................................................... 3
1. ОРГАНИЗАЦИОННО-МЕТОДИЧЕСКИЕ УКАЗАНИЯ ...................... 4
1.1. Цели освоения учебной дисциплины ............................................... 4
1.2. Место учебной дисциплины в структуре ООП (связь с другими
дисциплинами) ................................................................................... 4
1.3. Компетенции обучающегося, формируемые в результате
освоения учебной дисциплины ........................................................ 5
1.4. Основные виды занятий и особенности их проведения ................ 6
1.5. Виды контроля и отчетности по дисциплине .................................. 6
2. СТРУКУРА И СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ ............. 8
2.1. Темы лекций ....................................................................................... 8
2.2. Перечень тем практических/лабораторных занятий ....................... 8
3. ОБРАЗОВАТЕЛЬНЫЕ ТЕХНОЛОГИИ ............................................... 11
4. МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИЗУЧЕНИЮ КУРСА .. 12
4.1. Перечень и тематика самостоятельных работ студентов по
дисциплине ....................................................................................... 12
4.2. Контрольные вопросы для самостоятельной оценки качества
освоения учебной дисциплины ...................................................... 13
4.3. Методические рекомендации по организации СРС ...................... 18
4.4. Рекомендации по работе с литературой ......................................... 19
5. УЧЕБНО-МЕТОДИЧЕСКОЕ И ИНФОРМАЦИОННОЕ
ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ ........................................................ 20
5.1. Основная литература ....................................................................... 20
6. МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ ОБЕСПЕЧЕНИЕ
ДИСЦИПЛИНЫ ...................................................................................... 21
7. СЛОВАРЬ ОСНОВНЫХ ТЕРМИНОВ ................................................. 22
СОДЕРЖАНИЕ ........................................................................................... 23
Download