Концептуальная модель и реализация объектно-ориентированной системы с помощью метапрограммирования
https://doi.org/10.21869/2223-1536-2024-14-3-223-237
Аннотация
Цель исследований заключается в разработке концептуальной модели объектно-ориентированной системы и ее реализации с помощью функционального языка с поддержкой метапрограммирования.
Методы. Была разработана концептуальная модель объектно-ориентированной системы на основе динамической объектной системы с передачей сообщений и динамической диспетчеризацией. Разработанная объектно ориентированная система включает в себя функции создания и удаления классов, создания и удаления объектов-экземпляров класса, функции для работы со свойствами объектов, функции добавления методов в класс и передачи сообщений. Также возможно наследование, когда дочерний класс будет иметь свойства родительского класса и свои собственные свойства.
Результаты. Объектно-ориентированная система была реализована с помощью набора макросов и вспомогательных функций. В качестве базовой структуры данных выступила хеш-таблица с возможностями доступа по ключу, которая также была реализована с помощью макросов. При создании класса автоматически генерируется конструктор экземпляра с установкой начальных значений полей объекта. Наследование реализовано как включение полей родительского класса в дочерний объект. Полиморфизм реализован как динамическая диспетчеризация: при обработке сообщения происходит поиск метода-обработчика. Полученная объектно-ориентированная система вместе с модулем хеш-таблиц занимает 97 строк.
Заключение. В результате работы была создана и реализована концептуальная модель объектно-ориентированной системы, включающей в себя основные функции объектно-ориентированной парадигмы программирования. Было показано, что с помощью макросов можно создать компактную объектно-ориентированную систему, при этом в интерпретатор функционального языка не нужно добавлять никаких новых функций или возможностей.
Ключевые слова
Об авторе
А. А. ЧаплыгинРоссия
Чаплыгин Александр Александрович, кандидат технических наук, доцент кафедры программной инженерии
ул. 50 лет Октября, д. 94, г. Курск 305040
Список литературы
1. Bloch J. Effective Java: Programming Language Guide. URL: https://theswissbay.ch/pdf/Gentoomen%20Library/Programming/Java/Addison%20Wesley%20-%20Effective%20Java%20Programming%20Language%20Guide.pdf (дата обращения: 11.06.2024).
2. Цыбулько Д. М. Сравнение подходов проблемно ориентированного и объектно ориентированного программирования // Математические методы в технике и технологиях – ММТТ. 2015. № 7(77). С. 278–280. EDN WFEKVH
3. Шарыкин Р. Е. Методология разработки программного обеспечения с использованием модели распределенных объектно ориентированных стохастических гибридных систем // Информатика. 2022. Т. 19, № 1. С. 88–95. https://doi.org/10.37661/1816-03012022-19-1-88-95. EDN DIHJAV
4. Abelson H., Sussman G. J., Sussman J. Structure and Interpretation of Computer Programs. Cambridge, Massatchusetts: The MIT Press, 2004. 268 р.
5. Domkin V. Programming Algorithms in Lisp. Berkeley: Apress, Ins., 2021. 377 p.
6. Вторников А. Lisp: маленький гигант // Системный администратор. 2016. № 6(163). С. 64–69. EDN VZGXVD
7. Ершов А. П., Покровский С. Б. Эволюция языков программирования // Проблемы информатики. 2017. № 2(35). С. 70–79. EDN ZOLFPJ
8. Романов С. С. Ключевые понятия и особенности объектно ориентированного программирования // Таврический научный обозреватель. 2016. № 12-2(17). С. 141–146. EDN YFXCCN
9. Паттерны объектно ориентированного проектирования / Э. Гамма, Р. Хелм, Р. Джонсон, Дж. Влиссидес. СПб.: Питер, 2024. 448 с.
10. Nystrom R. Crafting interpreters. Moscow: Nobel Press, 2024. 640 p.
11. How (and why) developers use the dynamic features of programming languages: the case of smalltalk / O. Callaú, R. Robbes, É. Tanter, D. Röthlisberger // Empirical Software Engineering. 2013. Vol. 18, N 6. P. 1156–1194. https://doi.org/10.1007/s10664-012-9203-2. EDN YOGDYK
12. Пол Г. ANSI Common LISP. СПб.: Символ-Плюс, 2020. 448 с.
13. Малов А. В., Родионов С. В. Реализация упрощенного алгоритма Байеса в среде функционального программирования COMMON LISP // Известия СПбГЭТУ «ЛЭТИ». 2015. № 2. С. 32–37.
14. Сайбель П. Практическое использование Common Lisp. М.: ДМК Пресс, 2017. 488 с.
15. Кочан С. Программирование на Objective-C. М.: ЭКОМ Паблишерз, 2014. 550 с.
16. Страуструп Б. Язык программирования C++. Краткий курс. М.: Вильямс, 2019. 320 с.
17. Кувардин М. В. Сравнение структур данных связной список и массив структур с использованием примеров на языке программирования C++ // Научные исследования XXI века. 2021. № 2(10). С. 69–72. EDN TVPPBJ
18. Стивен Ф. Лотт, Дасти Ф. Объектно ориентированный Python. 4-е изд. СПб.: Питер, 2024. 704 с.
19. Шилд Г. Java. Полное руководство. 12-е изд. М.: Диалектика-Вильямс, 2023. 1344 с.
20. Чаплыгин А. А. Моделирование интерпретатора функционального языка программирования с возможностями метапрограммирования // Известия Юго-Западного государственного университета. Серия: Управление, вычислительная техника, информатика. Медицинское приборостроение. 2024. № 14(2). С. 181–193. https://doi.org/10.21869/2223-1536-2024-14-2-181-193
Рецензия
Для цитирования:
Чаплыгин А.А. Концептуальная модель и реализация объектно-ориентированной системы с помощью метапрограммирования. Известия Юго-Западного государственного университета. Серия: Управление, вычислительная техника, информатика. Медицинское приборостроение. 2024;14(3):223-237. https://doi.org/10.21869/2223-1536-2024-14-3-223-237
For citation:
Chaplygin A.A. Concept model and realization of object orientied system with metaprogramming. Proceedings of the Southwest State University. Series: IT Management, Computer Science, Computer Engineering. Medical Equipment Engineering. 2024;14(3):223-237. (In Russ.) https://doi.org/10.21869/2223-1536-2024-14-3-223-237