Кіріспе

Apple Macintosh компьютерлік бағдарламалауда Component Manager – PowerPC Macintosh-қа дейінгі кезеңде пайда болған кодты бөлісудің көптеген әдістерінің бірі еді. Ол бастапқыда QuickTime құрамына енгізілді, және классикалық Mac OS жүйесінде оны ең көп пайдаланған бөлім болып қала берді.

Техникалық мәліметтер

Компонент – клиенттер шақыра алатын әртүрлі функцияларды қамтамасыз ететін кодтың бір бөлігі болды. Әрбір функция 16 биттік бүтін сандық ID кодымен анықталды. Нөлден кем немесе тең кодтар барлық компоненттер түсінуі тиіс, алдын ала анықталған функцияларға арналған: компоненттің инстанциясын ашу/жабу, функция қолдау көрсетіледі ме жоқ па деген сұраныс және т.б. Оң функция кодтарының мағынасы компонент түріне байланысты болды. Компонентті ашу арқылы компонент инстанциясы құрылды. Бұл компоненттің ашу функциясын шақырып, инстанция үшін қажетті жадты бөліп, бастамалады. Инстанцияны жабу осы жадтан арылып, осы инстанцияға жасалған барлық сілтемелерді жарамсыз етеді. Компоненттер мен компонент инстанциялары 32 биттік мәндермен сілтемеленді, бұл мәндер көрсеткіштер емес еді. Керісінше, олар ішкі компонент менеджерінің кестелеріндегі кілттер ретінде қарастырылды. Бұл сілтемелер жарамсыз болғаннан кейін, олардың көп уақыт бойы қайта жарамды болуының ықтималдығы азайтылды. Бұл қолданыстағы сілтемелерге байланысты туындауы мүмкін түсініксіз қателердің пайда болуын азайтады. Компоненттер OSType кодтары арқылы олардың түрін, қосалқы түрін және «өндірушісін» анықтауға мүмкіндік берді. Мысалы, компонент түрі «растрлік кескін компрессоры» болуы мүмкін, ал оның JPEG, H.261, Sorenson және Intel Indeo сияқты қосалқы түрлері болуы мүмкін. Бірнеше компоненттерді дәл бірдей идентификациялық кодтармен тіркеуге болады, мысалы, аппараттық құралдарды немесе бағдарламалық құралдарды пайдалану арқылы, жылдамдық пен сапаны немесе басқа да критерийлерді сату арқылы бір алгоритмнің баламалы нұсқаларын ұсыну үшін. Қолданбалар мұндай баламалардың бар-жоғын сұрап, олардың арасынан нақты таңдау жасауға немесе жүйеге әдепкі таңдау жасауға рұқсат бере алады. Қол жетімді нұсқалардың ішінде компонент кодты қайта пайдалану мақсатында басқа компонентке өз функцияларының бір бөлігін тапсыруға болады, бұл кодты қайта пайдалану үшін қосалқы кластың бір түрі еді. Сондай-ақ, бір компонент екінші компонентті басып алуы мүмкін, яғни басып алынған компонентке жасалған барлық кірулер басып алушы компонент арқылы жүзеге асырылуы керек.