-
Объекты скрывают свои данные за абстракциями и раскрывают функции, которые работают с этими данными. Структуры данных раскрывают свои данные и не имеют значимых функций.
-
Объект обнаруживает поведение и скрывает данные. Это упрощает добавление новых видов объектов без изменения существующего поведения. Это также затрудняет добавление новых типов поведения к существующим объектам.
-
Структуры данных выставляют данные и не имеют существенного поведения. Это упрощает добавление новых типов поведения в существующие структуры данных, но затрудняет добавление новых структур данных в существующие функции.
Я немного путаюсь, являются ли некоторые классы объектами или структурами данных. Скажем, например, HashMaps в java.util, являются ли они объектами? (из-за своих методов, таких как put(), get(), мы не знаем их внутренней работы) или это структуры данных? (Я всегда думал об этом как о структурах данных, потому что их Карта).
Строки также являются структурами данных или объектами?
До сих пор большинство кода, которые я писал, были так называемыми "гибридными классами", которые также старались действовать как объект и структура данных. Любые советы о том, как их избежать?