Заблокирован
1

Что Вы понимаете под "абстрактным типом", "абстракцией данных" и "абстрактными операциями"?

28.04.2017, 20:12. Показов 1679. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
А давайте займёмся археологией!

И проследим как менялся смысл понятий "абстрактный тип данных", "абстракция данных" и "абстрактные методы"

Я прошерстил пару сотен старых книг по С++ и пришел к выводу, что изначально в эти термины вкладывался совсем другой смысл.

В частности, методы называли абстрактными только потому, что они работали не с физическими адресами переменных а с "абстрактными". А данные класса назывались "абстрактными" тоже по этому же принципу: что там адреса не физические.

Вы согласны?

А сейчас эти термины столько смыслов получили.
Более того, каждый понимает их по своему ("в меру своей испорченности").

Обсудим?
Вот говорят: "С++ был создан чтобы поддержать абстракцию данных". А что это такое?
Что Вы понимаете под "абстрактным типом", "абстракцией данных" и "абстрактными операциями"?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.04.2017, 20:12
Ответы с готовыми решениями:

Задача с абстрактным типом данных
Даны сведения о 14 кубиках: длина ребра в сантиметрах, его цвет и материал (деревянный,...

Задача с абстрактным типом данных
Разработайте и реализуйте абстрактный тип данных представления стоимости вещи, выраженной в...

Невозможно определить переменную абстрактным типом
Добрый день! Имеется следующий код: #include <iostream> #include <vector> using namespace...

Кортеж с абстрактным типом как параметр шаблона + smart_ptr
Имеем кортеж (std::tuple) с абстрактным типом, параметризуем этим шаблон класса, экземпляров...

Создание List с анонимным типом - Что происходит под капотом?
Вопрос по теме https://www.cyberforum.ru/csharp-beginners/thread809475.html HIMen,...

13
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
28.04.2017, 20:15 2
абстракция данных - смысловая ассоциация операций(методов) с данными(полями)
0
Заблокирован
28.04.2017, 21:04  [ТС] 3
Ferrari F1, А можно все тоже самое сказать на нормальном русском языке?
А не на "птичьем"?
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
28.04.2017, 21:06 4
ИсмаилПркопенко, нельзя)
0
Заблокирован
28.04.2017, 21:10  [ТС] 5
А я слышал (это одно из многих десятков определений), что абстракция данных - это абстрагирование от от них.

Т.е. ты можешь работать с некоторым объектом даже не зная как он на самом деле устроен внутри

Добавлено через 2 минуты
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
нельзя)
Ну тогда Вам нужно смириться с тем, что НИКТО Вас кроме Вас не понял

Добавлено через 43 секунды
Да сдаётся мне что Вы и сами не поняли, что сказали
0
Эксперт С++
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
28.04.2017, 21:25 6
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
что абстракция данных - это абстрагирование от от них.
Т.е. ты можешь работать с некоторым объектом даже не зная как он на самом деле устроен внутри
так и есть.


вы делаете успехи.
ещё чутка, и вразумеете, что значит "инкапсуляция"
1
Заблокирован
28.04.2017, 21:37  [ТС] 7
Цитата Сообщение от hoggy Посмотреть сообщение
так и есть.
Нет.
Это только одно из некольких десятков объяснений.
Когда понятие "абстрактный тип", "абстракция данных" и т.п. только появились - они имели совсем другой смысл.

Добавлено через 1 минуту
Тогда было все банально. "абстрактный" - значит просто не физический адрес

Добавлено через 3 минуты
hoggy, Если Вы изучите хотя бы пару десятков объяснений то Вы сдлелаете успехи
0
15 / 15 / 8
Регистрация: 30.03.2014
Сообщений: 75
29.04.2017, 08:43 8
Цитата Сообщение от ИсмаилПркопенко Посмотреть сообщение
Нет.
Это только одно из некольких десятков объяснений.
Когда понятие "абстрактный тип", "абстракция данных" и т.п. только появились - они имели совсем другой смысл.
А автор языка считает -
Abstraction: Hide details that we don’t need to use a facility ("implementation details") behind a convenient and general interface.
0
Заблокирован
29.04.2017, 17:45  [ТС] 9
А вот что говорит википедия
Абстра́ктный тип да́нных (АТД) - это математическая модель для типов данных, где тип данных определяется поведением (семантикой) с точки зрения пользователя данных, а именно в терминах возможных значений, возможных операций над данными этого типа и поведения этих операций.

