Jump to content

Интерфейс (вычисления)

(Перенаправлено с Интерфейсы (информатика) )

В вычислениях интерфейс — это общая граница, через которую два или более отдельных компонента компьютерной системы обмениваются информацией. Обмен может осуществляться между программным обеспечением , компьютерным оборудованием , периферийными устройствами , людьми и их комбинациями. [1] Некоторые аппаратные устройства компьютера, такие как сенсорный экран , могут как отправлять, так и получать данные через интерфейс, в то время как другие, такие как мышь или микрофон, могут предоставлять только интерфейс для отправки данных в данную систему. [2]

Аппаратные интерфейсы

[ редактировать ]
Аппаратные интерфейсы портативного компьютера : сетевой разъем Ethernet (в центре), слева часть порта VGA , справа (вверху) разъем Display Port , справа (внизу) разъем USB -A.

Аппаратные интерфейсы существуют во многих компонентах, таких как различные шины , устройства хранения данных , другие устройства ввода-вывода и т. д. Аппаратный интерфейс описывается механическими, электрическими и логическими сигналами на интерфейсе и протоколом их упорядочивания (иногда называемым сигнализация). [3] Стандартный интерфейс, такой как SCSI , отделяет проектирование и внедрение вычислительного оборудования, такого как устройства ввода-вывода , от проектирования и внедрения других компонентов вычислительной системы, тем самым предоставляя пользователям и производителям большую гибкость при реализации вычислительных систем. . [3] Аппаратные интерфейсы могут быть параллельными с несколькими электрическими соединениями, передающими части данных одновременно, или последовательными , когда данные передаются по одному биту за раз. [4]

Программные интерфейсы

[ редактировать ]

Программный интерфейс может относиться к широкому спектру различных типов интерфейсов на разных «уровнях». Например, операционная система может взаимодействовать с аппаратными средствами. Приложениям или программам, работающим в операционной системе, может потребоваться взаимодействие через потоки данных , фильтры и конвейеры. [5] В объектно-ориентированных программах объектам внутри приложения может потребоваться взаимодействовать через методы . [6]

На практике

[ редактировать ]

Ключевой принцип проектирования — запретить доступ ко всем ресурсам по умолчанию, разрешая доступ только через четко определенные точки входа, т. е. интерфейсы. [7] Программные интерфейсы обеспечивают доступ к компьютерным ресурсам (таким как память, ЦП, хранилище и т. д.) базовой компьютерной системы; прямой доступ (т. е. не через хорошо продуманные интерфейсы) к таким ресурсам с помощью программного обеспечения может иметь серьезные последствия — иногда катастрофические — для функциональности и стабильности. [ нужна ссылка ]

Интерфейсы между программными компонентами могут предоставлять константы , типы данных , типы процедур , спецификации исключений и сигнатуры методов . Иногда общедоступные переменные также определяются как часть интерфейса. [8]

Интерфейс программного модуля А намеренно определен отдельно от реализации этого модуля. Последний содержит реальный код процедур и методов, описанных в интерфейсе, а также другие «приватные» переменные, процедуры и т. д. Другой программный модуль , который взаимодействует с B, например клиент A A, вынужден это делать. только через опубликованный интерфейс. Одним из практических преимуществ такой схемы является то, что замена реализации A другой реализацией того же интерфейса не должна приводить B к сбою — то, как A внутренне соответствует требованиям интерфейса, не имеет отношения к B , который занимается только спецификациями интерфейса. интерфейс. (См. также принцип замены Лискова .) [ нужна ссылка ]

В объектно-ориентированных языках

[ редактировать ]

В некоторых объектно-ориентированных без полного множественного наследования , термин интерфейс используется для определения абстрактного типа , который действует как абстракция класса языках, особенно . Он не содержит данных, но определяет поведение как сигнатуры методов . Говорят, что класс , имеющий код и данные для всех методов, соответствующих этому интерфейсу, и заявляющий об этом, реализует этот интерфейс. [9] Более того, даже в языках с одним наследованием можно реализовать несколько интерфейсов и, следовательно, они могут быть разных типов одновременно. [10]

Таким образом, интерфейс является определением типа ; Везде, где объект может быть обменян (например, в вызове функции или метода ), тип объекта, подлежащего обмену, может быть определен в терминах одного из его реализованных интерфейсов или базовых классов, а не указания конкретного класса . Этот подход означает, что можно использовать любой класс, реализующий этот интерфейс. [ нужна ссылка ] Например, можно использовать фиктивную реализацию , чтобы позволить продолжить разработку до того, как будет доступна окончательная реализация. В другом случае фейковая или макетная во время тестирования может быть подменена реализация. Такие реализации- заглушки заменяются реальным кодом позже в процессе разработки.

Обычно метод, определенный в интерфейсе, не содержит кода и поэтому сам по себе не может быть вызван; он должен быть реализован с помощью неабстрактного кода, который будет запускаться при его вызове. [ нужна ссылка ] Интерфейс под названием " Stack" может определить два метода: push() и pop(). Это можно реализовать по-разному, например, FastStack и GenericStack- первый из них быстрый, работает со структурой данных фиксированного размера, а второй использует структуру данных, размер которой можно изменить, но за счет несколько меньшей скорости.

