В основу
объектно-ориентированного программирования (ООП) положены понятия класса и объекта, объединяющих в себе как
данные, так и действия над ними.
Класс - это набор
сущностей, имеющих одинаковые атрибуты, операции и отношения.
Объект - экземпляр класса. Класс предоставляет место, где общее поведение и общие переменные экземпляра могут быть определены. Переменная - это просто слот; он не содержит данных пока класс не создаст экземпляр. Класс - это фабрика для создания экземпляров. Объект существует во время выполнения
программы, хранит данные и операции для работы с этими данными, при этом данные объекта могут быть изменены только с помощью операций, определенных в классе.
В ООП реализуются инкапсуляция, наследованике и полиморфизм.
Инкапсуляция выполняется включением модуля в среду с помощью интерфейса — его внешнего окружения. При этом компонент рассматривается как "черный ящик": спецификации, определяющие интерфейс, выделены из модуля, а детали внутреннего содержимого скрыты от пользователя.
Наследование — это
отношение, которое определяет один класс в терминах другого. В качестве примера можно привести создание подклассов-потомков на основе более общих суперклассов-предков. При этом атрибуты и операции суперкласса автоматически присваиваются подклассу, и, кроме того, подкласс может иметь новые операции и атрибуты.
Полиморфизм — отношение, при котором различные сущности (связанные отношением наследования) по-разному реагируют на одно и то же сообщение, например, различная реакция подклассов одного класса на одно и то же сообщение. Другими словами, полиморфизм - явление, при котором один и тот же программный код выполняется по-разному в зависимости от того, объект какого класса используется при вызове данного кода. Полиморфизм обеспечивается тем, что в классе-потомке изменяют реализацию метода класса-предка с обязательным сохранением сигнатуры метода. Это обеспечивает сохранение неизменным интерфейса класса-предка и позволяет осуществить связывание имени метода в коде с разными классами — из объекта какого класса осуществляется вызов, из того класса и берётся метод с данным именем. Такой механизм называется динамическим (или поздним) связыванием — в отличие от статического (раннего) связывания, осуществляемого на этапе компиляции .
Для поддержки ООП разработаны методология и программная система
RUP.