Одной из основных особенностей ООП является поддержка абстрактных типов данных (АТД), которые определяют множество подобных объектов и связанные с ними наборы операторов.
Инкапсуляция есть объединение в единое целое данных и алгоритмов обработки этих данных. В рамках ООП данные называются полями объекта, а алгоритмы – объектными методами.
Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, так как локализованные в объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причём количество и тип этих данных обычно тщательно контролируются. В результате замена или модификация алгоритмов и данных, инкапсулированных в объект, как правило, не влечёт за собой плохо прослеживаемых последствий для программы в целом (в целях повышения защищённости программ в ООП почти не используются глобальные переменные).
КЛАССЫ
Языковыми конструкциями для определения АТД в большинстве языков программирования являются классы.
В то время как объект определяет конкретную сущность, определённую во времени и пространстве, класс определяет лишь абстракцию (выжимку из объекта).
В общеупотребительных терминах «класс» – это группа, множество, вид с общими свойствами (свойством), разновидностями по качеству, возможностям, условиям. С точки зрения ООП класс – это множество объектов, связанных общностью свойств, структуры и поведения.