You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Глава 23<br />
<strong>Р</strong>азложение классов<br />
В эт-ой главе...<br />
J <strong>Р</strong>азложение<br />
•/ <strong>Р</strong>еализация абстрактных классов<br />
•/ <strong>Р</strong>ационализация бюджета: BUDGET3.CPP<br />
онцепиия наследования позволяет классу наследовать свойства базового класса.<br />
Наследование помогает в достижении многих целей; например, благодаря ему<br />
я плачу ъл обучение моего сына. Оно помогает избежать повторения кода и сократить<br />
время, затрачиваемое на написание программ. Благодаря наследованию можно повторно<br />
использовать уже существующий код в новых программах, переопределяя функции.<br />
Главное преимущество наследования — возможность указывать тип взаимосвязи<br />
между классами. Это так называемая взаимосвязь типа ЯВЛЯЕТСЯ: микроволновая<br />
печь ЯВЛЯЕТСЯ печью и т. д.<br />
<strong>Р</strong>азложение — это прекрасный способ создания правильных связей. К примеру,<br />
связь микроволновой печи с конвекционной печью кажется естественной. Утверждение<br />
же о том, что микроволновая печь является особым типом тостера, скорее всего,<br />
вас несколько насторожит. Конечно, оба эти прибора нагревают, оба используют<br />
электричество и оба находятся на кухне, но на этом сходство заканчивается — микроволновая<br />
печь не готовит тосты.<br />
Процедура определения классов, свойственных данной проблеме, и задания корректных<br />
связей между этими классами известна под названием разложение (factoring)<br />
(это слово относится к арифметике, с которой вы мучились в средней школе; помните,<br />
как вы занимались разложением числа на простые множители: 12 равно 2, умноженное<br />
на 2 и на 3...).<br />
<strong>Р</strong>азложение<br />
Чтобы увидеть, как работает разложение, вернемся назад и посмотрим на классы<br />
Checking и Savings, использованные в программе BUDGET, которая приводится<br />
в конце каждой части. Я мог бы до посинения рассказывать об этих классах, однако,<br />
к счастью, объектно-ориентированные программисты придумали довольно наглядный<br />
и краткий путь описания классов. Классы Checking и Savings показаны на рис. 23.1.<br />
<strong>Для</strong> того чтобы правильно понять этот рисунок, необходимо знать несколько правил.<br />
; S Большой прямоугольник — это класс. Имя класса написано сверху.<br />
| S Имена в меньших прямоугольниках — это функции-члены.<br />
% S Имена не в прямоугольниках — это данные-члены.<br />
'•- •/ Имена, которые выступают за пределы прямоугольника, ограничивающего<br />
\ класс, являются открытыми; к этим членам могут обращаться функции, не<br />
1 являющиеся членами класса или его наследников. Члены, которые нахо-<br />
I дятся полностью внутри прямоугольника, недоступны снаружи класса.<br />
" S Толстая стрелка обозначает связь типа ЯВЛЯЕТСЯ.<br />
•/ Тонкая стрелка обозначает связь типа СОДЕ<strong>Р</strong>ЖИТ.<br />
Глава 23. <strong>Р</strong>азложение классов 243