Хотя интерфейсы могут содержать множество методов, они могут содержать только один или вообще не содержать никаких методов. Например, язык Java определяет интерфейс Readable у которого есть сингл read() метод; различные реализации используются для разных целей, в том числе BufferedReader, FileReader, InputStreamReader, PipedReader, и StringReader. Маркерные интерфейсы, такие как Serializable вообще не содержат методов и служат для предоставления информации во время выполнения для общей обработки с использованием Reflection . [11]

Программирование интерфейса

[ редактировать ]

Использование интерфейсов позволяет использовать стиль программирования, называемый программированием интерфейса . Идея этого подхода заключается в том, чтобы основывать логику программирования на интерфейсах используемых объектов, а не на деталях внутренней реализации. Программирование интерфейса снижает зависимость от особенностей реализации и делает код более пригодным для повторного использования. [12]

Доводя эту идею до крайности, инверсия управления оставляет контекст для внедрения в код конкретных реализаций интерфейса, которые будут использоваться для выполнения работы.

Пользовательские интерфейсы

[ редактировать ]

Пользовательский интерфейс — это точка взаимодействия между компьютером и людьми; он включает в себя любое количество модальностей взаимодействия (таких как графика, звук, положение, движение и т. д . ), при которых данные передаются между пользователем и компьютерной системой.

См. также

[ редактировать ]
  1. ^ Хукуэй, Б. (2014). «Глава 1: Предмет интерфейса». Интерфейс . МТИ Пресс. стр. 1–58. ISBN  9780262525503 .
  2. ^ IEEE 100 — Авторитетный словарь терминов стандартов IEEE . Нью-Йорк, Нью-Йорк, США: IEEE Press. 2000. стр. 574–575. ISBN  9780738126012 .
  3. ^ Jump up to: а б Блаау, Герритт А.; Брукс-младший, Фредерик П. (1997), «Глава 8.6, Интерфейсы устройств», Концепции компьютерной архитектуры и эволюция , Аддисон-Уэсли, стр. 489–493, ISBN  0-201-10557-8 См. также: Паттерсон, Дэвид А.; Хеннесси, Джон Л. (2005), «Глава 8.5, Взаимодействие устройств ввода-вывода с процессором, памятью и операционной системой», Организация и проектирование компьютера - интерфейс аппаратного и программного обеспечения, третье издание , Морган Кауфманн, стр. 588–596. , ISBN  1-55860-604-1
  4. ^ Говиндараджалу, Б. (2008). «3.15 Периферийные интерфейсы и контроллеры — OG» . IBM PC и клоны: оборудование, устранение неполадок и обслуживание . Tata McGraw-Hill Publishing Co. Ltd., стр. 142–144. ISBN  9780070483118 . Проверено 15 июня 2018 г.
  5. ^ Буя, Р. (2013). Освоение облачных вычислений . Тата МакГроу-Хилл Образование. п. 2.13. ISBN  9781259029950 .
  6. ^ Пу, Д.; Кионг, Д.; Ашок, С. (2008). «Глава 2: Объект, класс, сообщение и метод». Объектно-ориентированное программирование и Java . Спрингер-Верлаг. стр. 7–15. ISBN  9781846289637 .
  7. ^ Билл Веннерс (6 июня 2005 г.). «Передовой Java: принципы проектирования из шаблонов проектирования: от программы к интерфейсу, а не к реализации — разговор с Эрихом Гаммой, часть III» . разработчик артима . Архивировано из оригинала 5 августа 2011 г. Проверено 3 августа 2011 г. Если вы зависите только от интерфейсов, вы отделяетесь от реализации. Это означает, что реализация может различаться, и это здоровые отношения зависимости. Например, в целях тестирования вы можете заменить тяжелую реализацию базы данных более легкой фиктивной реализацией. К счастью, благодаря сегодняшней поддержке рефакторинга вам больше не нужно заранее придумывать интерфейс. Вы можете выделить интерфейс из конкретного класса, как только получите полное представление о проблеме. Предполагаемый интерфейс находится всего в одном рефакторинге «извлечения интерфейса». ...
  8. ^ Паттерсон, округ Колумбия; Хеннесси, JL (7 августа 2004 г.). Компьютерная организация и дизайн: аппаратно-программный интерфейс (3-е изд.). Эльзевир. п. 656. ИСБН  9780080502571 .
  9. ^ «Что такое интерфейс» . Учебники по Java . Оракул. Архивировано из оригинала 12 апреля 2012 г. Проверено 1 мая 2012 г.
  10. ^ «Интерфейсы» . Учебники по Java . Оракул. Архивировано из оригинала 26 мая 2012 г. Проверено 1 мая 2012 г.
  11. ^ «Методы повышения производительности при сериализации» . Точная Ява. Архивировано из оригинала 24 августа 2011 г. Проверено 4 августа 2011 г. Сначала мы поговорим о сериализуемом интерфейсе. Это интерфейс маркера, не имеющий методов.
  12. ^ Гамма; Шлем; Джонсон; Влиссидес (1995). Шаблоны проектирования: элементы объектно-ориентированного программного обеспечения многократного использования . Эддисон Уэсли. стр. 17–18 . ISBN  9780201633610 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d24a283903da5fd5bbd04a68a4bef296__1718187900
URL1:https://arc.ask3.ru/arc/aa/d2/96/d24a283903da5fd5bbd04a68a4bef296.html
Заголовок, (Title) документа по адресу, URL1:
Interface (computing) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)