Кто из нас прав про Инкапсуляцию в ООП?
Ваш друг описывает смысл инкапсуляции, а вы - средства для её реализации. На мой взгляд, ваш друг трактует в более общем смысле, более полно.
Понимать инкапсуляцию только как сокрытие не совсем правильно.
Сокрытия данных можно добиться например в Си. Который вообще не является языком с парадигмой ООП.

Так что связь функций и данных - это более правильное определение. Плюс от языка к языку, и от книге к книге определения отличаются. Создатель ООП (Алан Кей) вообще понимал ООП совсем не так, как оно реализовано в моей уютненькой Java, например. И ничего. :)