До питання створення статичного патерну проєктування для подвійної диспетчеризації модельних сигнатур

Автор(и)

  • Volodymyr Boublik Бублик Володимир Васильович – кандидат фізико-математичних наук, доцент, Національний університет «Києво-Могилянська академія», Ukraine

DOI:

https://doi.org/10.18523/2617-3808.2021.4.64-71

Ключові слова:

С , об’єктно-орієнтоване програмування, патерн (зразок) проєктування, подвійна диспетчеризація (мультиметод), віртуальна функція, поліморфізм, узагальнене програмування

Анотація

У роботі досліджено можливість уникнення застосування поліморфізму при створенні мовою програмування С++ класів-моделей певної сигнатури, придатних для подвійної диспетчеризації функцій–членів цих класів стосовно варіантів їх інтерпретації. Із цією метою розглянуто створення невіртуальних ієрархій шляхом застосування методів узагальненого програмування із використанням так званої зворотної конкретизації шаблону. Це дало змогу запропонувати загальну схему патерну проєктування, що визначив архітектуру класів, придатну для статичної реалізації мультиметодів. Розглянуто приклад застосування патерну для спільної реалізації мультиметодів у різнорідних класах на прикладі комплексних чисел і рядків символів. Одержані в роботі результати знайшли застосування в курсах об’єктно-орієнтованого програмування на факультеті інформатики Києво-Могилянської академії.

Біографія автора

Volodymyr Boublik, Бублик Володимир Васильович – кандидат фізико-математичних наук, доцент, Національний університет «Києво-Могилянська академія»

boublik@ukma.edu.ua

Посилання

  1. Alexandrescu, A. (2001). Modern C++ Design: Generic Programming and Design Patterns Applied. Addison-Wesley.
  2. Bublyk, V. V. (2013). Do pytannia elektronnoho navchannia prohramuvanniu. Naukovi zapysky NaUKMA, 151. Kompiuterni nauky, 112–115 [in Ukrainian].
  3. Gamma, E., Helm, R., Johnson, R., & Vlisside, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.
  4. Martin, R. (1996). The Dependency Inversion Principle. Retrieved from https://web.archive.org/web/20110714224327/http:// www.objectmentor.com/resources/articles/dip.pdf.
  5. Meyer, B. (1988). Object-Oriented Software Construction. Prentice Hall.
  6. Meyers, S. (2008). More Effective C++ 35 New Ways to Improve Your Programs and Designs. Addison-Wesley.
  7. Meyers, S. (2000). How Non-Member Functions Improve Encapsulation. Retrieved from https://www.drdobbs.com/cpp/how-non-member-functions-improve-encapsu/184401197.
  8. Ormrod, N. (2020). The strange details of std::string at Facebook. Retrieved from https://www.youtube.com/watch?v=kPR8h4-qZdk.
  9. Pirkelbauer, P., Solodkyy, Yu., & Stroustrup, B. (2007). Open Multi-Methods for C++. In Proceedings of the 6th international conference on Generative programming and component engineering (pp. 123–134). https://doi.org/10.1016/j.scico.2009.06.002
  10. Smith, J. (2003). Draft proposal for adding Multimethods to C++. Retrieved from http://www.open-std.org/jtc1/sc22/wg21/docs/ papers/2003/n1529.html.
  11. Stroustrup, B. (1994). The Design and Evolution of C++. Addison-Wesley.
  12. Sutter, H., & Alexandrescu, A. (2005). C++ Coding Standards: 101 Rules, Guidelines, and Best Practices. Addison-Wesley.
  13. Tauber, R. (2014). C++ Runtime Polymorphism without Virtual Functions. Retrieved from https://www.codeproject.com/Articles/603818/Cplusplus-Runtime-Polymorphism-without-Virtu- al-Fun.

##submission.downloads##

Опубліковано

2021-12-10

Як цитувати

[1]
V. Boublik, «До питання створення статичного патерну проєктування для подвійної диспетчеризації модельних сигнатур», NRPCOMP, т. 4, с. 64–71, Груд 2021.