Засоби мов програмування високого рівня для глибокого копіювання об'єктів
DOI: http://dx.doi.org/10.30970/vam.2026.36.14046
Анотація
иконано порівняння можливостей мов програмування С++, C#, Python і Pharo щодо копіювання об'єктів. Якщо до складу об'єкта входить хоча б одне поліморфне посилання (або вказівник), задача глибокого копіювання перестає бути тривіальною. Як модельний приклад використано послідовний контейнер, який містить різнотипні об'єкти, що моделюють геометричні фігури. Показано, як кожною з мов оголосити відповідні класи, наповнити колекцію та побудувати її копію. Виконані перевірки засвідчили, що отримана копія не залежить від оригіналу.
Мовою С++ глибоке копіювання виконано "ручним" способом: на базі std::vector оголошено шаблон поліморфного вектора, який коректно очищає пам'ять від динамічних об'єктів, правильно виконує копіювання вмісту контейнера з використанням спеціальних методів, оголошених у класах фігур. Копіювання мовою C# виконано за допомогою загальних методів LINQ, а мовами Python і Pharo - стандартними вбудованими засобами. Показано, що Pharo надає програмістові найширше коло можливостей щодо копіювання об'єктів.
Повний текст:
PDFПосилання
Copy Consructors [Електронний ресурс] / Microsoft Corporation // Microsoft Docs, 2026. -- https://learn.microsoft.com/en-us/cpp/cpp/copy-constructors-and-copy-assignment-operators-cpp?view=msvc-170 -- Назва з екрану.
Class vector [Електронний ресурс] / Microsoft Corporation // Microsoft Docs, 2026. -- https://learn.microsoft.com/en-us/cpp/standard-library/vector-class?view=msvc-170 -- Назва з екрану.
Глибоке копіювання об'єктів [Електронний ресурс] / Serhiy Yaroshko // github, 2026. -- Режим доступу: https://github.com/LNUitTutor/CopyComparison -- Назва з екрану.
Class Object [Електронний ресурс] / Microsoft Corporation // Microsoft Docs, 2026. -- https://learn.microsoft.com/en-us/dotnet/api/system.object?view=net-10.0 -- Назва з екрану.
LINQ [Електронний ресурс] / Microsoft Corporation // Microsoft Docs, 2026. -- https://learn.microsoft.com/en-us/dotnet/csharp/linq/ -- Назва з екрану.
Abstract Base Classes [Електронний ресурс] // Python Documentation -- Режим доступу: https://docs.python.org/3/library/abc.html -- Назва з екрану.
Shallow and deep copy operations [Електронний ресурс] // Python Documentation -- Режим доступу: https://docs.python.org/3/library/copy.html -- Назва з екрану.
Стефан Дюкас Pharo 9 на прикладах / С. Дюкас, Дж. Ракіч [та ін.] ; пер. з англ. С. Ярошко. – Львів : ЛНУ ім. Івана Франка, 2022. – 270 с. [Електронне видання] -- Режим доступу: http://books.pharo.org/pharo-by-example9/ -- Назва з екрану.
Глибоке копіювання об'єктів у Pharo [Електронний ресурс] / Serhiy Yaroshko // github, 2026. -- Режим доступу: https://github.com/LNUitTutor/CopyComparisonPharo -- Назва з екрану.
Посилання
- Поки немає зовнішніх посилань.
