Зачем становиться объектно-ориентированным?
Лабораторная №5
Введение в объектно-ориентированное программирование
Наиважнейшей разработкой в мире программирования за последние пятнадцать лет стала разработка систем объектно-ориентированного программирования, ООП (OOPS -Object-Oriented Programming Systems). Это основная характерная особенность, отличающая язык C++ от его предшественника, языка С.
ООП не всегда дает существенные преимущества при ее применении в небольших программах. Это просто еще один набор инструментов, полезных для организации большого количества программного кода в логические порции. Некоторые убежденные последователи ООП утверждают, что эта система предоставляет лучшие методы для моделирования объектов в реальном мире, и в этой идее есть доля истины. Система OOPS подходит для создания объектов, взаимодействующих с какой-либо сложной системой, - например, сетью или графическим интерфейсом пользователя.
Тем не менее, если вы прорабатывали предыдущие главы этой книги, то вы уже использовали некоторые объекты - особенно объекты cin и cout (для консольного ввода и вывода).
Зачем становиться объектно-ориентированным?
Можно с уверенностью сказать, что наиважнейшая причина ошибок при программировании заключается в том, что между различными частями программы существует слишком много внутренних соединений, связей.
Проблема возникает, когда множество данных используется совместно всеми функциями программы (типичная ситуация для больших проектов). Одна функция предполагает, что некая переменная имеет неизменяемое значение, однако другая функция изменяет его.
Объектно-ориентированное программирование вносит порядок в этот хаос. Вместо того чтобы предоставлять неограниченный доступ к глобальным данным всем функциям, вы определяете различные классы, которые обладают привилегией доступа к определенным данным. К данным класса могут иметь доступ только функции этого класса.
Предположим, что вы разработали объект Circle (Окружность), предоставляющий определенные сервисы для пользователя данного объекта: окружность можно перемещать, изменять ее размер или перерисовывать. Эти сервисы реализуются как функции, которым необходим доступ к общему банку данных, например, к положению и размеру окружности, однако вы не желаете, чтобы кто-то извне класса имел возможность добираться до этих данных и непосредственно изменять их.
Этого можно достичь путем размещения связанных функций и данных в общем классе. Любой может вызывать функции класса Circle, однако извне получить доступ к внутренним данным невозможно.