Preview

Известия Юго-Западного государственного университета. Серия: Управление, вычислительная техника, информатика. Медицинское приборостроение

Расширенный поиск

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

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

Просмотров: 103


Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2223-1536 (Print)