Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "Абстрактный" и "НЕ абстрактный" типы данных, В чём разница? 
:(
    Опции темы
Batbko
Дата 3.1.2011, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 17.12.2010

Репутация: нет
Всего: нет



Цитата(KaraKum @  3.1.2011,  19:20 Найти цитируемый пост)
Для компилятора нет понятия "абстрактных типов данных".


Ну например gcc при попытке создания экземпляра абстрактного типа данных(ну если вдруг какой то псих определил незакрытый конструктор smile ), примерно так и пишет "немогу создать экземляр абстрактоного класса бла-бла-бла ибо функция труля-ля чисто виртуальная функция"

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



Это сообщение отредактировал(а) Batbko - 3.1.2011, 19:38
PM MAIL   Вверх
KaraKum
Дата 3.1.2011, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: 1
Всего: 1



А, в этом плане абстрактные классы, конечно, существуют.
Классы с чисто виртуальными методами (функциями). Экземпляры которых нельзя создать.
PM MAIL WWW   Вверх
mes
Дата 3.1.2011, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(ДокторТуамОсес @  3.1.2011,  17:27 Найти цитируемый пост)
Ну тогда дайте определение понятия "Тип" (в контексте C++) не используя 

ну так это ж Вы книжку пишете, чего мне напрягаться то smile тем более, что на мои вопросы я далеко не всегда получаю от Вас ответы smile
Цитата(ДокторТуамОсес @  3.1.2011,  17:27 Найти цитируемый пост)
понятия "переменная" (и его синонимов !!! )

а какой "синоним переменной" возвращает функция f  ? : 
Код

int f() { return 5; }


Добавлено через 50 секунд
Цитата(KaraKum @  3.1.2011,  17:24 Найти цитируемый пост)
Какие нестандартные операции?

а что с данными работают только стандартные операции ?

Добавлено через 1 минуту и 44 секунды
Цитата(ДокторТуамОсес @  3.1.2011,  17:25 Найти цитируемый пост)
(т.е. если она не является "литералом")

а у литерала типа нет ?  smile

Добавлено через 3 минуты и 9 секунд
Цитата(KaraKum @  3.1.2011,  17:26 Найти цитируемый пост)
"void" переводится как пустота.

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

Добавлено через 3 минуты и 47 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  17:27 Найти цитируемый пост)
Дык приводил выше.
И не один раз.
Это когда идентификатор одного типа используется в определении другого типа 

и где ж тут конструировании типов ?!  smile

Добавлено через 5 минут и 34 секунды
Цитата(KaraKum @  3.1.2011,  17:32 Найти цитируемый пост)
Абсолютно тоже самое что и я сказал. 

тогда советую почитать еще несколько раз и обдумать, в чем все таки разница smile а она есть smile

Добавлено через 6 минут и 29 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  17:41 Найти цитируемый пост)
Надо ещё указать "аксиомы", которым эти операции подчиняются.
К примеру, что А + B = B + A

это к АТД никакого отношения не имеет..

Добавлено через 7 минут и 40 секунд
Цитата(Batbko @  3.1.2011,  17:41 Найти цитируемый пост)
Переменная это способ обьявить именованную ссылку на экземпляр типа данных.

способ ? ссылку ?

Добавлено через 8 минут и 59 секунд
Цитата(Batbko @  3.1.2011,  17:51 Найти цитируемый пост)
В случае компилятора с++ семантика поведения операторов, такая как коммутативность или приоритет, заранее определена в компиляторе и пользователь не имеет средст её изменить, что и делает её аксиомой. 

семантику поведения изменить может.. smile

Добавлено через 12 минут и 53 секунды
Цитата(KaraKum @  3.1.2011,  18:20 Найти цитируемый пост)
ля компилятора нет понятия "абстрактных типов данных". 

есть, если реализуется средствами языка, предназначенными для этого smile 

Это сообщение отредактировал(а) mes - 3.1.2011, 20:03


--------------------
PM MAIL WWW   Вверх
Batbko
Дата 3.1.2011, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 17.12.2010

Репутация: нет
Всего: нет



Цитата(mes @  3.1.2011,  20:03 Найти цитируемый пост)
семантику поведения изменить может.. 

если не секрет как ? smile можно ссылку 

