Глава 3. Объектно-ориентированные анализ и проектирование_____________73_

При создании объекта BankAccount вы должны выделить память для объекта TransactionRegister В КОНСТруктОре:

BankAccount::BankAccount(Balance initialBalance) (

transactions = new TransactionRegister;

transact ions.record(initialBalance);

}

Что случится, если при выделении памяти для нового объекта TransactionRegister вам ее не. хватит и переменная transactions не будет распределена? Не будем принимать в расчет очевидные последствия типа того, что transactions будет равна нулю, что приведет к нарушению защиты

При ВЫЗОВе ФУНКЦИИ transactions, record (initialBalance). Сосредоточимся

на том, что произойдет позже, при использовании объекта BankAccount, когда вы попытаетесь совершить вклад или снять сумму со счета. По всей вероятности, вас ожидают ошибки исполнения. Объект BankAccount без объекта TransactionRegister, в котором хранятся записи о вацвдх сделках, становится совершенно бесполезен.

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

Далее...

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

• Глава 4 "Препроцессор" познакомит вас с директивами типа #include — важным средством для придания модульности вашим программам.

• В главе 14 "Базовые концепции классов" вы глубже погрузитесь в детали реализации классов и объектов в C++, которые здесь были только слегка затронуты.

• Глава 20 "Наследование и полиморфизм" проведет вас по всем углам и закоулкам иерархии классов. ,

• В главе 22 "Обработка исключительных ситуаций" подробно разобраны некоторые методы выявления ошибочных ситуаций в конструкторах и в целом при программировании на C++.