Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Мазмұны
Кіріспе
Компьютерлік жүйенің элементтері арасындағы ортақ шекара – екі немесе одан көп жеке компоненттер ақпарат алмасатын ортақ бөлік. Ақпарат алмасу бағдарламалық қамтамасыз ету, компьютерлік жабдық, сыртқы құрылғылар, адамдар және олардың түрлі комбинациялары арасында жүзеге асуы мүмкін. Кейбір компьютерлік жабдықтар, мысалы сенсорлық экран, интерфейс арқылы деректерді жіберіп, қабылдай алады, ал тышқан немесе микрофон сияқты құрылғылар жүйеге деректерді жіберуге арналған интерфейс ұсынады.
Shared boundary between elements of a computing system
In computing, an interface is a shared boundary across which two or more separate components of a computer system exchange information. The exchange can be between software, computer hardware, peripheral devices, humans, and combinations of these. Some computer hardware devices, such as a touchscreen, can both send and receive data through the interface, while others such as a mouse or microphone may only provide an interface to send data to a given system.
Жабдық интерфейстері
Жабдық интерфейстері көптеген компоненттерде кездеседі, мысалы, әртүрлі шиналарда, сақтау құрылғыларында, басқа да кіріс-шығыс құрылғыларында және т.б. Жабдық интерфейсі интерфейстегі механикалық, электрлік және логикалық сигналдармен, сондай-ақ оларды реттілікпен беру ережесімен (кейде сигнализация деп те аталады) сипатталады. SCSI сияқты стандартты интерфейс, кіріс-шығыс құрылғылары сияқты есептеу аппараттарының дизайнын және жаңадан енгізілуін, есептеу жүйесінің басқа компоненттерінің дизайны мен жаңадан енгізілуінен бөліп, пайдаланушылар мен өндірушілерге есептеу жүйелерін құруда үлкен икемділік береді.
Hardware interfaces exist in many components, such as the various buses, storage devices, other I/O devices, etc. A hardware interface is described by the mechanical, electrical, and logical signals at the interface and the protocol for sequencing them (sometimes called signaling). A standard interface, such as SCSI, decouples the design and introduction of computing hardware, such as I/O devices, from the design and introduction of other components of a computing system, thereby allowing users and manufacturers great flexibility in the implementation of computing systems.
Бағдарламалық интерфейстер
Бағдарламалық интерфейс әртүрлі "деңгейлердегі" интерфейстердің кең ауқымын қамтуы мүмкін. Мысалы, операциялық жүйе жабдық құралымдарымен байланыса алады. Операциялық жүйеде іске қосылған қолданбалар немесе бағдарламалар дерек ағындары, сүзгілер және құбырлар арқылы өзара әрекеттесуі қажет. Объектілі-бағдарланған бағдарламаларда, қолданба ішіндегі объектілер әдістер арқылы өзара байланысуы мүмкін.
A software interface may refer to a wide range of different types of interfaces at different "levels". For example, an operating system may interface with pieces of hardware. Applications or programs running on the operating system may need to interact via data streams, filters, and pipelines. In object oriented programs, objects within an application may need to interact via methods.
Іс жүзінде
Құрылыстың маңызды қағидасы – барлық ресурстарға кіруге әдепкі бойынша тыйым салу, тек анықталған кіру нүктелері арқылы, яғни интерфейстер арқылы ғана кіруге рұқсат беру. Бағдарламалық интерфейстер компьютер ресурстарына (мысалы, жад, процессор, сақтағыш және т.б.) қол жеткізуді қамтамасыз етеді. Бағдарламалық жасақтама арқылы мұндай ресурстарға тікелей қол жеткізу (яғни, жақсы жобаланған интерфейстер арқылы емес) функционалдық және тұрақтылық үшін елеулі, кейде апатты салдарларға әкелуі мүмкін. Бағдарламалық компоненттер арасындағы интерфейстер тұрақтыларды, дерек түрлерін, процедура түрлерін, қателіктердің сипаттамаларын және әдіс қолтаңбаларын ұсынуы мүмкін. Кейде, қоғамдық айнымалылар да интерфейстің бір бөлігі ретінде анықталады. Бағдарламалық модульдің интерфейсі сол модульдің іске асырылуынан қасақана бөлек анықталады. Соңғысында интерфейсте сипатталған процедуралар мен әдістердің нақты коды, сондай-ақ басқа "жеке" айнымалылар, процедуралар және т.б. болады. Мысалы, A-ның клиенті болатын басқа бағдарламалық модуль B, A-мен тек жарияланған интерфейс арқылы ғана өзара әрекеттесуге міндетті. Бұл тәсілдің бір пайдасы – A-ның іске асырылуын сол интерфейстің басқа бір іске асырылуымен алмастыру B-нің жұмысын тоқтатуға себеп болмауы керек. A интерфейстің талаптарын қалай орындайтыны B үшін маңызды емес, ол тек интерфейстің сипаттамаларымен ғана айналысады. (Лисковтың алмастыру принципін де қараңыз.)
A key principle of design is to prohibit access to all resources by default, allowing access only through well defined entry points, i. e., interfaces. Software interfaces provide access to computer resources (such as memory, CPU, storage, etc.) of the underlying computer system; direct access (i. e., not through well designed interfaces) to such resources by software can have major ramifications—sometimes disastrous ones—for functionality and stability. Interfaces between software components can provide constants, data types, types of procedures, exception specifications, and method signatures. Sometimes, public variables are also defined as part of an interface. The interface of a software module A is deliberately defined separately from the implementation of that module. The latter contains the actual code of the procedures and methods described in the interface, as well as other "private" variables, procedures, etc. Another software module B, for example the client to A, that interacts with A is forced to do so only through the published interface. One practical advantage of this arrangement is that replacing the implementation of A with another implementation of the same interface should not cause B to fail—how A internally meets the requirements of the interface is not relevant to B, which is only concerned with the specifications of the interface. (See also Liskov substitution principle.)
Нысанға бағдарланған тілдерде
Кейбір объектіге бағытталған тілдерде, әсіресе толыққанды көп мұрагерлік жоқ тілдерде, интерфейс термині сыныптың абстракциясы ретінде қызмет ететін абстракті түрін анықтау үшін қолданылады. Ол деректерді қамтымайды, бірақ әдіс қолтаңбалары түрінде мінез-құлықты анықтайды. Осы интерфейске сәйкес келетін барлық әдістердің коды мен деректеріне ие және осы туралы мәлімдейтін сынып, осы интерфейсті іске асырған болып саналады. Сонымен қатар, тіпті жалғыз мұрагерлік тілдерінде де бірнеше интерфейсті іске асыруға болады, демек бір уақытта әртүрлі типтерге жату мүмкіндігі бар. Осылайша, интерфейс – типтің анықтамасы болып табылады; объект алмасылатын кез келген жерде (мысалы, функция немесе әдіс шақырылымында) алмастырылатын объектінің типі нақты сыныпты көрсетудің орнына, оның іске асырылған интерфейстерінің немесе базалық сыныптарының бірі арқылы анықталуы мүмкін. Бұл тәсіл осы интерфейсті іске асыратын кез келген сыныпты пайдалануға болады дегенді білдіреді. Мысалы, соңғы іске асыру қолжетімді болғанға дейін даму процесін жалғастыру үшін, уақытша іске асыру қолданылуы мүмкін. Басқа жағдайда, сынақ кезінде жалған немесе макеттік іске асыру қолданылуы мүмкін. Мұндай уақытша іске асырулар даму процесінің кейінгі кезеңдерінде нақты кодпен алмастырылады. Әдетте, интерфейсте анықталған әдіс кодты қамтымайды, сондықтан оны тікелей шақыруға болмайды; оны шақырғанда орындалуы үшін, абстракті емес кодпен іске асырылуы керек. "Stack" деп аталатын интерфейс екі әдіс анықтауы мүмкін: push және pop. Ол әртүрлі жолдармен іске асырылуы мүмкін, мысалы, FastStack және GenericStack – біріншісі жылдам, белгілі бір мөлшердегі деректер құрылымымен жұмыс істейді, ал екіншісі мөлшерін өзгертуге болатын деректер құрылымын пайдаланады, бірақ жылдамдығы біршама төмендеу. Интерфейстер көптеген әдістерді қамтуы мүмкін, бірақ олар тек бір әдіске немесе мүлдем әдіссіз болуы да мүмкін. Мысалы, Java тілі бір ғана әдісі бар интерфейсті анықтайды; әртүрлі мақсаттар үшін әртүрлі іске асырулар қолданылады, соның ішінде , , , , ал Marker интерфейстері сияқты әдістері жоқ және Reflection арқылы жалпы өңдеуге орындалу уақыты туралы ақпарат беруге қызмет етеді.
In some object oriented languages, especially those without full multiple inheritance, the term interface is used to define an abstract type that acts as an abstraction of a class. It contains no data, but defines behaviours as method signatures. A class having code and data for all the methods corresponding to that interface and declaring so is said to implement that interface. Furthermore, even in single inheritance languages, one can implement multiple interfaces, and hence can be of different types at the same time. An interface is thus a type definition; anywhere an object can be exchanged (for example, in a function or method call) the type of the object to be exchanged can be defined in terms of one of its implemented interfaces or base classes rather than specifying the specific class. This approach means that any class that implements that interface can be used. For example, a dummy implementation may be used to allow development to progress before the final implementation is available. In another case, a fake or mock implementation may be substituted during testing. Such stub implementations are replaced by real code later in the development process. Usually, a method defined in an interface contains no code and thus cannot itself be called; it must be implemented by non abstract code to be run when it is invoked. An interface called "Stack" might define two methods: push and pop It can be implemented in different ways, for example, FastStack and GenericStack—the first being fast, working with a data structure of fixed size, and the second using a data structure that can be resized, but at the cost of somewhat lower speed. Though interfaces can contain many methods, they may contain only one or even none at all. For example, the Java language defines the interface that has the single method; various implementations are used for different purposes, including , , , , and Marker interfaces like contain no methods at all and serve to provide run time information to generic processing using Reflection.
Интерфейске бағдарламалау
Интерфейстерді пайдалану «интерфейске бағдарламалау» деп аталатын бағдарламалау стиліне мүмкіндік береді. Бұл тәсілдің мақсаты – қолданылатын объектілердің интерфейстеріне негізделген бағдарламалау логикасын құру, ішкі іске асыру ерекшеліктеріне емес. Интерфейске бағдарламалау іске асырудың нақты мәліметтеріне тәуелділікті азайтады және кодты қайта пайдалануды жеңілдетеді. Бұл идеяны ең жоғары деңгейге жеткізе отырып, басқаруды кері жүргізу контекстке жұмысты орындау үшін қолданылатын интерфейстің нақты іске асырылуын кодқа енгізуді тапсырады.
The use of interfaces allows for a programming style called programming to the interface. The idea behind this approach is to base programming logic on the interfaces of the objects used, rather than on internal implementation details. Programming to the interface reduces dependency on implementation specifics and makes code more reusable. Pushing this idea to the extreme, inversion of control leaves the context to inject the code with the specific implementations of the interface that will be used to perform the work.
Пайдаланушы интерфейстері
Пайдаланушы интерфейсі – компьютер мен адам арасындағы өзара әрекеттесу нүктесі; ол өзара әрекеттесудің кез келген түрлерін қамтиды (мысалы, графика, дыбыс, орналасу, қозғалыс сияқты), онда деректер пайдаланушы мен компьютерлік жүйе арасында алмасылады.
A user interface is a point of interaction between a computer and humans; it includes any number of modalities of interaction (such as graphics, sound, position, movement, etc.) where data is transferred between the user and the computer system.