05.09.2016 Views

Стефан Р. - С++ Для чайников

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!