![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| ДокторТуамОсес |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 242 Регистрация: 8.6.2009 Репутация: -4 Всего: -12 |
У некоторых авторов книг по C++ встречал такую мысль, что "абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый программистом.
Т.е. получается, к примеру:
что тип P - это "абстрактный тип данных"? Или как? --------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Скорее всего под "абстрактным типом данных" имеются в виду шаблоны.
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
это значит определенный пользователем тип данных
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
А что абстрактного в типах данных, определённых пользователем?
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
можно допустим так написать
вот TString и NewType будет новым типом пользовательских данных -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Да - новый. Но ничего абстрактного там нет.
|
|||
|
||||
| ДокторТуамОсес |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 242 Регистрация: 8.6.2009 Репутация: -4 Всего: -12 |
Я у некоторых авторов книг по C++ и на форумах встречал такую мысль, что, де, "абстрактный тип данных" - это любой производный (т.е. не базовый) тип, определённый программистом. Вторые пишут, что в C++ "абстрактный тип" - это только классы. Третии пишут, "абстрактные типы" - это списки, очереди, деревья и т.п. Четвёртые пишут, что "абстрактный тип" - это вообще может быть любым образом (хоть с помощью макросов) описанный тип, посредством которого реализуется концепция "абстракции данных" Мне ближе всего 4-я точка зрения. --------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ |
|||
|
||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
Ну, как мы недавно убедились, книги могут быть разные.
|
|||
|
||||
| kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Я как-то писал про это дело.
-------------------- |
|||
|
||||
| ДокторТуамОсес |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 242 Регистрация: 8.6.2009 Репутация: -4 Всего: -12 |
Я читал, что люди, понимающие под "абстрактным типом" вообще любой производный тип,апеллируют к тому, что компилятор изначально ничего про них не знает (т.е. они как бы не существуют реально), а пользователь всё равно их может использовать в программе (естественно после описания) так же как и базовые типы. Вообщем, как-то так Добавлено @ 16:50
А как пишут в "правильных" книгах , которые написаны реальными/правильными, живущими по "понятиям" пацанами? Т.е. какая из приведённых мной выше 4-х точек зрения правильная? Добавлено @ 16:55
А что "абстрактного" во "встроенных абстрактных типах"? (т.е. типах НЕ определяемых пользователем). Как я выяснил, существуют языки в которые есть встроенные (т.е. базовые) АТД Добавлено @ 16:56
Но тогда встаёт вопрос, что же такое "абстракция данных"? Тут тоже есть весьма многочисленные разночтения Это сообщение отредактировал(а) ДокторТуамОсес - 3.1.2011, 16:59 --------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ |
||||||||
|
|||||||||
| KaraKum |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
В том и дело что ничего. Среди возможностей самого языка С++, связанных с абстрагированием, я вижу лишь шаблоны - с ними осуществляется работа вне зависимости от того какими конкретно данными (типами) они являются. Обычно в таком случае нужно лишь знать размер данных. Добавлено через 2 минуты и 41 секунду Абстракция данных - Бьерн Страуструп Судя заданному жаргону - это написал "реальный пацан". |
|||
|
||||
| ДокторТуамОсес |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 242 Регистрация: 8.6.2009 Репутация: -4 Всего: -12 |
Или ещё к тому, что некоторые типы вообще не "привязаны" ни к какой переменной. Например коде
не существует переменных типа P и тип P используется только для построения на его основе других типов. --------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ |
||||||
|
|||||||
| KaraKum |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 640 Регистрация: 3.12.2007 Репутация: 1 Всего: 1 |
typedef существует лишь для удобства печатания, чтобы каждый раз при объявлении переменной не писать сложные конструкции типа "unsigned long long int", а просто:
И, вообще, это равносильно следующему:
но во втором случае нужно быть осторожным с контекстом. |
||||
|
|||||
| mes |
|
||||||||||||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
АТД - это не термин C++.. читайте более обобщенные книги
нет, не получается.. нет..
одна из реализаций АТД - это абстрактные классы..
нет, не так поняли.. при реализации списков, очередей, деревьев, лучше применять "АТД-подход"..
да может..
ну так .. АТД, это тип реализующий концепцию "абстракции данных" - а вот что это подробно написано в книжках.. только надо выбрать правильные.. ;) Добавлено через 1 минуту и 3 секунды
при чем тут переменные , если речь о типе ?! |
||||||||||||||
|
|||||||||||||||
| ДокторТуамОсес |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 242 Регистрация: 8.6.2009 Репутация: -4 Всего: -12 |
Но это Вы зря. В с++ много средств, поддерживающих абстракцию: макросы, функции, классы, перегрузка операций, шаблоны, .... Ведь абстракция в программировании по сути есть отделение "интерфейса" от "реализации". Т.е. когда можно использовать ту или иную сущность зная только её интерфейс, и изменять/выбирать реализацию этой сущности без необходимости менять код, использующий эту сущность. Т.е. абстракция это (ИМХО), если "объяснять на пальцах"(с), когда "мухи отдельно, а котлеты отдельно"(с) Добавлено через 1 минуту и 10 секунд "Что касается абстракции, то она состоит в отделении ощутимых свойств тел либо от других их свойств, либо от самих тел, которые ими обладают."© --------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |