Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

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

Непрозрачным указатель представляет собой частный случай из непрозрачного типа данных, типа данных , который объявлен быть указателем на рекордно или структуру данных некоторых неопределенного типа данных. Например, стандартная библиотека, которая является частью спецификации языка программирования C, предоставляет функции для ввода и вывода файлов, которые возвращают или принимают значения типа «указатель на », которые представляют потоки файлов (см. Ввод / вывод файла C ), но конкретная реализация типа не указана. [3]FILEFILE

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

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

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

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

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

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

См. Также [ править ]

  • Абстрактный тип данных
  • Черный ящик
  • Прозрачные идентификаторы
  • Форвардная декларация
  • Скрытие информации

Ссылки [ править ]

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