Возник тут на работе спор: является ли интерфейс частным случаем класса, в процессе спора появлялись даже мнения что класс это частный случай интерфейса, кто чего думает?
Здравствуйте, Alexeev Nickolay, Вы писали:
AN>Возник тут на работе спор: является ли интерфейс частным случаем класса, в процессе спора появлялись даже мнения что класс это частный случай интерфейса, кто чего думает?
Интерфейс — это публично доступная спецификация протокола объекта.
Класс же является одним из способов задания интерфейса.
Здравствуйте, Alexeev Nickolay, Вы писали:
AN>Возник тут на работе спор: является ли интерфейс частным случаем класса, в процессе спора появлялись даже мнения что класс это частный случай интерфейса, кто чего думает?
Ваш спор является частным случаем процесса познания Дао программирования.
Сами ведь спрашивали, кто что думает
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Alexeev Nickolay,
AN>Возник тут на работе спор: является ли интерфейс частным случаем класса, в процессе спора появлялись даже мнения что класс это частный случай интерфейса, кто чего думает?
Несмотря на тесную взаимосвязь, вещи несравнимые концептуально. Я определяю "интерфейс" так: интерфейс определяет протокол, который может быть реализован в классе (классах).
Возьмём С++. Интерфейс _является_ классом (на уровне компилятора).
Возьмём Java. Интерфейс не является классом, а представляет самостоятельную сущность, не равную классу.
Возьмём Эрланг. Интерфейсы есть, а классов нет.
Здравствуйте, eao197, Вы писали:
AN>>Возник тут на работе спор: является ли интерфейс частным случаем класса, в процессе спора появлялись даже мнения что класс это частный случай интерфейса, кто чего думает?
E>Ваш спор является частным случаем процесса познания Дао программирования.
S-SH,
SS>В: Зачем нужны интерфейсы в Java? SS>О: Чтобы реализовать множественное наследование классов
А в Эрланге, надо думать, чтобы реализовать множественное наследование модулей? Или функций? А в CLOS интерфейсы конечно же для того, чтобы реализовать множественное наследовение S-выражений
Здравствуйте, Alexeev Nickolay, Вы писали:
AN>Возник тут на работе спор: является ли интерфейс частным случаем класса, в процессе спора появлялись даже мнения что класс это частный случай интерфейса, кто чего думает?
Ну такие вопросы на собеседовании задавать надо.
Интерфейс — спецификация (определенный набор методов, которые можно вызывать из внешних программ),
которую поддерживает объект.
Класс — некий объект с данными и поведением, реализующимся через методы.
Говорят, что класс реализует интерфейс, если он поддерживает все методы соответствующие данному интерфейсу. Для лучшего понимания
В Java, например, есть разные слова
implements: реализует интерфейс
extends: расширяет функционaльность базового класса.
Другое дело, что в C++ смешали эти понятия, и вышло так что вроде бы все классы.
На самом деле если в абстрактном классе одни чисто виртуальные методы (то есть он чисто абстрактный) — это и есть интерфейс,
если же в нем еще есть конкретные код и данные — это помесь интерфейса с миксином.
Вот такой язык .
LCR>А в Эрланге, надо думать, чтобы реализовать множественное наследование модулей? Или функций? А в CLOS интерфейсы конечно же для того, чтобы реализовать множественное наследовение S-выражений
Вы лучше меня знаете, вы и скажите, прошу вас, зачем в Эрланге интерфейсы в отсутствии классов?
Заодно скажите, зачем они в CLOS?
Здравствуйте, Alexeev Nickolay, Вы писали:
AN>Возник тут на работе спор: является ли интерфейс частным случаем класса, в процессе спора появлялись даже мнения что класс это частный случай интерфейса, кто чего думает?
Я вот чего думаю. Класс это частный (сферический) случай коня, а интерфейс — частный случай пальто.
Здравствуйте, Alexeev Nickolay, Вы писали:
AN>Возник тут на работе спор: является ли интерфейс частным случаем класса, в процессе спора появлялись даже мнения что класс это частный случай интерфейса, кто чего думает?
Это как сравнивать оригинал с фотографией. Интерфейс не существует. Существует экземпляр класса. А интерфейс это всего лишь способ доступа до него и его данных.
Здравствуйте, Alexeev Nickolay, Вы писали:
AN>Возник тут на работе спор: является ли интерфейс частным случаем класса, в процессе спора появлялись даже мнения что класс это частный случай интерфейса, кто чего думает?
Термин интерфейс прегружен. Уточни что ты имешь в виду. Интерфейс в Ява или .NET?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
LCR>>А в Эрланге, надо думать, чтобы реализовать множественное наследование модулей? Или функций? А в CLOS интерфейсы конечно же для того, чтобы реализовать множественное наследовение S-выражений
SS>Вы лучше меня знаете, вы и скажите, прошу вас, зачем в Эрланге интерфейсы в отсутствии классов? SS>Заодно скажите, зачем они в CLOS?
Попробуя я. В Эрланге интерфейсы — это публичные функции того или иного модуля. Любой модуль в Эрланге — это классический черный ящик, выставляющий наружу только минимальный интерфейс, за который его можно дергать. Доступа к внутренним функциям в модуле получить программным способом невозможно. А внутри модуля — сплошная функциональщина и ни единого класса Да и модули общаются друг с другом с помощью отсылки асинхронных сообщений.
Это если я все правильно помню, конечно
От чего, от чего, от чего тах хорошо?
Потому что кто-то любит программиста
<< RSDN@Home 1.2.0 alpha rev. 647>>
Mamut wrote: > Да и модули общаются друг с другом с помощью отсылки > асинхронных сообщений.
Причем ТОЛЬКО путем отсылки сообщений. Других методов общения нет — а
значит нет и мест разделения ресурсов между потоками => нет
race-condition'ов.
Mamut,
M>Попробуя я. В Эрланге интерфейсы — это публичные функции того или иного модуля. Любой модуль в Эрланге — это классический черный ящик, выставляющий наружу только минимальный интерфейс, за который его можно дергать. Доступа к внутренним функциям в модуле получить программным способом невозможно. А внутри модуля — сплошная функциональщина и ни единого класса
Здесь всё правильно. +1.
M>Да и модули общаются друг с другом с помощью отсылки асинхронных сообщений.
А здесь не совсем. Процессы общаются друг с другом с помощью асинхронных сообщений. Соответствие между процессами и модулями может быть разным, естественно.
M>>Да и модули общаются друг с другом с помощью отсылки асинхронных сообщений.
LCR>А здесь не совсем. Процессы общаются друг с другом с помощью асинхронных сообщений. Соответствие между процессами и модулями может быть разным, естественно.
Это да, это я тормознул
От чего, от чего, от чего тах хорошо?
Потому что кто-то любит программиста
<< RSDN@Home 1.2.0 alpha rev. 647>>