60____________________________Часть /. Основные характеристики C++

Возвращаясь к примеру со вкладом, давайте рассмотрим вовлеченные в него объекты. Во-первых, имеется счет в банке и сберегательная книжка. Как они взаимодействуют? При совершении вклада на счет запись о нем вносится в сберкнижку. Для вычисления нового баланса сумма вклада должна быть добавлена к уже лежащей на книжке. Однако эта операция сложения в действительности является неотъемлемым свойством сберкнижки; все, что ей на самом деле нужно сделать, это предъявить вам новую сумму. Если нарисовать ваши два объекта, это будет выглядеть примерно так, как показано на рис. 3.2.

h00601.jpg

Рис. 3.2. Объектно-ориентированный подход: деление задачи о внесении вклада на сберегательный счет на взаимодействующие объекты

Заметьте, что наше объектно-ориентированное решение больше похоже на граф, чем на дерево; это типично для объектно-ориентированной разработки. Вы видите, что ваш проект, будучи представлен в виде двух объектов, которым сопоставлены определенные свойства, стал проще и понятнее.

Характеристики объектов

Теперь, когда у вас есть представление о том, чем отличаются объектно-ориентированное и процедурное программирование, давайте рассмотрим понятие "объект". Для целей этой главы определим объект (object) как нечто абстрактное, но с четко определенными свойствами или ролями. В таком случае похожие объекты обладают похожими свойствами и ролями, а непохожие, соответственно, нет. В объектно-ориентированном программировании похожие объекты принадлежат к одним и тем же, или похожим классам так же, как и в реальной жизни.

Возьмем класс млекопитающих (вы ведь еще помните школьную биологию?). Что за "объекты" принадлежат к этому классу? Дельфины, коровы и люди являются • млекопитающими — весьма разные объекты, но в определенном смысле все-таки очень похожие. Какие свойства и роли присущи и