Непрозрачный тип данных - Opaque data type

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

Типичные примеры непрозрачных типов данных включают ручки за Ресурсы предоставленный Операционная система к программное обеспечение. Например, Стандарт POSIX для потоков определяет интерфейс прикладного программирования на основе ряда непрозрачных типов, которые представляют потоки или же примитивы синхронизации подобно мьютексы или же переменные состояния.[2]

An непрозрачный указатель является частным случаем непрозрачного типа данных, типа данных, который объявлен как указатель к записывать или же структура данных некоторого неопределенного типа данных. Например, стандартная библиотека который является частью спецификации Язык программирования C предоставляет функции для файл ввод и вывод которые возвращают или принимают значения типа "указатель на ФАЙЛ", которые представляют файловые потоки (см. Ввод / вывод файла C ), но конкретная реализация типа ФАЙЛ не указано.[3]

Используется на разных языках

Некоторые языки, например C, разрешить объявление непрозрачным записи (структуры), размер и поля которых скрыты от клиента. Единственное, что клиент может сделать с объектом такого типа, - это взять его адрес памяти, чтобы произвести непрозрачный указатель.

Если информации, предоставляемой интерфейсом, достаточно для определения размера типа, клиенты могут объявить переменные, поля, и массивы этого типа, присвойте их значения и, возможно, сравните их на равенство. Обычно так бывает с непрозрачными указателями.

На некоторых языках, например Ява, единственный предоставляемый непрозрачный тип - это непрозрачный указатель. Действительно, в Java (и некоторых других языках) записи всегда обрабатываются с помощью указателей.

Некоторые языки допускают частично непрозрачные типы, например запись, в которой есть общественный поля, известные и доступные всем клиентам, а некоторые скрытый поля, которые не отображаются в интерфейсе. Такие типы играют фундаментальную роль в объектно-ориентированного программирования.

Информация, отсутствующая в интерфейсе, может быть объявлена ​​в его выполнение, или в другом интерфейсе, предназначенном только для друзей. Этот второй вариант позволяет двум или более модулям совместно использовать скрытую информацию.

Смотрите также

Рекомендации

  1. ^ Фридман, Дэниел П.; Палочка, Митчелл; Хейнс, Кристофер Т. (2001). Основы языков программирования (2-е изд.). MIT Press. п. 42. ISBN  978-0-262-06217-6.
  2. ^ Бутенхоф, Дэвид Р. (1997). Программирование с использованием потоков POSIX. Эддисон-Уэсли. п. 31. ISBN  978-0-201-63392-4.
  3. ^ Керниган, Брайан В.; Ричи, Деннис М. (1988). Язык программирования C (2-е изд.). Прентис Холл. ISBN  0-13-110362-8.