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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сущность понятия интерфейса 
:(
    Опции темы
hoz
Дата 28.6.2013, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 Уже не первый раз сталкиваюсь с понятием интерфейс. Полез в википедию, и слегка запутался..
 Как я понял бывают com-интерфейсы, API-интерфейсы... А бывают вообще другие интерфейсы. Чем они отличаются между собой?
 Читая информацию по данной теме, я понял, что интерфейсы представляет ни что иное как класс, только бывает на уровне операционной системы, а бывает на уровне кода внитри программы, верно?
PM MAIL   Вверх
NightmareZ
Дата 28.6.2013, 17:22 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(hoz @  28.6.2013,  16:16 Найти цитируемый пост)
Читая информацию по данной теме, я понял, что интерфейсы представляет ни что иное как класс, только бывает на уровне операционной системы, а бывает на уровне кода внитри программы, верно?


Всё смешалось: кони, люди. Слово "интерфейс" в программировании имеет много разных значений. В твоём случае (включаю телепата) интерфейс — по сути класс с чисто абстрактными методами, не содержащий полей. Просто во многих языках есть специально такой тип данных, а вот в C++ нет.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
hoz
Дата 28.6.2013, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(NightmareZ @  28.6.2013,  17:22 Найти цитируемый пост)
Просто во многих языках есть специально такой тип данных, а вот в C++ нет.

Т.е. если я хочу использовать типа данных double или int - нужен интерфейс, если хочу использовать класс - нужен интерфейс... и тд ?
PM MAIL   Вверх
NightmareZ
Дата 28.6.2013, 17:33 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(hoz @  28.6.2013,  16:30 Найти цитируемый пост)
Т.е. если я хочу использовать типа данных double или int - нужен интерфейс, если хочу использовать класс - нужен интерфейс... и тд ?


Мне кажется, тебе нужно начать читать книги по программированию для новичков, потому что ты что-то ну совсем ахинею несёшь.


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
hoz
Дата 28.6.2013, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 Вы же сами сказали, что:

Цитата(NightmareZ @  28.6.2013,  17:22 Найти цитируемый пост)
Просто во многих языках есть специально такой тип данных, а вот в C++ нет.


Я понимаю, что это не логично. Вот я и переспросил..

Это сообщение отредактировал(а) hoz - 28.6.2013, 18:01
PM MAIL   Вверх
NightmareZ
Дата 28.6.2013, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


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

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



Цитата(hoz @  28.6.2013,  16:54 Найти цитируемый пост)
Вы же сами сказали, что:

Да и написал к этому, что в C++ вместо интерфейсов для тех же целей используются классы, содержащие лишь чисто абстрактные функции-члены. При чём тут вообще double или int?

Почитай хотя бы вот это:
http://ru.wikipedia.org/wiki/Интерфейс_(об...ограммирование)

Это сообщение отредактировал(а) NightmareZ - 28.6.2013, 17:59


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
hoz
Дата 28.6.2013, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(NightmareZ @  28.6.2013,  17:59 Найти цитируемый пост)
Да и написал к этому, что в C++ вместо интерфейсов для тех же целей используются классы, содержащие лишь чисто абстрактные функции-члены.

Да я об этом читал:
Цитата

В C++ интерфейсов, строго говоря, нет вообще. Механизм, аналогичный интерфейсам (и исторически предшествующий им) реализуется другими средствами чрезвычайно мощной объектной подсистемы этого языка.

Странная вещь. Если всё это реализуется, значит всё-таки данная объектная подсистема и есть интерфейс.. По логике.

Цитата(NightmareZ @  28.6.2013,  17:59 Найти цитируемый пост)
При чём тут вообще double или int?Почитай хотя бы вот это:http://ru.wikipedia.org/wiki/Интерфейс_(об...ограммирование)

Я это и всё что там друг на друга ссылается касаемо данной темы щяс и читаю. А про " double или int " я специально уточнил. Так как я Вам цитату приводил выше, странный ответ был. Хотел убедится. Я с Си перешёл на С++, привыкаю. Диковато..
PM MAIL   Вверх
hoz
Дата 28.6.2013, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я верно понимаю взаимосвязь API и COM-компонента?
COM-интерфейсы тоже взаимодействуют между собой посредством API ?
Тут сказано:
Цитата

Первое, что нужно осознать - это то, что возможности компонентов COM реализуются по схеме клиент-сервер. Приложение (или другой компонент) получают доступ к компоненту и используют его возможности в роли клиента, а сам компонент выступает в роли сервера. COM определяет правила взаимодействия клиента и сервера на уровне исполняемого кода, что и позволяет клиентам, написанным на одном языке, взаимодействовать с серверами, написанными на других языках. Клиент взаимодействует с компонентом только посредством интерфейса. Компонент может иметь любое количество интерфейсов, и каждый интерфейс может иметь любое количество определенных в нем методов. Возможности компонента полностью определяются методами его интерфейсов.

А тут, сказано, что:
Цитата

Программные компоненты взаимодействуют друг с другом посредством API.


Получается, что как компонент с компонентом, так и другое программное приложение взаимодействует с компонентом посредством API ?

Это сообщение отредактировал(а) hoz - 28.6.2013, 19:36
PM MAIL   Вверх
volatile
Дата 29.6.2013, 10:56 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(hoz @  28.6.2013,  19:30 Найти цитируемый пост)
Я верно понимаю взаимосвязь API и COM-компонента?
COM-интерфейсы тоже взаимодействуют между собой посредством API ?

Вы неверно понимаете смысл слов, который употребляете.
Поэтому ответить что-то вразумительное - проблематично. 

COM-интерфейсы не взаимодействуют между собой посредством API =)
Взаимодействуют компоненты, посредством COM-интерфейса, который и являецца API (Application Programming Interface) в данном контексте

