Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2014, 21:29   #11
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну Вы даете - изначально строите неверное предположение и потом его же с помощью самого себя и оправдываете.
Итак, чтобы не плавать, дайте определения:
ООП
интерфейс
АТД
Без ссылок одного на другое.
Вообще звучит смешно - интерфейс это набор методов. АТД это набор методов. В с# все есть методы. Следовательно мой хэлоуворд там будет АТД, методом и интерфейсом, ну и смысл? А вот в Делфи тот же по смыслу и максимально приближенный код, но не оформленный в классе не будет АТД и не будет интерфейсом так как методом не является. Бред какой-то.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

Последний раз редактировалось Utkin; 20.01.2014 в 21:32.
Utkin вне форума Ответить с цитированием
Старый 20.01.2014, 21:32   #12
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Цитата:
Сообщение от Utkin Посмотреть сообщение
Ну Вы даете - изначально строите неверное предположение и потом его же с помощью самого себя и оправдываете.
Итак, чтобы не плавать, дайте определения:
ООП
интерфейс
АТД
Без ссылок одного на другое.
ООП - подход к созданию ПО, при котором программа представляется в виде мн-ва взаимодействующих между собой объектов.
Интерфейс - это набор методов, определяющих контракт класса, который тот обязуется выполнить относительно клиента.
АТД - тип данных, который предоставляет как данные так и операций, применимые к этим данным.
Igor95 вне форума Ответить с цитированием
Старый 20.01.2014, 21:34   #13
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Ну вот и славно. Вот видите здесь Вы четко указываете что АТД это тип данных. То есть синонимичности в определении АТД и интерфейса нету. Так и не придумывайте способы смешать их воедино.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.01.2014, 21:37   #14
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Да, но ведь в википедии сказано, что АТД - интерфейс... что тогда? неправильность определения в википедии?
Некая синонимичность в АТД и интерфейс просматривается:
и там и там - операции.
Igor95 вне форума Ответить с цитированием
Старый 20.01.2014, 21:44   #15
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
и там и там - операции.
Ну да, есть операция сварки листового металла и есть операция по удалению гланд. Есть определенная синонимичность. Вы забываете главное - предназначение. АТД - обработка данных и только обработка данных, интерфейс - согласование блоков кода между собой и это первостепенная цель интерфейса, а не состоять из методов или быть похожими на АТД.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.01.2014, 21:49   #16
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Хорошо, т.е когда советуют думать об АТД, а о классах после построения модели АТД, подразумевают, что я должен обеспечить удобство и правильность обработки данных? При чем же здесь тогда абстрактность? Где она фигурирует?
Я понял только то, что АТД != интерфейс... получается, что сначала я должен построить модель АТД, а далее применить концепции построения классов (где нужно и правильно применить наследование/полиморфизм). Т.е АТД диктует правила построения сущности, которая была бы удобным и правильным инструментом обработки данных?

Последний раз редактировалось Igor95; 20.01.2014 в 21:54.
Igor95 вне форума Ответить с цитированием
Старый 20.01.2014, 22:01   #17
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Где она фигурирует?
Она здесь напрямую и связана. АТД прячет внутри себя внутри устройство своего типа данных. Как реализован список? А кто его знает? Может там память через указатели выделяется, может быть динамический массив юзается. Но это все пофиг, потому что оперируя списков Вы физически не перемещаете сами объекты в памяти - Вы перемещаете указатели на данные объекты.
А это:
1) Позволяет (теоретически конечно) хранить в списке объекты разных типов. Вам ведь не надо в списке что-то делать с самим объектом. Но Вы можете хранить там и массив и число и строку. Вот Вам и абстрактность. Реальным примером может служить вектор из Scheme - это такой одномерный массив, который чихал на тип своих элементов (в большинстве других языков программирования как Вам известно массивы могут содержать только однотипные элементы).
2) Это относительно быстрые операции и они также не зависят от самих данных, так фактически в списке Вы работаете с указателями/индексами объектов.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.01.2014, 22:08   #18
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Т.е абстракция заключается в том, что мы абстрагируемся от деталей реализаций (внутри может быть как угодно). Так, тогда концентрируемся мы на интерфейсе??
АТД - список (интерфейс: добавить, удалить, найти).
Конкретная реализация АТД: односвязный список (на основе указателей), при этом интерфейс не меняется. Меняется лишь реализация...
Т.е АТД - набор данных и операций, служащих одной цели ((с) Стив МакКоннелл).

Последний раз редактировалось Igor95; 20.01.2014 в 22:14.
Igor95 вне форума Ответить с цитированием
Старый 20.01.2014, 22:15   #19
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Так, тогда концентрируемся мы на интерфейсе??
Что же Вас из крайности в крайность-то швыряет? Класс вполне себе жизнеспособен без интерфейса в той форме, которую Вы приводите (я еcли заметили даю общее описание интерфейса). То есть интерфейсы требуются далеко не всегда и можно писать классы без интерфейса (и без полиморфизма, а в делфи и без инкапсуляции). Поэтому не на чем таком мы не концентрируемся. Это детали реализации - концентрируйтесь на проектировании
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 20.01.2014, 22:19   #20
Igor95
Форумчанин
 
Регистрация: 03.01.2013
Сообщений: 388
По умолчанию

Хорошо, спасибо, что уделили время :-)
Кое что прояснилось, буду дальше грызть :-) может получится еще глубже вникнуться в эту идею :-)
Igor95 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
АТД на базе созданных АТД Marikaa Помощь студентам 0 24.12.2013 23:25
Двунаправленный список и атд[C++] ArniLand Общие вопросы C/C++ 0 03.07.2010 00:14
ТРПО. Ищу примеры документ-концепции и SRS Subaru Помощь студентам 0 26.06.2010 10:44
Вопрос о концепции GUI Homer_J_Simpson C++ Builder 4 15.11.2009 12:11