Формально, АТД может быть определено, как множество объектов, определяемое списком компонентов (операций , применимых к этим объектам, и их свойств). Вся внутренняя структура такого типа спрятана от разработчика программного обеспечения — в этом и заключается суть абстракции. Абстрактный тип данных определяет набор функций, независимых от конкретной реализации типа, для оперирования его значениями. Конкретные реализации АТД называются структурами данных.

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

Различие между абстрактными типами данных и структурами данных, которые реализуют абстрактные типы, можно пояснить на следующем примере. Абстрактный тип данных список может быть реализован при помощи массива или линейного списка, с использованием различных методов динамического выделения памяти. Однако каждая реализация определяет один и тот же набор функций, который должен работать одинаково (по результату, а не по скорости) для всех реализаций.

Абстрактные типы данных позволяют достичь модульности программных продуктов и иметь несколько альтернативных взаимозаменяемых реализаций отдельного модуля.
Добавлено через 22 минуты
Я ещё читал, что абстрактный тип это где операции выражаются через свойства операций

Типа А*(Б+В) = А*Б + А*В

И ИМХО абстракция это только тогда абстракция когда компилятор может оперировать с записями операций как я привел выше не вычисля их конкретных значений.

о нечто подобном я читал в словаре по вычислительной технике в году этак 1990-м
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
29.04.2017, 17:53 10
ИсмаилПркопенко, зачем ваще эта тема создана? тебе не пофиг ли на все это?
Какой смысол замарачиваться этой ерундой?
Сходи в магдак или поиграй в кал оф дьюти
1
Заблокирован
29.04.2017, 22:15  [ТС] 11
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
тебе не пофиг ли на все это?
Нет не пофиг. Очень важно разобраться в этом вопросе и проследить всю историю развития этих терминов. Ведь многие программисты не понимают чётко, что такое "абстракция данных", "абстрактный тип" и "абстрактные операции". Более того, сами авторы книжек толком этого не погнимают. Отсюда и путаница.

Цитата Сообщение от Ferrari F1 Посмотреть сообщение
Сходи в магдак или поиграй в кал оф дьюти
Чоя?
Дурак что ли?
За кого ты меня принимаешь
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
30.04.2017, 18:57 12
Реализовать абстрактную таблицу и дать оценку времени выполнения основных операций
0
Заблокирован
30.04.2017, 20:18  [ТС] 13
_Ivana, Я не хожу по ссылкам.
Я предпочитаю живое общение, когда человек сам своими словами рассказывает о своей позиции.
0
4817 / 2278 / 287
Регистрация: 01.03.2013
Сообщений: 5,947
Записей в блоге: 28
30.04.2017, 22:54 14
ИсмаилПркопенко, а я и не с вами общаюсь и не вам ссылку демонстрирую. Кроме вас на форуме еще миллион участников (судя по стартовой странице). А живое общение с вами после вашего неоднократного хамства как-то не особо прельщает, простите.
0
30.04.2017, 22:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.04.2017, 22:54
Помогаю со студенческими работами здесь

Как создать функцию, которая определит с каким типом данных ей работать и подстроиться под этот тип?
например если мне нужно создать шаблон функции сортировки одномерных массивов произвольного типа)))

Работа с абстрактными типами данных
Вечер добрый)))вообщем есть две задачки. К первой есть код(не мой), но нужно переделать его под...

Нужно перевести переменную с типом данных string в переменную с типом данных REAL
Итак, нужно перевести переменную с типом данных string в переменную с типом данных REAL. Переменную...

Теория по абстрактным типам данных
В общем нужно сделать лабораторную работу по абстрактным типам данных на Си. Не могу найти...

Работа с абстрактным классом, считывание данных
Здравствуйте, уважаемые форумчане! Пишу программу по следующему заданию: Создать класс...

Почему компилятор говорит, что класс является абстрактным, если все функции реализованы?
class Node { public: Node() {}; virtual ~Node() {}; virtual Node * Insert(Data * theData) =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru