Туризм - это путешествие за пределы постоянного места жительства с обязательной ночевкой и с любой целью кроме заработка и смены постоянного места жительства, а также удовлетворение общественных потребностей (рекреационных, деловых, политических, образовательных и др.), связанных с необходимостью перемещения в пространстве масс людей.
Список литературы:
1. Костина И.А. Социально-профессиональная компетентность как целостный результат профессионального образования. - М.; Уфа, 2014. - 233 с.
2. Полат Е.С. Новые педагогические и информационные технологии в системе образования. - М.: «Академия», 2010. - 304 с.
3. Зимняя И.А. Компетентностный подход в образовании (методолого-теоретический аспект). Проблемы качества образования. - М., 2014. - 560 с.
4. Орешкина А.К. Развитие образовательного процесса в системе непрерывного образования. - М., 2007. - 299 с.
5. Уваров Е.В. Формирование информационно-коммуникативной компетенции у будущих специалистов сферы обслуживания // Ж. «Среднее профессиональное образование». - М., 2012. - № 7. - С. 110.
ОСВОЕНИЕ ОСНОВНЫХ КОНЦЕПЦИЙ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ ПРОГРАММЫ ДЛЯ ОБЕСПЕЧЕНИЯ РАБОТЫ С АБОНЕНТАМИ ТЕЛЕФОННОЙ КОМПАНИИ
© Крупорницкий Д.А.*, Рудакова М.А.*
Мурманский государственный гуманитарный университет, г. Мурманск
В данной статье исследуется вопрос о возможности создания программного продукта для обеспечения работы с абонентами телефонной компании при помощи объектно-ориентированного программирования.
Ключевые слова: объектно-ориентированное программирование, образование, база данных, С++, телефонная компания.
За последние десятилетия методология программирования претерпела значительные изменения. Новые возможности вычислительной техники предопределили появление новых парадигм программирования. Одним из та-
* Старший преподаватель.
* Студент 3 курса кафедры Математики и математических методов в экономике (направление подготовки 010400.62 «Прикладная математика и информатика»).
ких направлений в программировании является объектно-ориентированный подход.
Объектно-ориентированное программирование - это подход программирования, основанный на работе с объектом, его свойствами и методами, для работы с которыми используются принципы полиморфизма, наследования и инкапсуляции [1].
В высших учебных заведениях на старших курсах технических специальностей именно идеология объектно-ориентированного программирования является наиболее востребованной при решении разнообразных практических задач. В связи с этим изучение основ данной методологии в современном образовании приобретает особую значимость.
Данная статья посвящена разработке и реализации программного продукта, написанного с использованием объектно-ориентированного программирования на языке С++ с применением комплексной структуры данных, с помощью которой будут производиться различные манипуляции с базой данных телефонной компании. Программа обеспечивает возможность создания новых абонентов компании и редактирования информации о них.
Рассмотрим прототип программного продукта, раскрывающего возможности ООП.
При разработке был спроектирован базовый класс phone_station, включающий в себя абонентов телефонной компании, обладающих именем и фамилией, а также операции с абонентами, например, совершение звонков между ними. Производным [4] от базового класса будет являться класс phonestation_free, реализующий бесплатный звонок между абонентами. Производный класс наследует свойства от базового класса.
1. class phone_station {
2. protected:
3. nt tariff; // стоимость минуты разговора
4. public:
5. string name; // имя
6. string surname; // фамилия
7. int balance; // баланс
8. unordered_map<string,phone_station> subscribers; // ассоциативный массив состоящий из номера и абонента
9. list<phone_station> recent_calls; // список звонков (FIFO)
10. // методы
11. phone_station(string& name, string& surname);
12. phone_station();
13. phone_station(int tariff);
14. unordered_map<string,phone_station> get_all_subscribers();
15. list<phone_station> get_recent_calls();
16. void add_subscriber(string& name, string& surname, string& number); // добавить абонента
17. int fill_subscriber(string& number, phone_station** sb); // ищем абонента в unordered_map
18. int delete_subscriber(string& number); // удалить абонента
19. string get_description(string& number, bool balance); // получить описание абонента
20. string get_descriptioon(string& number); // получить имя и фамилию абонента
21. void money_income(int amount); // пополнить баланс
22. void money_withdraw(int amount); // снять деньги
23. int get_balance(); // получить баланс абнонета
24.
25. virtual int make_call(phone_station& from, phone_station& to, int duration) // виртуальная функция
совершения звонка
26. {
27. int cost = duration*tariff;
28. if(from.balance<cost) return 1;
29. from.money_withdraw(cost);
30. from.recent_calls.push_back(to);
31. return 0;
32. }
33. };
34.
35. class phone_station_free : public phone_station { // дочерний класс
36. public:
37. phone_station_free(int tariff);
38. int make_call(phone_station& from, phone_station& to, int duration) // сделать бесплатный звонок
39. {
40. int cost = duration*tariff;
41. from.money_withdraw(cost);
42. from.recent_calls.push_back(to);
43. return 0;
44. }
45. };
В базовом классе phonestation есть 3 конструктора: phonestation (string& name, string& surname), phone_station() иphone_station(int tariff), которые вызываются автоматически сразу после создания объекта этого класса. В классе есть метод unordered_map<string,phone_station> get_all_subscribers(), который возвращает всех введённых абонентов, метод list<phone_station> get_recent_calls(), возвращающий список list<phone_station> recentcalls, методы void add_subscriber(string& name, string& surname, string& number) и int delete_subscriber(string& number), добавляющий и удаляющий абонента соответственно, метод int fill_subscriber(string& number, phone_station** sb), ищущий абонента в unordered map, методы string get descriptioon (string& number) и string get_description(string& number, bool balance), генерирующие описание абонента, методы void money_income(int amount) и void money_withdraw(int amount) для пополнения счёта и снятии средств со счёта абонента соответственно, метод int get_balance(), возвращающий значение баланса абонента и виртуальная функция virtual int make call (phone_station& from, phone_station& to, int duration), позволяющая сделать обычный (платный) звонок.
В дочернем классе phone_station_free один конструктор phone_station_ free (int tariff) и метод int make_call(phone_station& from, phone_station& to, int duration), позволяющий сделать бесплатный звонок.
В объектно-ориентированном программировании предусмотрены три модификатора доступа к данным - private, public и protected. Поле базового класса tariff объявлено с помощью модификатора protected, что позволяет использовать эти данные методам дочернего класса phone_station_free.
Так же в данном проекте использовалась ещё одна важная особенность объектно-ориентированного программирования - полиморфизм. Полиморфизмом называется способность объекта изменять форму в процессе выполнения программы [2].
В базовом и производном классе объявлены одинаковые функции -make_call, но по-разному определённые. Их назначение - совершить платный (базовый класс) либо бесплатный (производный класс) звонок.
В функции void makeCall() реализован полиморфизм:
1. void makeCall(){
2. string number;
3. phone_station* sbl;
4. phone_station* sb2;
5. cout<<"\nВведите номер вызывающего: ";
6. cin>>number;
12. cout<<"Введите номер вызываемого: ";
13. cin>>number;
19. int duration = 0;
20. cout<<"Введите продолжительность вызова: ";
21. cin>>duration;
22. cout<<"1: A^HH"<<endl;
23. cout<<"2: Обычный звонок'^^^^
24. phone_station *poly;
25. int num;
26. int kod;
27. cin>>num;
28. switch(num){
29. case 1:
30. { cout<<"Введите секретный код\п";
31. cin>>kod;
32. if (kod==33333) {
33. phone_station *poly=&station_free;
34. poly->make_call(*sb1, *sb2, duration);
35. cout<<"Успех!";
36. }
37. else {
38. cout<<"Неверный код!";
39. }
40. break;
41. }
42. case 2:
43. {
44. poly=(phone_station*)&station_pay;
45. int result = poly->make_call(*sb1, *sb2, duration);
46. cout<<"Результат: ";
75. return;
76. }
Таким образом, чтобы реализовать полиморфизм нужно создать указатель на базовый класс phone_station *poly, сделать объект платным -pofy=(phone_sШюn*)&sШюn_pay и далее для изменения формы объекта
просто присвоить этому указателю адрес объекта производного класса -phone_station *poly=&station_free.
Данный программный продукт является прототипом для других программ, реализующих подобную базу данных с помощью объектно-ориентированного программирования, и может использоваться студентами для изучения основ этой методологии.
Список литературы:
1. Бадд Т. Объектно-ориентированное программирование [Текст]: в действии: пер. с англ. / Т. Бадд. - СПб.: Питер, 2007. - 464 с.
2. Лафоре Р. Объектно-ориентированное программирование в С++ [Текст] / Р. Лафоре; пер. с англ. А. Кузнецова, М. Назарова. - 4-е изд. - СПб.: Питер, 2015. - 928 с.
3. Хорев П.Б. Технологии объектно-ориентированного программирования [Текст] / П.Б. Хорев. - М.: Академия, 2012. - 448 с.
4. Основы программирования на языках Си и С++ для начинающих [Электронный ресурс]. - Режим доступа: http://cppstudio.com, свободный. -(дата обращения: 20.05.15).
ИЗУЧЕНИЕ ОСНОВ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ НА ПРИМЕРЕ ПРОГРАММЫ ДЛЯ ФОРМИРОВАНИЯ БАЗЫ ДАННЫХ ОБУЧАЮЩИХСЯ
© Крупорницкий Д.А.*, Сучкова М.А.*
Мурманский государственный гуманитарный университет, г. Мурманск
Данная статья раскрывает возможность создания программного продукта для формирования базы данных при помощи объектно-ориентированного программирования.
Ключевые слова: объектно-ориентированное программирование, образование, база данных, С++.
В высших образовательных учреждениях студенты, обучающиеся на технических специальностях, сталкиваются с разными подходами к программированию: процедурный, структурный, модульный и другие. Одной из таких парадигм является объектно-ориентированный подход, с которым молодой специалист сталкивается уже на старших курсах своего обучения. В этом слу-
* Старший преподаватель.
* Студент 3 курса кафедры Математики и математических методов в экономике (направление подготовки 010400.62 «Прикладная математика и информатика»).