PM MAIL   Вверх
KaraKum
Дата 3.1.2011, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: 1
Всего: 1



Цитата(mes @  3.1.2011,  21:03 Найти цитируемый пост)
а что с данными работают только стандартные операции ?

О каких операциях идёт речь?
PM MAIL WWW   Вверх
mes
Дата 3.1.2011, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Batbko @  3.1.2011,  18:35 Найти цитируемый пост)
 пишет "немогу создать экземляр абстрактоного класса 

абстрактные классы это в большей степени средства  динамического полиморфизма, нежели поддержки концепции АТД..
т.е. для понимания и использования АТД, абстрактные классы нам не нужны smile

Добавлено через 2 минуты и 34 секунды
Цитата(KaraKum @  3.1.2011,  19:20 Найти цитируемый пост)
О каких операциях идёт речь? 

о стандартных smile что именно под ними подразумевается надо спросить у Вас, ибо Вы употребили это слово smile
но раз имеются стандартные операции, то есть как минимум и нестандартные.. а что именно зависит от Вашего вышеспрашиваемого определения.. smile

Добавлено через 3 минуты и 9 секунд
Цитата(Batbko @  3.1.2011,  19:19 Найти цитируемый пост)
если не секрет как ?  можно ссылку 

перегрузить оператор smile


--------------------
PM MAIL WWW   Вверх
KaraKum
Дата 3.1.2011, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: 1
Всего: 1



Цитата(mes @ 3.1.2011,  19:20)
Цитата(KaraKum @  3.1.2011,  17:04 Найти цитируемый пост)
ип" для С++ - это информация о том сколько байт в памяти занимает переменная, созданная как этот тип, а также какие действия выполнять при стандартных операциях (операторы "+", "-", "*", ...).

а при нестандартных операциях, чем определяется ?

Стандартные операции - это те что определены сементикой языка. НЕстандартные - это перегруженные операторы. Ещё вопросы будут?
PM MAIL WWW   Вверх
ДокторТуамОсес
Дата 3.1.2011, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 8.6.2009

Репутация: -4
Всего: -12



Цитата(KaraKum @  3.1.2011,  19:20 Найти цитируемый пост)
Для компилятора нет понятия "абстрактных типов данных". 

Цитата(KaraKum @  3.1.2011,  14:29 Найти цитируемый пост)
А что абстрактного в типах данных, определённых пользователем? 

Цитата(KaraKum @  3.1.2011,  15:01 Найти цитируемый пост)
Да - новый. Но ничего абстрактного там нет. 

Цитата(KaraKum @  3.1.2011,  17:59 Найти цитируемый пост)
Ну и что? Нет разницы. 

Цитата(KaraKum @  3.1.2011,  18:21 Найти цитируемый пост)
Не существует "кусков кода компилятора" ибо не существует "кода компилятора". 

Я конечно понимаю, что "краткость - сестра таланта"(с) и прочее, но не могли бы Вы
высказываться более развёрнуто что ли?
А то у меня дома все телепаты в отпуске, а я по короткой обрывочной фразе зачастую не могу
догадаться, что Вы, пардон, имеете в виду.  smile 
--------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ 
PM MAIL   Вверх
KaraKum
Дата 3.1.2011, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: 1
Всего: 1



Цитата(mes @  3.1.2011,  21:03 Найти цитируемый пост)
Добавлено через 3 минуты и 9 секунд
Цитата(KaraKum @  3.1.2011,  17:26 Найти цитируемый пост)
"void" переводится как пустота.

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

Неверно. Тип "void*" означает, дословно, "указатель на ячейку памяти, где начинаются данные произвольного (неизвестного) типа произвольной длины". В контексте "целочисленная переменная" или "вещественное число" это означает "неизвестность". Вот такие вот пироги...
PM MAIL WWW   Вверх
mes
Дата 3.1.2011, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(KaraKum @  3.1.2011,  17:04 Найти цитируемый пост)
"Тип" для С++ - это информация о том сколько байт в памяти занимает переменная, созданная как этот тип, а также какие действия выполнять при стандартных операциях (операторы "+", "-", "*", ...).


Цитата(KaraKum @  3.1.2011,  19:29 Найти цитируемый пост)
Стандартные операции - это те что определены сементикой языка. НЕстандартные - это перегруженные операторы. Ещё вопросы будут? 

