на самом деле инкапсуляция в разных языках означает разное. Потому что в smalltalk не было понятия сокрытия и где-то начали мешать эти понятия, где-то начали утверждать что это одно и то же (C++ на пример). По идее - это просто размещение данных и методов для работы с этими данными в одном компоненте. В c# просто зачастую юзают публичные методы для доступа к переменным инстанса - вот и вся инкапсуляция. В руби - мы особо и не пользуемся этим понятием, а вот сокрытие - да.