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

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

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

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

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

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

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

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

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

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<<"Неверный код!";

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

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 «Прикладная математика и информатика»).

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