60____________________________Часть /. Основные характеристики C++
Возвращаясь к примеру со вкладом, давайте рассмотрим вовлеченные в него объекты. Во-первых, имеется счет в банке и сберегательная книжка. Как они взаимодействуют? При совершении вклада на счет запись о нем вносится в сберкнижку. Для вычисления нового баланса сумма вклада должна быть добавлена к уже лежащей на книжке. Однако эта операция сложения в действительности является неотъемлемым свойством сберкнижки; все, что ей на самом деле нужно сделать, это предъявить вам новую сумму. Если нарисовать ваши два объекта, это будет выглядеть примерно так, как показано на рис. 3.2.
Рис. 3.2. Объектно-ориентированный подход: деление задачи о внесении вклада на сберегательный счет на взаимодействующие объекты
Заметьте, что наше объектно-ориентированное решение больше похоже на граф, чем на дерево; это типично для объектно-ориентированной разработки. Вы видите, что ваш проект, будучи представлен в виде двух объектов, которым сопоставлены определенные свойства, стал проще и понятнее.
Характеристики объектов
Теперь, когда у вас есть представление о том, чем отличаются объектно-ориентированное и процедурное программирование, давайте рассмотрим понятие "объект". Для целей этой главы определим объект (object) как нечто абстрактное, но с четко определенными свойствами или ролями. В таком случае похожие объекты обладают похожими свойствами и ролями, а непохожие, соответственно, нет. В объектно-ориентированном программировании похожие объекты принадлежат к одним и тем же, или похожим классам так же, как и в реальной жизни.
Возьмем класс млекопитающих (вы ведь еще помните школьную биологию?). Что за "объекты" принадлежат к этому классу? Дельфины, коровы и люди являются • млекопитающими — весьма разные объекты, но в определенном смысле все-таки очень похожие. Какие свойства и роли присущи и