stringtranslate.com

Непрозрачный тип данных

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

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

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

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

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

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

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

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

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

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

Ссылки

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