Crazy, в ответ на Ваше замечание к моему тексту пример псевдокода:

Код:
class Утюг implements ЯВРозетку220Втыкабельный, ЯОдеждуГладящий
class Паяльник implements ЯВРозетку220Втыкабельный, ЯПроводаПаяющий
class Ноутбук implements ЯВРозетку220Втыкабельный, ЯВИнтернетХодящий
class Мобильник implements ЯВИнтернетХодящий, ЯДрузьямЗвонящий
Понимаете разницу между "втыкабельный" и "гладящий"? Интерфейс не обязан описывать НАЗНАЧЕНИЕ, ибо в ситуации, когда метод ничего не возвращает, описать "назначение" невозможно в принципе. Назначение утюга конечно же не в том, что он втыкается в розетку. Но нет никакого смысла описывать назначение, что "утюг гладит одежду", если неизвестно, как заставить его это делать, как использовать класс в коде. Это и описывает интерфейс – наличие вилки на 220 к примеру, без которой Вы не сможете воспользоваться ЭТИМ утюгом для глажки. И хотя ваши паровые и чугунные утюги тоже гладят, у них именно другой интерфейс для операции нагрева. Они все могут реализовывать Интерфейс ЯОдеждуГладящий, содержащий метод

Код:
гладить(одежда:Одежда):ПоглаженнаяОдежда;
но не могут реализовывать Интерфейс ЯОдеждуГладящий, если метод "гладить" требует уточнения – ведь чтобы погладить рубашку, Вам недостаточно иметь утюг и рубашку. Нужен еще один компонент - источник энергии для нагрева утюга. Если есть розетка, но нет печки, чугунный утюг не сможет погладить рубашку. Метод утюга не сможет отработать с такими входными параметрами – рубашка и розетка. Ему нужны рубашка и печка. Это и есть Интерфейс. И того, что на выходе метод возвращает именно ПоглаженнуюОдежду, должно хватать для точности Назначения. Это уже вопрос архитектуры самих данных – как Вы их спроектируете. Если дальше Вы будете использовать ПоглаженнуюОдежду для извлечения кодов запуска ядерных ракет, то пожалуй да, Интерфейс бессилен. Если же сам класс данных соответствует своему назначению, то вот способ – типизация возвращаемых методами значений. Но если метод ничего не возвращает, я не знаю как контролировать "назначение". Мне невероятно интересно, как Вы вообще себе представляете "интерфейс", или вообще ТипДанных, гарантирующий использование "по назначению" методов без типа возвращаемых данных. Как бы это гарантирование могло выглядеть, псевдокод в студию.