Засоби мов програмування високого рівня для глибокого копіювання об'єктів

Serhii Yaroshko, Svitlana Yaroshko


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 -- Назва з екрану.


Посилання

  • Поки немає зовнішніх посилань.