Re[8]: Недоучки по настоящему ООП не освоили (из-за Basic и
От: so5team https://stiffstream.com
Дата: 02.09.25 12:09
Оценка:
Здравствуйте, ·, Вы писали:

SP>>·>Как по мне, вызов метода — это частный случай отправки сообщения: синхронно, с получением результата, ровно одному получателю.

SP>>мне кажется ключевое, что мы теряем всю информацию о контексте выполнения. И тогда такие хотелки невозможно реализовать:
SP>>
SP>>void consume_A(A & o) { o.f(); /* Здесь вызывается f из A */ }
SP>>void consume_B(B & o) { o.f(); /* Здесь вызывается f из B */ }
SP>>

·>Честно скажу, что я очень сомневаюсь в оправданности таких хотелкок. И вообще с какого бодуна такие хотелки должны как-то улучшать ООПшность — хз.

Конкретно этот фрагмент -- это ни разу не хотелка, а обязательное требование к нормальному статически-типизированному языку: если у нас есть независимые интерфейсы A и B, то в consume_A нельзя передать ссылку на реализацию интерфейса B, а в consume_B -- нельзя передать ссылку на реализацию интерфейса A.

Дальше вопрос уходит в область того, а может ли какой-то тип D реализовывать сразу оба интерфейса.

Другое дело, что в известных мне динамически-типизированных языках показанное выше нельзя реализовать в принципе. Т.е. если у D есть метод f, но сам по себе D не является ни A, ни B (т.е. не выполняется отношение "is a"), то все равно ссылку на D можно пихнуть как в consume_A, так и в consume_B.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.