Научная статья на тему 'Изучение основ объектно-ориентированного программирования на примере программы для формирования базы данных обучающихся'

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

CC BY
119
46
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ / ОБРАЗОВАНИЕ / БАЗА ДАННЫХ / С++

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

Данная статья раскрывает возможность создания программного продукта для формирования базы данных при помощи объектно-ориентированного программирования.

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

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

просто присвоить этому указателю адрес объекта производного класса -ркопв_&1а(юп *ро1у=&81айоп_/гвв.

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

Список литературы:

1. Бадд Т. Объектно-ориентированное программирование [Текст]: в действии: пер. с англ. / Т. Бадд. - СПб.: Питер, 2007. - 464 с.

2. Лафоре Р. Объектно-ориентированное программирование в С++ [Текст] / Р. Лафоре; пер. с англ. А. Кузнецова, М. Назарова. - 4-е изд. - СПб.: Питер, 2015. - 928 с.

3. Хорев П.Б. Технологии объектно-ориентированного программирования [Текст] / П.Б. Хорев. - М.: Академия, 2012. - 448 с.

4. Основы программирования на языках Си и С++ для начинающих [Электронный ресурс]. - Режим доступа: http://cppstudio.com, свободный. -(дата обращения: 20.05.15).

ИЗУЧЕНИЕ ОСНОВ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ ПРОГРАММЫ ДЛЯ ФОРМИРОВАНИЯ БАЗЫ ДАННЫХ ОБУЧАЮЩИХСЯ

© Крупорницкий Д.А.*, Сучкова М.А.*

Мурманский государственный гуманитарный университет, г. Мурманск

Данная статья раскрывает возможность создания программного продукта для формирования базы данных при помощи объектно-ориентированного программирования.

Ключевые слова: объектно-ориентированное программирование, образование, база данных, С++.

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

* Старший преподаватель.

* Студент 3 курса кафедры Математики и математических методов в экономике (направление подготовки 010400.62 «Прикладная математика и информатика»).

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

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

Объектно-ориентированное программирование содержит несколько систем взглядов, которые могут быть незнакомы тем, кто практикует программирование на таких традиционных языках, как Pascal, Basic и C. К этим концепциям относятся классы, наследование и полиморфизм, составляющие основу объектно-ориентированного подхода [2].

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

Рассмотрим прототип программного продукта, на котором можно, на наш взгляд, в полной мере раскрыть все аспекты ООП.

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

1. class person // класс person

2. {

3. protected:

4. char name[40]; // имя

5. char surname[40]; // фамилия

6. static int total; // счетчик

7. int nomer; // номер

8. public:

9. void getName(); // функция ввода имени и фамилии

10. void putName(); // функция вывода имени и фамилии

11. virtual void getdata() = 0; // чистые виртуальные функции

12. virtual void putdata() = 0;

13. virtual bool isOutstanding() = 0;

14. };

public:

class student : public person // класс student {

private:

int course; char forma[15]; int specialty; float point;

void getdata(); void putdata(); bool isOutstanding();

class professor : public person // класс professor {

private:

int experience; int burden; char degree[40]; int numPubs;

void getdata(); void putdata(); bool isOutstanding();

public:

// курс

// форма обучения // специальность // средний балл

// функция ввода данных // функция вывода данных // функция на заслуги

// стаж работы // нагрузка = кол-во часов // ученая степень // число публикаций

// функция ввода данных // функция вывода данных // функция на заслуги

Функции объекта, называемые в C++ методами или функциями-членами, обычно предназначены для доступа к данным объекта. Если необходимо считать какие-либо данные объекта, нужно вызвать соответствующий метод, который выполнит считывание и возвратит требуемое значение [2].

У базового класса person 5 методов. Методы getName() и putName() получают доступ к полям name[40], surname[40] и nomer, записывая в них информацию и считывая ее, соответственно. Методы getdata(), putdata(), isOutstanding() объявлены чистыми виртуальными, для того, чтобы сделать класс person абстрактным, что запрещает создавать элементы этого класса, так как они не предназначены для реализации.

У классов student и professor по три метода getdata(), putdata() и isOutstanding(), которые получают доступ ко всем полям классов для ввода, ввода информации и вывода выборки людей, чей балл и число публикаций больше заданного, для студентов и преподавателей соответственно.

Прямой доступ к данным невозможен. Данные скрыты от внешнего воздействия, что защищает их от случайного изменения. Говорят, что данные и методы инкапсулированы [2].

ООП предоставляет три модификатора доступа, которые предусматривают права доступа к данным, объявленных с их помощью. Модификатор public оставляет доступ свободным, private открывает доступ к полям класса для методов этого же класса, protected открывает доступ к полям для классов, производных от данного.

Объявляя поля базового класса с помощью модификатора protected, эти данные тем самым защищаются от доступа всех, кроме методов дочерних

классов student и professor. К полям класса student имеют доступ только методы класса student, а к полям класса professor методы его класса. Все методы во всех трех классах объявлены с помощью public, что означает, что можно свободно вызвать методы этих классов в любой момент.

Еще одним важным инструментом ООП является полиморфизм - использование операций и функций различными способами в зависимости от того, с какими типами величин они работают [2].

В двух разных классах в рассматриваемом примере объявлены одинаковые функции getdata(), putdata() и isOutstanding(), но выполняют они совершенно разные действия, за счет полиморфизма. Когда мы вызываем метод getdata() для объекта класса student компилятор выполняет тело функции getdata(), которая была определенна для класса student.

Рассмотрим функцию getdata() определенную для класса student:

1. void student: :getdata()

2. {

3. person: :getName();

4. cout << " Введите курс студента: "; cin >> course;

5. cout << " Введите форму обучения студента: ";

6. cin >> forma;

7. cout << " Введите код специальности студента (BPMI - 1,

8. BMKN- 2, BBI - 3): "; cin >> specialty;

9. cout << " Введите средний балл ученика: "; cin >> point;

10. }