ну так.. а чем не угодили НЕстандартные операции при определении типа ? не говоря о функциях и операторах преобразования..




--------------------
PM MAIL WWW   Вверх
Batbko
Дата 3.1.2011, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 17.12.2010

Репутация: нет
Всего: нет



IMHO любой полиморфизм, наряду с инкапсуляцией и, в рамка с++ наследованием, есть средства для описания АТД и тесно связаны с самим определением.

Цитата(mes @  3.1.2011,  20:21 Найти цитируемый пост)
если не секрет как ?  можно ссылку перегрузить оператор 

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



Цитата(mes @  3.1.2011,  20:03 Найти цитируемый пост)
способ ? ссылку ?
 в общем случае если не проводить параллели с ссылками с++ или какого либо друго ЯП да.

PM MAIL   Вверх
KaraKum
Дата 3.1.2011, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: 1
Всего: 1



Цитата(mes @  3.1.2011,  21:03 Найти цитируемый пост)
Добавлено через 12 минут и 53 секунды
Цитата(KaraKum @  3.1.2011,  18:20 Найти цитируемый пост)
ля компилятора нет понятия "абстрактных типов данных". 

есть, если реализуется средствами языка, предназначенными для этого smile 

Нету. И вообще, компьютер с абстракцией не работает. Добро пожаловать в IT.
PM MAIL WWW   Вверх
ДокторТуамОсес
Дата 3.1.2011, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 242
Регистрация: 8.6.2009

Репутация: -4
Всего: -12



Цитата(KaraKum @  3.1.2011,  19:38 Найти цитируемый пост)
А, в этом плане абстрактные классы, конечно, существуют.
Классы с чисто виртуальными методами (функциями). Экземпляры которых нельзя создать. 

Повторяю: вообще говоря  <абстрактный тип данных> ≠ <абстрактный класс>
--------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ 
PM MAIL   Вверх
mes
Дата 3.1.2011, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(KaraKum @  3.1.2011,  19:33 Найти цитируемый пост)
Неверно. 

ну так, а других выводов из Вашего предложения не следовало  smile

Добавлено через 1 минуту и 22 секунды
Цитата(KaraKum @  3.1.2011,  19:35 Найти цитируемый пост)
Нету. И вообще, компьютер с абстракцией не работает.

ну если смотреть на этот вопрос "глобально", то ЯП вобще то предназначены для абстракции , при том не только данных, но и действий.. smile

Добавлено через 1 минуту и 39 секунд
Цитата(ДокторТуамОсес @  3.1.2011,  19:35 Найти цитируемый пост)
вообще говоря  <абстрактный тип данных> ≠ <абстрактный класс> 

 smile

Добавлено через 3 минуты и 12 секунд
Цитата(Batbko @  3.1.2011,  19:34 Найти цитируемый пост)
IMHO любой полиморфизм, наряду с инкапсуляцией и, в рамка с++ наследованием, есть средства для описания АТД и тесно связаны с самим определением.

ну да.. а сам компьютер со всей периферией, ей средства набора текста..  smile




--------------------
PM MAIL WWW   Вверх
KaraKum
Дата 3.1.2011, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 640
Регистрация: 3.12.2007

Репутация: 1
Всего: 1



Цитата(ДокторТуамОсес @  3.1.2011,  21:32 Найти цитируемый пост)
Я конечно понимаю, что "краткость - сестра таланта"(с) и прочее, но не могли бы Вы
высказываться более развёрнуто что ли?

Я не совсем понимаю вопрос и думаю что он "мутно" задан потому что задавальщику этого вопроса плохо понятна суть дела. Для того чтобы разобраться в степени понимания этой сути я и показал эквивалентность "typedef" и "define" чтобы показать что ничего эфемерного в "typedef" и также показал суть сложения и деления и работы с памятью. Но эта ветвь рассуждений заглохла. Ещё некоторые "знатоки" не замечают абсолютной эквивалентности фраз и указывают на ошибки "в корне".
На практике приходилось встречать код вроде
Код

if(someCondition)
{
     #define SOME_DEFINITION
}

Поэтому иногда приходится не отвечать на прямо заданный вопрос, а переворачивать всё мировоззрение вверх-ногами.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1449 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.