Обго́ртка бібліоте́ки (англ. wrapper) — є проміжним шаром між прикладною програмою та іншою бібліотекою або інтерфейсом програмування додатку (API).
Метою написання обгортки бібліотеки може бути забезпечення нормальної роботи бібліотеки (API) в якій-небудь (найчастіше скриптовій) мові, в якій прямий виклик функцій цієї бібліотеки API ускладнений або неможливий. Іншою метою може бути забезпечення додаткової зручності для прикладного програміста — адаптація бібліотек до об'єктно-орієнтованого стилю програмування, компенсація незручного дизайну бібліотеки та ін. Існують також крос-платформові обгортки бібліотек, які приховують реалізацію для різних операційних систем, наприклад WxWidgets.
Приклад
Приклад показує загальну реалізацію бібліотеки-обгортки. Тут інтерфейс діє як "обгортка" навколо інтерфейсу на мові C.
C-інтерфейс
int pthread_mutex_init(pthread_mutex_t * mutex , pthread_mutexattr_t * attr); int pthread_mutex_destroy (pthread_mutex_t * mutex); int pthread_mutex_lock (pthread_mutex_t * mutex ); int pthread_mutex_unlock (pthread_mutex_t * mutex );
C++-обгортка
class Mutex { pthread_mutex_t mutex; public: Mutex() { pthread_mutex_init(&mutex, 0); } ~Mutex() { pthread_mutex_destroy(&mutex); } private: friend class Lock; void lock() { pthread_mutex_lock(&mutex); } void unlock() { pthread_mutex_unlock(&mutex); } }; class Lock { Mutex& mutex; public: Lock(Mutex& mutex):mutex(mutex){mutex.lock();} ~Lock(){mutex.unlock();} };
Початковий C-інтерфейс можна розглядати як недостатньо надійний, зокрема може статися так, що користувачі бібліотеки забудуть розблокувати заблокований мютекс. Новий інтерфейс, використовує RAII в нових класах Mutex і Lock для забезпечення автоматичного розблокування Mutex і, відповідно, об'єкта pthread_mutex_t.
Зв'язність між несумісними мовами, середовищами виконання
Деякі бібліотеки-обгортки працюють як міст між клієнтською програмою та бібліотекою, яка використовує іншу, несумісну технологію із основною програмою. Наприклад, Java програми працюють в віртуальній машині й не можуть напряму викликати системні функції ОС, які реалізовані на C. В таких мовах програмування, як Java, замість окремих бібліотек-обгорток використовується окремий механізм — .
Деякі приклади реалізації такого механізму:
Відомі обгортки бібліотек
Кілька прикладів відомих обгорток бібліотек
- Pthreads for WIN32
- OpenGL Bindings for Python
- JavaCV
Див. також
В іншому мовному розділі є повніша стаття Wrapper library(англ.). Ви можете допомогти, розширивши поточну статтю за допомогою з англійської.
|
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Obgo rtka bibliote ki angl wrapper ye promizhnim sharom mizh prikladnoyu programoyu ta inshoyu bibliotekoyu abo interfejsom programuvannya dodatku API Metoyu napisannya obgortki biblioteki mozhe buti zabezpechennya normalnoyi roboti biblioteki API v yakij nebud najchastishe skriptovij movi v yakij pryamij viklik funkcij ciyeyi biblioteki API uskladnenij abo nemozhlivij Inshoyu metoyu mozhe buti zabezpechennya dodatkovoyi zruchnosti dlya prikladnogo programista adaptaciya bibliotek do ob yektno oriyentovanogo stilyu programuvannya kompensaciya nezruchnogo dizajnu biblioteki ta in Isnuyut takozh kros platformovi obgortki bibliotek yaki prihovuyut realizaciyu dlya riznih operacijnih sistem napriklad WxWidgets PrikladPriklad pokazuye zagalnu realizaciyu biblioteki obgortki Tut interfejs C diye yak obgortka navkolo interfejsu na movi C C interfejs int pthread mutex init pthread mutex t mutex pthread mutexattr t attr int pthread mutex destroy pthread mutex t mutex int pthread mutex lock pthread mutex t mutex int pthread mutex unlock pthread mutex t mutex C obgortka class Mutex pthread mutex t mutex public Mutex pthread mutex init amp mutex 0 Mutex pthread mutex destroy amp mutex private friend class Lock void lock pthread mutex lock amp mutex void unlock pthread mutex unlock amp mutex class Lock Mutex amp mutex public Lock Mutex amp mutex mutex mutex mutex lock Lock mutex unlock Pochatkovij C interfejs mozhna rozglyadati yak nedostatno nadijnij zokrema mozhe statisya tak sho koristuvachi biblioteki zabudut rozblokuvati zablokovanij myuteks Novij interfejs vikoristovuye RAII v novih klasah Mutex i Lock dlya zabezpechennya avtomatichnogo rozblokuvannya Mutex i vidpovidno ob yekta pthread mutex t Zv yaznist mizh nesumisnimi movami seredovishami vikonannyaDeyaki biblioteki obgortki pracyuyut yak mist mizh kliyentskoyu programoyu ta bibliotekoyu yaka vikoristovuye inshu nesumisnu tehnologiyu iz osnovnoyu programoyu Napriklad Java programi pracyuyut v virtualnij mashini j ne mozhut napryamu viklikati sistemni funkciyi OS yaki realizovani na C V takih movah programuvannya yak Java zamist okremih bibliotek obgortok vikoristovuyetsya okremij mehanizm Deyaki prikladi realizaciyi takogo mehanizmu Java Native Interface SWIGVidomi obgortki bibliotekKilka prikladiv vidomih obgortok bibliotek Pthreads for WIN32 OpenGL Bindings for Python JavaCVDiv takozhAdapter Z yednuvalnij kod V inshomu movnomu rozdili ye povnisha stattya Wrapper library angl Vi mozhete dopomogti rozshirivshi potochnu stattyu za dopomogoyu perekladu z anglijskoyi Divitis avtoperekladenu versiyu statti z movi anglijska Perekladach povinen rozumiti sho vidpovidalnist za kincevij vmist statti u Vikipediyi nese same avtor redaguvan Onlajn pereklad nadayetsya lishe yak korisnij instrument pereglyadu vmistu zrozumiloyu movoyu Ne vikoristovujte nevichitanij i nevidkorigovanij mashinnij pereklad u stattyah ukrayinskoyi Vikipediyi Mashinnij pereklad Google ye korisnoyu vidpravnoyu tochkoyu dlya perekladu ale perekladacham neobhidno vipravlyati pomilki ta pidtverdzhuvati tochnist perekladu a ne prosto skopiyuvati mashinnij pereklad do ukrayinskoyi Vikipediyi Ne perekladajte tekst yakij vidayetsya nedostovirnim abo neyakisnim Yaksho mozhlivo perevirte tekst za posilannyami podanimi v inshomovnij statti Dokladni rekomendaciyi div Vikipediya Pereklad