Кіріспе

Компьютерлік жүйенің элементтері арасындағы ортақ шекара – екі немесе одан көп жеке компоненттер ақпарат алмасатын ортақ бөлік. Ақпарат алмасу бағдарламалық қамтамасыз ету, компьютерлік жабдық, сыртқы құрылғылар, адамдар және олардың түрлі комбинациялары арасында жүзеге асуы мүмкін. Кейбір компьютерлік жабдықтар, мысалы сенсорлық экран, интерфейс арқылы деректерді жіберіп, қабылдай алады, ал тышқан немесе микрофон сияқты құрылғылар жүйеге деректерді жіберуге арналған интерфейс ұсынады.

Жабдық интерфейстері

Жабдық интерфейстері көптеген компоненттерде кездеседі, мысалы, әртүрлі шиналарда, сақтау құрылғыларында, басқа да кіріс-шығыс құрылғыларында және т.б. Жабдық интерфейсі интерфейстегі механикалық, электрлік және логикалық сигналдармен, сондай-ақ оларды реттілікпен беру ережесімен (кейде сигнализация деп те аталады) сипатталады. SCSI сияқты стандартты интерфейс, кіріс-шығыс құрылғылары сияқты есептеу аппараттарының дизайнын және жаңадан енгізілуін, есептеу жүйесінің басқа компоненттерінің дизайны мен жаңадан енгізілуінен бөліп, пайдаланушылар мен өндірушілерге есептеу жүйелерін құруда үлкен икемділік береді.

Бағдарламалық интерфейстер

Бағдарламалық интерфейс әртүрлі "деңгейлердегі" интерфейстердің кең ауқымын қамтуы мүмкін. Мысалы, операциялық жүйе жабдық құралымдарымен байланыса алады. Операциялық жүйеде іске қосылған қолданбалар немесе бағдарламалар дерек ағындары, сүзгілер және құбырлар арқылы өзара әрекеттесуі қажет. Объектілі-бағдарланған бағдарламаларда, қолданба ішіндегі объектілер әдістер арқылы өзара байланысуы мүмкін.

Іс жүзінде

Құрылыстың маңызды қағидасы – барлық ресурстарға кіруге әдепкі бойынша тыйым салу, тек анықталған кіру нүктелері арқылы, яғни интерфейстер арқылы ғана кіруге рұқсат беру. Бағдарламалық интерфейстер компьютер ресурстарына (мысалы, жад, процессор, сақтағыш және т.б.) қол жеткізуді қамтамасыз етеді. Бағдарламалық жасақтама арқылы мұндай ресурстарға тікелей қол жеткізу (яғни, жақсы жобаланған интерфейстер арқылы емес) функционалдық және тұрақтылық үшін елеулі, кейде апатты салдарларға әкелуі мүмкін. Бағдарламалық компоненттер арасындағы интерфейстер тұрақтыларды, дерек түрлерін, процедура түрлерін, қателіктердің сипаттамаларын және әдіс қолтаңбаларын ұсынуы мүмкін. Кейде, қоғамдық айнымалылар да интерфейстің бір бөлігі ретінде анықталады. Бағдарламалық модульдің интерфейсі сол модульдің іске асырылуынан қасақана бөлек анықталады. Соңғысында интерфейсте сипатталған процедуралар мен әдістердің нақты коды, сондай-ақ басқа "жеке" айнымалылар, процедуралар және т.б. болады. Мысалы, A-ның клиенті болатын басқа бағдарламалық модуль B, A-мен тек жарияланған интерфейс арқылы ғана өзара әрекеттесуге міндетті. Бұл тәсілдің бір пайдасы – A-ның іске асырылуын сол интерфейстің басқа бір іске асырылуымен алмастыру B-нің жұмысын тоқтатуға себеп болмауы керек. A интерфейстің талаптарын қалай орындайтыны B үшін маңызды емес, ол тек интерфейстің сипаттамаларымен ғана айналысады. (Лисковтың алмастыру принципін де қараңыз.)

