Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Заблокирован
1

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

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

А давайте займёмся археологией!

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

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

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

Вы согласны?

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

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

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно"
В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло",...

Определить тип данных "Запись", имеющий поля "Фамилия", "Пол", "Зарплата"
определить тип данных запись имеющий поля фамилия пол зарплата. определить массив из 10 записей. в...

Для каждой строки найти слова, которые не имеют ни одного из букв: "l", "k", "r", "s" i "j"
Задано символьные строки. Строка состоит из нескольких слов (наборов символов), которые разделяются...

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование)
Разработать программу с использованием наследования классов, реализующую классы: − воин;...

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

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

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

Добавлено через 43 секунды
Да сдаётся мне что Вы и сами не поняли, что сказали
0
Эксперт С++
8090 / 3710 / 792
Регистрация: 15.11.2014
Сообщений: 8,435
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
797 / 527 / 157
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
29.04.2017, 17:53 10
ИсмаилПркопенко, зачем ваще эта тема создана? тебе не пофиг ли на все это?
Какой смысол замарачиваться этой ерундой?
Сходи в магдак или поиграй в кал оф дьюти
1
Заблокирован
29.04.2017, 22:15  [ТС] 11
Цитата Сообщение от Ferrari F1 Посмотреть сообщение
тебе не пофиг ли на все это?
Нет не пофиг. Очень важно разобраться в этом вопросе и проследить всю историю развития этих терминов. Ведь многие программисты не понимают чётко, что такое "абстракция данных", "абстрактный тип" и "абстрактные операции". Более того, сами авторы книжек толком этого не погнимают. Отсюда и путаница.

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

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Создать абстрактный класс "Издание" и производные классы "Книга", "Статья", "Электронный ресурс"
1. Создать абстрактный класс Издание с методами, позволяющими вывести на экран информацию об...

Создать класс "Вентилятор" содержащий в себе классы: "Двигатель", "Контроллер", "Пульт управления"
Помогите с кодом написания задачи, не понимаю как написать классы в классе. Нужно создать класс...

Создать класс "Книга" с полями "название книги", "количество страниц", "год издания"
Создать класс Книга поля: название книги,количество страниц,год издания методы: вычислить сколько...

С++ консольное приложение win32, матерится на первое "pow" после "if", а на "system" говорит что неопределён.
#define _CRT_SECURE_NO_WARNINGS #include "stdafx.h" #include <math.h> #include <iostream>...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.