Еще одна хорошая аналогия (особенно для студентов инженерных специальностей) - это детали машин.
Возьмите карбюратор.Карбурретор А предназначен для удовлетворения определенных требований к определенному двигателю, включая ИНТЕРФЕЙС (обычно закрытый прокладкой, которая также соответствует интерфейсу) между коллектором и карбюратором.
На каждой поверхности имеются определенные отверстия, которые должны располагаться точно так же, и ожидается, что топливо будет доставляться из газовой линии в карбюратор с определенным давлением и объемной скоростью.Ожидается, что Carb доставит определенную топливно-воздушную смесь в коллектор для определенного давления вакуума и т. Д.
Это хорошая отправная точка для общедоступного интерфейса.Производителям карбюратора не нужно много знать о двигателе, кроме шаблона для интерфейса между их карбюратором и коллектором, и об определенных характеристиках топливовоздушной смеси и объема, ожидаемых на коллекторе.Точно так же двигателю все равно, КАК карбюратор делает то, что он делает, он просто должен подавать топливо под надлежащим давлением в соответствующее отверстие в коллекторе, чтобы карбюратор мог выполнять какую-то магическую функцию и доставлять правильноетопливно-воздушная смесь по запросу.Разные производители могут достичь этого по-разному, но пока входы и выходы одинаковы, все работает нормально.
ВНУТРИ карбюратора, есть все, что происходит, чтобы лучше контролировать поток топлива и измерять вакуумное давление с помощью трубок Пито и тому подобное.Это сродни ЧАСТНЫМ функциям и методам.Средства, с помощью которых карбюратор знает, что при заданном давлении вакуума X мне нужно подать количество топлива Y и объем воздуха Z в коллектор.
Хотя это не обязательно делает хорошую работу по описанию закрытых переменных-членов, методов получения и установки и т. Д., Оно МОЖЕТ помочь в концепции методов Интерфейс, Исключение и Приват против Public.Для меня это было поначалу труднее понять, чем закрытые переменные-члены и тому подобное (особенно часть "Интерфейс" ...).