Нысанға бағдарланған тілдерде

Кейбір объектіге бағытталған тілдерде, әсіресе толыққанды көп мұрагерлік жоқ тілдерде, интерфейс термині сыныптың абстракциясы ретінде қызмет ететін абстракті түрін анықтау үшін қолданылады. Ол деректерді қамтымайды, бірақ әдіс қолтаңбалары түрінде мінез-құлықты анықтайды. Осы интерфейске сәйкес келетін барлық әдістердің коды мен деректеріне ие және осы туралы мәлімдейтін сынып, осы интерфейсті іске асырған болып саналады. Сонымен қатар, тіпті жалғыз мұрагерлік тілдерінде де бірнеше интерфейсті іске асыруға болады, демек бір уақытта әртүрлі типтерге жату мүмкіндігі бар. Осылайша, интерфейс – типтің анықтамасы болып табылады; объект алмасылатын кез келген жерде (мысалы, функция немесе әдіс шақырылымында) алмастырылатын объектінің типі нақты сыныпты көрсетудің орнына, оның іске асырылған интерфейстерінің немесе базалық сыныптарының бірі арқылы анықталуы мүмкін. Бұл тәсіл осы интерфейсті іске асыратын кез келген сыныпты пайдалануға болады дегенді білдіреді. Мысалы, соңғы іске асыру қолжетімді болғанға дейін даму процесін жалғастыру үшін, уақытша іске асыру қолданылуы мүмкін. Басқа жағдайда, сынақ кезінде жалған немесе макеттік іске асыру қолданылуы мүмкін. Мұндай уақытша іске асырулар даму процесінің кейінгі кезеңдерінде нақты кодпен алмастырылады. Әдетте, интерфейсте анықталған әдіс кодты қамтымайды, сондықтан оны тікелей шақыруға болмайды; оны шақырғанда орындалуы үшін, абстракті емес кодпен іске асырылуы керек. "Stack" деп аталатын интерфейс екі әдіс анықтауы мүмкін: push және pop. Ол әртүрлі жолдармен іске асырылуы мүмкін, мысалы, FastStack және GenericStack – біріншісі жылдам, белгілі бір мөлшердегі деректер құрылымымен жұмыс істейді, ал екіншісі мөлшерін өзгертуге болатын деректер құрылымын пайдаланады, бірақ жылдамдығы біршама төмендеу. Интерфейстер көптеген әдістерді қамтуы мүмкін, бірақ олар тек бір әдіске немесе мүлдем әдіссіз болуы да мүмкін. Мысалы, Java тілі бір ғана әдісі бар интерфейсті анықтайды; әртүрлі мақсаттар үшін әртүрлі іске асырулар қолданылады, соның ішінде , , , , ал Marker интерфейстері сияқты әдістері жоқ және Reflection арқылы жалпы өңдеуге орындалу уақыты туралы ақпарат беруге қызмет етеді.

Интерфейске бағдарламалау

Интерфейстерді пайдалану «интерфейске бағдарламалау» деп аталатын бағдарламалау стиліне мүмкіндік береді. Бұл тәсілдің мақсаты – қолданылатын объектілердің интерфейстеріне негізделген бағдарламалау логикасын құру, ішкі іске асыру ерекшеліктеріне емес. Интерфейске бағдарламалау іске асырудың нақты мәліметтеріне тәуелділікті азайтады және кодты қайта пайдалануды жеңілдетеді. Бұл идеяны ең жоғары деңгейге жеткізе отырып, басқаруды кері жүргізу контекстке жұмысты орындау үшін қолданылатын интерфейстің нақты іске асырылуын кодқа енгізуді тапсырады.

Пайдаланушы интерфейстері

Пайдаланушы интерфейсі – компьютер мен адам арасындағы өзара әрекеттесу нүктесі; ол өзара әрекеттесудің кез келген түрлерін қамтиды (мысалы, графика, дыбыс, орналасу, қозғалыс сияқты), онда деректер пайдаланушы мен компьютерлік жүйе арасында алмасылады.