Научная статья на тему 'Обучение основам объектно-ориентированного программирования на примере создания программы, визуализирующей операции над множествами'

Обучение основам объектно-ориентированного программирования на примере создания программы, визуализирующей операции над множествами Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
157
40
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
БАКАЛАВРИАТ / ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ / КОНСОЛЬНОЕ ПРИЛОЖЕНИЕ / ГРАФИЧЕСКИЕ ПРИМИТИВЫ / ОПЕРАЦИИ НАД МНОЖЕСТВАМИ / C++

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Быстрова Д.А., Крупорницкий Д.А.

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

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Обучение основам объектно-ориентированного программирования на примере создания программы, визуализирующей операции над множествами»

жим «Доступ по ссылке», ссылку разместить на учебном сайте вуза. Краткую инструкцию можно посмотреть здесь: 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 с.

i Надоели баннеры? Вы всегда можете отключить рекламу.