Jump to content

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

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

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

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

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

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

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

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

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

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

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

См. также

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


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 5ba80a23a229146f5804235551ef6bf9__1714663740
URL1:https://arc.ask3.ru/arc/aa/5b/f9/5ba80a23a229146f5804235551ef6bf9.html
Заголовок, (Title) документа по адресу, URL1:
Opaque data type - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)