Написание класса через двойное двоеточие слева от названия функции указывает, для какого именно класса будет выполняться эта функция. В теле этой функции у пользователя последовательно спрашивают характеристики студента, которого мы вносим в базу данных.

Код функции getdata() для класса аналогичен функции getdata() для класса student с разницей в том, что запрашиваются и записываются данные не студента, а преподавателя. Определение функции начинается со строчки void pro fessor: :getdata ().

Хранение данных происходит в указателях на элементы типа person. Функции выглядят почти аналогично, но получают доступ они к полям класса, для которого они определены.

Первой строчкой в теле обеих функций вызывается метод getName() класса person, который запрашивает на ввод имя и фамилию, определённые ранее как поля его класса:

1. void person: :getName()

2. {

3. cout << " Введите имя: "; cin >> name;

4. cout << " Введите Фамилию: "; cin >> surname;

5. total++;

6. nomer=total;

7. }

Это возможно за счет того, что методы базового класса были объявлены с помощью модификатора доступа public.

После того, как все классы и их методы определены, можно приступать к телу основной функции main().

Сначала определяется массив указателей на person, далее в теле цикла do-while делается запрос пользователю, о ком он хочет ввести информацию и, получив ответ, создаётся новый элемент того класса, который требуется в соответствии с выбором пользователя. Далее, строчкой persPtr[n++]->getdata(); вызывается функция getdata(), а компилятор вызывает ту, которая соответствует классу элемента, для которой ее вызвали.

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

Список литературы:

1. Буч Г. Язык UML. Руководство пользователя [Текст] / Г. Буч, Д. Рам-бо, А. Якобсон; пер. Н. Мухин. - М.: ДМК Пресс, 2007. - 496 с.

2. Лафоре Р. Объектно-ориентированное программирование в C++ [Текст] / Р. Лафоре. - 4-е изд. - М.: Питер, 2004. - 923 с.

3. Медведев В.И. Особенности объектно-ориентированного программирования на C++/CLI, C# и Java [Текст] / В.И. Медведев. - 2-е изд., испр. и доп. - Казань: РИЦ «Школа», 2010. - 444 c.

4. Прата С. Язык программирования C++ [Текст]: лекции и упражнения: пер. с англ. / С. Прата. - 6-е изд. - Вильямс, 2012. - 1248 с.

ФОРМИРОВАНИЕ ИНФОРМАЦИОННОЙ КУЛЬТУРЫ ЛИЧНОСТИ В ЕДИНОЙ ИНФОРМАЦИОННОЙ ОБРАЗОВАТЕЛЬНОЙ СРЕДЕ ВУЗА

© Щедрина Е.В.*

Российский государственный аграрный университет -Московская сельскохозяйственная академия имени К.А. Тимирязева,

г. Москва

Рассматриваются возможности единой информационной образовательной среды вуза в направлении формирования информационной

* Доцент кафедры «Вычислительная техника и прикладная математика», кандидат педагогических наук.

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