Добавлено через 2 минуты и 25 секунд
Цитата(hoz @  28.6.2013,  17:16 Найти цитируемый пост)
Сущность понятия интерфейса 

Например, когда вы садитесь за машину вы нажимаете педали, крутите руль, шевелите рычагами.
Это все (педали, руль, рычаги) - есть интерфейс автомобиля.

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


Шустрый
*


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

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



Цитата(volatile @  29.6.2013,  10:56 Найти цитируемый пост)
COM-интерфейсы не взаимодействуют между собой посредством API =)Взаимодействуют компоненты, посредством COM-интерфейса, который и являецца API (Application Programming Interface) в данном контексте

 Дело в том, что я так сразу и понял. Но COM-интерфейс и API это же не одно и тоже ? Я просто изучаю этот вопрос, и судя по тому, что читаю, можно подумать, что это тоже самое...
 Ведь COM-интерфейсы уже используются сравнительно давно, и появились рвньше ежели API. Если всё "связывалось" как нужно, зачем тогда изобретать велосипед и внедрять API?

Цитата(volatile @  29.6.2013,  10:56 Найти цитируемый пост)
Например, когда вы садитесь за машину вы нажимаете педали, крутите руль, шевелите рычагами.Это все (педали, руль, рычаги) - есть интерфейс автомобиля.

Ну это я понял, тут логично.

Это сообщение отредактировал(а) hoz - 29.6.2013, 12:41
PM MAIL   Вверх
LeonidPr
Дата 29.6.2013, 13:06 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

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



Цитата(hoz @  29.6.2013,  12:39 Найти цитируемый пост)
Но COM-интерфейс и API это же не одно и тоже ?

Не путайте теплое с мягким. В чем-то это близкие понятия, но вам надо просто понять что такое API - Это просто набор функций, предоставляемых тем или иным компонентом, частью ОС и т.п. для того, что бы им можно было управлять. Т.е. API - это обобщенное понятие.
Соответственно если идти снизу вверх, то мы можем видеть, что разные слои вычислительной системы предоставляют свой API для взаимодействия с ними.
BIOS - свой API, очень низкоуровневый
Дальше подсистема Драйверов предоставляет свой API для всей остальной ОС
Сама ОС предоставляет API уже для программ, которые работают под её управлением
Какая-то библиотека программная (например Qt) предоставит вам свой API, что бы вы могли писать программы с её помощью.
А COM это просто такой несколько извращенный (абстрагированный) способ выполнить нужную вам задачу, не задумываясь о том, кто же её будет выполнять, без конкретики.

