скрыты в этих модулях. Указанная модель переносит основные акценты на ор-
ганизацию данных. Модулем называется множество взаимосвязанных процедур
(подпрограмм) вместе с данными, которые эти процедуры обрабатывают. Ос-
новной целью данного направления является скрытие данных в модулях. Хотя
язык С++ не был специально спроектирован для поддержки модульного про-
граммирования, реализованные в нем концепции классов позволяют работать с
модулями. С++ содержит все необходимое для поддержки и процедурного и
модульного программирования.
В объектно-ориентированном программировании используются следую-
щие базовые правила: определение классов, которые будут использоваться; оп-
ределение всех необходимых операций для каждого класса, обеспечение рас-
ширяемости (открытости) классов на основе принципа наследуемости.
Объекты и классы
Базовыми блоками объектно-ориентированной программы являются объ-
екты и классы. Содержательно объект можно представить как что-то ощущае-
мое или воображаемое и имеющее определенное поведение. Объект - это часть
окружаемой нас реальности, т.е. он существует во времени и в пространстве.
Объект имеет состояние, поведение и может быть однозначно идентифициро-
ван (т.е. имеет уникальное имя).
Класс - это множество объектов, имеющих общую структуру и общее по-
ведение. Например int X; - определение переменной X целого типа. Здесь int -
это имя типа, а X - объект данного типа. Аналогично можно задать много объ-
ектов данного типа int X, Y, Z.
Мы можем говорить о типе int как об имени класса. Если объект - это
что-то ощущаемое, то класс - только абстракция, используемая для описания
общей структуры и поведения множества объектов. Определим теперь понятия
состояния, поведения и идентификации объекта.
Состояние объекта объединяет все его поля данных (статический ком-
понент) и текущее значение каждого из этих полей (динамический компонент).
Поведение объекта определяет, как объект изменяет свои состояния и взаимо-
действует с другими объектами. Идентификация объекта - это свойство, ко-
торое позволяет отличать один объект от других того же или других классов.
Базовые принципы объектно-ориентированного программирования
К базовым принципам объектно-ориентированного стиля программиро-
вания относятся:
- инкапсуляция (encapsulation) или пакетирование;
- наследование (inheritance);
- полиморфизм (polymorphism);
- передача сообщений.
Инкапсуляция
Свойство инкапсуляции, присущее реальным объектам, позволяет нам
видеть и различать объекты, фиксировать их реакции в ответ на внешние воз-
действия, наблюдать развитие процессов. Понятие инкапсуляции означает, что
в качестве единого целого, называемого объектом, рассматривается некоторая
структура данных, определяющая его свойства, или атрибуты, и некоторая
группа методов (функций) для манипулирования этими данными, задающая по-
161