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