Добавлено через 1 минуту и 35 секунд
Добавлю на примере рычагов, рычаг может воздействовать не непосредственно на объект управления, а через например систему шестерней, так вот эта система шестеренок будет интерфейсом между рычагом и объектом, которым он управляет.
--------------------
pkunzip.zip
PM MAIL   Вверх
bsa
Дата 29.6.2013, 17:11 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Интерфейс - это некий набор жестких (аппаратура или функции) и мягких (сигналы или протоколы) методов взаимодействия объектов. Например. Есть у нас интерфейс "поток ввода/вывода". У него есть два метода: записать и прочитать. Создать объект состоящий только из этого интерфейса невозможно - непонятно откуда читать и куда писать. Ты чешешь репу и делаешь пройстейшую реализацию - чтение/запись в файл. Для этого ты наследуешься от этого интерфейса и переопределяешь его абстрактные методы и добавляешь свои для открытия и закрытия файла. Через какое-то время у тебя появилась необходимость для ускорения программы в паре сложных мест писать не в файл, а в память. Ты делаешь еще одного наследника от указанного интерфейса... при этом сами функции, использующие поток, тебе менять нет необходимости - интнрфейс общий, отличия только на этапе создания объекта потока.
PM   Вверх
akizelokro
Дата 29.6.2013, 17:32 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Крокодил
**


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

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



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

Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
volatile
Дата 29.6.2013, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(hoz @  29.6.2013,  12:39 Найти цитируемый пост)
Ведь COM-интерфейсы уже используются сравнительно давно, и появились рвньше ежели API. 

Здрастьте...
API - это интерфейс прикладного программирования, т.е. вообще интерфейс.
и появилось оно (понятие) незнамо когда, скорей всего сразу как начали писать программы состоящие более чем из одного модуля.
COM-интерфейс  - узкоспециализированная разновидность интерфейса.  изобретен мелкомягкими, в конкретном году (точную дату можно найти) и гораздо много позже...

Цитата(hoz @  29.6.2013,  12:39 Найти цитируемый пост)
 Но COM-интерфейс и API это же не одно и тоже ? 

Волк и млекопитающее  - это не одно и тоже.
Просто волк - это млекопитающее, причем и то и другое - живое_сущесто. =)))

словарь:
Интерфейс - живое_существо.
API - млекопитающее
COM-интерфейсы - волк.

PM MAIL   Вверх
EvilsInterrupt
Дата 30.6.2013, 13:36 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

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



hoz
Попробую и я пояснить тебе, что такое "интерфейс".

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

Когда разработчик "чего-то" хочет рассказать как его разработкой можно взаимодействовать вот тут-то и всплывает понятие "интерфейса".

Интерфейс это связь между внешним воздействием изделия во внутреннее состояние. К примеру, набор кнопок на мобильном телефоне это связь внешнего пользователя с внутренними микросхемами, радиопередатчиком и др. Другой пример, мы подходим к банкомату с нашей карточкой, набираем pin-код и "о чудо, о боги" мы получаем деньги(при соблюдении некоторых условий) таким образом кнопки банкомата и лоток приема карточки это части интерфейса банкомата и это все что нам надо знать.

Человек специально вводит понятие "интерфейс" что бы достигнуть следующих задач:
1) Если пользоваться изделием будет просто, то считается что интерфейс удачен дальше его можно повторять в других таких же подобных. При этом пользователи не будут жаловаться что надо каждый раз изучать все заново
2) Внутренне состояние Вы имеете право менять как пожелаете, лишь бы оно было согласовано со здравым смыслом. К примеру на нажатие кнопки "вызов" мобильник должен пытаться дозвониться, а не выключаться.

Обратимся к программированию. С точки зрения интерфейса, есть два типа программистов:
1) Программисты пользователи
2) Программисты создатели

К примеру, когда вы пишите программу с консольным интерфейсом то придумываете как можно вашей программой пользоваться и здесь вы выступаете в роли программиста создателя. Как только ваша программа попала в руки другого программиста он начинает ей пользоваться, пишет скрипты или вызывает в коде своей программы или еще что-то делает. Этот программист выступает как программист пользователь.

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

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

PM MAIL WWW ICQ Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

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


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

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


 




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


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

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