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