Основными единицами построения системы на этапе концептуализации, проектирования или программирования являются объекты или экземпляры, организованные в классы с общими свойствами. Эти свойства могут быть трех видов.
- Атрибуты, такие как объем, положение или цвет, символизируют связи с другими объектами и состояние самого объекта.
- Процедуры или услуги, предоставляемые объектом, такие как перемещение или расширение. Их называют операциями или методами.
- Правила, которые устанавливают взаимосвязи свойств объекта или определяют условия его жизнеспособности. Их иногда называют инвариантами.
Строго говоря, методы являются функциями, которые реализуют операции, а операции — это абстрактные спецификации методов. В традиционном объектно-ориентированном программировании атрибуты не являются видимыми для других объектов.
Класс, в смысле объектно-ориентированного программирования, — это совокупность объектов, которые имеют общие свойства и методы. Класс может рассматриваться как шаблон для построения экземпляров. Тип объекта — это спецификация класса, а класс — это реализация типа. Тип объекта отражает идею, а не коллекцию свойств, поэтому имеет уникальное название. Атрибуты и методы типа объекта часто рассматриваются как его свойства или обязанности. Атрибут представляет обязанность знания чего-либо, а метод — обязанность выполнения.
По мере возможности объекты должны основываться на реальных сущностях и понятиях приложения или предметной области. Объекты могут быть или классами, или экземплярами, хотя некоторые авторы и стандарты, такие как UML, используют термин объект как синоним слова экземпляр.
Структуры данных и элементы реализации метода объекта являются невидимыми для других объектов в системе. Единственный путь получения доступа к состоянию объекта — это передача сообщения, вызывающего один из его методов. Строго говоря, доступ к атрибутам осуществляется через методы, которые считывают и устанавливают их значения. Другими словами, атрибуты — это словарь, с помощью которого можно обсуждать видимое извне поведение объекта. Вообще говоря, в программировании это обеспечивает эквивалентность объектного и абстрактного типов данных. Однако для полного описания объекта необходимо также четко определить его интерфейс. Некоторые методы объекта могут быть скрыты за интерфейсом — это закрытые (private) методы. Интерфейс лучше всего рассматривать как общедоступное описание обязанностей (responsibility) объекта. Атрибуты могут быть рассмотрены как обязанность знания, а операции — как обязанность действия. Другими словами, можно сказать, что общедоступный интерфейс определяет вопросы, которые можно задать объекту, и программы действия, которые можно ему предложить. Такое представление объекта — иногда его называют “очеловечиванием” — позволяет рассматривать данный объект как маленького искусственного человечка, способного поддерживать диалог с другими особями и размышлять о собственных характеристиках. Это представление очень удобно на этапе выделения требований и анализа систем.