жим «Доступ по ссылке», ссылку разместить на учебном сайте вуза. Краткую инструкцию можно посмотреть здесь: http://www.youtube.com/watch?v=PQUp P5j28JU.
Использование видеоуроков позволяет легче усваивать материал и как следствие, активизирует самостоятельную работу студентов, что является важной частью учебного процесса. В качестве примера можно привести ситуацию, сложившуюся к концу первого семестра по дисциплине «Информатика». В соответствии с учебным планом дисциплины в семестре должна быть выполнена расчетно-графическая работа (РГР), однако на конец семестра ее выполнило и защитило не более 40 % студентов. Были срочно разработаны видео-уроки, поясняющие наиболее сложные моменты выполнения РГР. В итоге почти все студенты выполнили и защитили задание до начала экзаменационной сессии. Учитывая эти положительные результаты, для второго семестра также были разработаны видео-уроки по дисциплине, которые затем активно использовались студентами.
Список литературы:
1. Сайт Khan Academy [Электронный ресурс]. - Режим доступа: https://www.khanacademy.org/.
2. Один человек, один компьютер, миллионы учеников: как Академия Хана меняет образование [Электронный ресурс]. - Режим доступа: http://www.forbes.ru/tehno/intemet-i-telekommunikatsii/219529-odin-che-lovek-odin-kompyuter-milliony-uchenikov-kak-akadem.
3. Чалиев A.A. Видеоурок как перспективная информационная технология обучения в вузах [Электронный ресурс] // Современные проблемы науки и образования. - 2014. - № 5. - Режим доступа: www.science-education.ru/ 119-15233.
ОБУЧЕНИЕ ОСНОВАМ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ СОЗДАНИЯ ПРОГРАММЫ, ВИЗУАЛИЗИРУЮЩЕЙ ОПЕРАЦИИ НАД МНОЖЕСТВАМИ
© Быстрова Д.А.*, Крупорницкий Д.А.Ф
Мурманский государственный гуманитарный университет, г. Мурманск
Данная статья раскрывает возможность обучения основам объектно-ориентированного программирования с помощью программы, которая
* Студент 3 курса кафедры Математики и математических методов в экономике (направление подготовки 010400.62 «Прикладная математика и информатика»).
* Старший преподаватель.
реализует операции над множествами на примере графических примитивов. Данная программа может быть использована при изучении учебной дисциплины «Объектно-ориентированное программирование» в высших образовательных учреждениях.
Ключевые слова: бакалавриат, объектно-ориентированное программирование, консольное приложение, графические примитивы, операции над множествами, С++.
Анализ имеющихся федеральных государственных образовательных стандартов и образовательной практики даёт основание полагать, что студенты многих технических специальностей сталкиваются в рамках учебного предмета «Объектно-ориентированное программирование» с трудностями в понимании основных концепций ООП и их применения. Для кого-то изучение этих концепций - простой процесс, а для другого эта тема вызывает некоторые затруднения в связи с обширностью материала и его сложностью. Поэтому была поставлена следующая задача: обучить студентов основным концепциям ООП с помощью разработки программы, в которой они применены. Эта программа должна демонстрировать операции над множествами с помощью графических примитивов (круг, прямоугольник, треугольник).
В приложении реализовано три основные концепции объектно-ориентированного программирования:
1) наследование;
2) инкапсуляция;
3) полиморфизм.
Основополагающей идеей объектно-ориентированного программного подхода является объединение данных и действий, производимых над этими данными, в единое целое, которое называется объектом.
Функции объекта обычно предназначены для доступа к данным объекта. Прямой доступ к данным невозможен. Данные скрыты от внешнего воздействия, что защищает их от случайного изменения. Говорят, что данные и методы инкапсулированы. Термины сокрытие и инкапсуляция данных являются ключевыми в описании объектно-ориентированных языков [2].
Когда идёт речь об объектах, говорится, что они являются экземплярами классов. Класс является своего рода формой, определяющей, какие данные и функции будут включены в объект класса. При объявлении класса не создаются никакие объекты этого класса. Таким образом, класс является описанием совокупности сходных между собой объектов.
Понятие класса приводит к понятию наследования. В повседневной жизни мы часто сталкиваемся с разбиением классов на подклассы. Принцип, положенный в основу такого деления, заключается в том, что каждый подкласс обладает свойствами, присущими тому классу, из которого выделен данный подкласс. Кроме тех свойств, которые являются общими у данных класса и подкласса, подкласс может обладать и своими собственными свойствами.
Класс, порождающий все остальные классы, называется базовым классом; остальные классы наследуют его свойства, одновременно обладая собственными свойствами. Такие классы называются производными. Роль наследования в ООП - сократить размер кода и упростить связи между элементами программы.
Идеи ООП довольно трудны для восприятия и лучше воспринимаются на наглядном примере. После изучения материалов по теме исследования, было создано консольное приложения на языке С++, которое демонстрирует применение таких концепций ООП как инкапсуляция, наследование и полиморфизм.
В качестве демонстрирующей программы была выбрана реализация графических примитивов, что, на наш взгляд, лучше всего помогает раскрыть смысл трех основных концепций ООП. Все фигуры реализованы с помощью псевдографики. Они построены с помощью соответствующей готовой функции, каждая из которых описана в библиотеке msoftcon, которая предварительно подключается. Операции над множествами реализованы с помощью булевых функций, которые ищут пересечение (объединение, разность) фигур и заполняют его выбранным символом.
Для реализации поставленной задачи было создано 4 класса, первый из которых (класс shape) является базовым классом. Ниже приводится листинг этого класса и рассматривается его работа, а далее даётся выдержка из кода программы, демонстрирующей реализацию концепций ООП.
1. class shape //базовый класс
2. {
3. protected:
4. int xCo, yCo; //координаты
5. color fillcolor; //цвет
6. fstyle fillstyle; //стиль заполнения
7. public:
8. shape(int x, int y, color fc, fstyle fs) :
9. xCo(x), yCo(y), fillcolor(fc), fillstyle(fs) { }
10. //конструктор с 4-мя аргументами
11.
12.
13.
14.
15.
16.
17.
18.
19.
20. };
virtual ~shape() { } //виртуальный деструктор
virtual void draw() = 0 //чистая виртуальная функция
{
set_color(fillcolor); set_fill_style(fillstyle);
}
virtual void intersection(shape *pShapes); //виртуальная функция пересечения
virtual void integration(shape *pShapes); //виртуальная функция объединения
virtual void difference(shape *pShapes); //виртуальная функция разности
В модуле Virtshap.h объявляется класс shape, который является базовым классом для всех остальных. Все поля этого класса объявлены с модификатором доступа protected, а все методы - с public. Поля базового класса не объявляются как public, так как это разрешит доступ к ним из любой функ-
ции программы, уничтожив возможность сокрытия данных от несанкционированных действий пользователя. Таким образом, в программе реализуется инкапсуляция.
В строке 11 определяется конструктор с четырьмя аргументами. Виртуальный деструктор удаляет созданные объекты этого класса. Чистая виртуальная функция draw позволяет сделать класс shape абстрактным, а, следовательно, запрещает создавать объекты этого класса. Для этого есть классы-наследники. Поэтому пользуемся массивом указателей на объекты различных классов-наследников. Остальные методы этого класса выполняют свою роль в классах-наследниках.
Определяем виртуальные функции intersection, integration и difference базового класса shape. Они подобны друг другу, в каждой из них определяем цвет и стиль заполнения новой фигуры, образованной в результате применения соответствующей операции. Приведем, для примера, определение функции intersection:
1. void shape::intersection(shape *pShapes)
2. {
3. set_fill_style(MEDIUM_FILL);
4. set_color(cRED);
5.
6. }
Далее перегружаем чистую виртуальную функцию draw для класса ball. В теле функции вызываем сначала функцию draw базового класса, а затем используем функцию drawcircle рисования круга с помощью псевдографики. Аналогично функция draw перегружается в двух других классах-наследниках. Если в классе rect вызывается функция drawrectangle, то в классе tria это функция drawline, трижды вызванная, для рисования трех сторон треугольника.
Разработчики постарались сделать данную программу максимально удобной и понятной для пользователя, который будет изучать ее код. В качестве примера работы программы приведем нижеследующий рисунок (рис. 1). Уточним, что рисунок не несёт информационной составляющей, он приведён для более полного визуального представления созданного проекта.
Подводя итоги нужно сказать, что в начале исследования ставилось несколько задач, одной из которых являлся поиск различных источников и литературы по изучаемой теме. При решении этой проблемы было исследовано около 30 различных источников, тем или иным образом затрагивающих объектно-ориентированное программирование.
Следующей задачей являлось обобщение и систематизация накопленных теоретических знаний. В ходе её реализации были рассмотрены наиболее важные концепции и подходы к изучению ООП, среди которых есть как более популярные, так и менее.
* 1 E:\Fat Slowpoke\Study\пpalCTикa\ConsoleApplicationl\Debug\ConsoleAppl¡cat¡onl.exe |-еэ-|]-1Э ][г£3«]
Выверите фигуру: 1 - ЭЛЛИПС - прямоугольник - треугольник
к
Выверите операцию: [ — пересечение ! - объединение - разность
{отите продолжить? 1 - да □ - нет
| ' 1 !
Рис. 1. Пример работы программы
И, наконец, был создан программный продукт как результат выполнения последней задачи, смысл которой состоял в создании консольного приложения демонстрирующего основные концепции объектно-ориентированного программирования. Стоит заметить, что работа над данным проектом может быть продолжена и улучшена, например, он может быть перенесен из консольного приложения - в оконное. А также проект можно расширить, добавив более подробное рассмотрение объектно-ориентированного подхода. В настоящее время, на наш взгляд, данный ресурс может быть полезен студентам, обучающимся по программам бакалавриата на старших курсах.
Список литературы:
1. Грэхем И. Объектно-ориентированные методы. Принципы и практика [Текст] / И. Грэхем; пер. С. Беликова, О. Ядренко, Р. Имамутдинова. - 3-е изд. - М.: Изд. дом «Вильямс», 2004. - 880 с.
2. Лафоре Р. Объектно -ориентированное программирование в С++ [Текст] / Р. Лафоре. - 4-е изд. - М.: Питер, 2004. - 923 с.
3. Саттер Г. Стандарты программирования на С++ [Текст] / Г. Саттер, А. Александреску; пер. И. Красиков. - М.: ИД «Вильямс», 2015. - 224 с.
4. Страуструп Б. Язык программирования С++ [Текст] / Б. Страуструп; пер. Н. Мартынов. - М.: Бином, 2011. - 1136 с.
5. Хенкеманск, Д. Программирование на С++ [Текст] / Д. Хенкеманкс, Л. Марк; пер. М. Зислис. - СПб.: Символ-Плюс, 2005. - 416 с.